
    Z^Aj%                    d    d dl mZ d dlZd dlmZ d dlmZmZmZ d Z	d Z
d Zd Zd	 Zd
 Zd ZdS )    )annotationsN)Path)TradingViewWebhookConfighandle_tradingview_payloadnormalize_tradingview_payloadc            
     H    ddddddddd	d
	}|                     |            |S )Ntradingviewgaussian_channel_v1BTCUSDTlongentry1hz61234.5z2026-06-28T18:00:00Zztv-btc-1h-20260628T1800)	sourcestrategysymbolsideaction	timeframeprice	timestamp	signal_id)update)	overridespayloads     *tests/test_tradingview_signal_ingestion.py_payloadr      sB    )+.
 
G NN9N    c                     t          t          d          dhddh          } | j        dk    sJ | j        dk    sJ | j        dk    sJ | j        dk    sJ | j        d	k    sJ | j        d
u sJ d S )Nz	BTCUSDT.P)r   r
   BTCETH)allowed_strategiesallowed_coinsr   r   paper_signalF)r   r   coinstrategy_idr   r   execution_modelive_order_allowed)signals    r   Ktest_normalize_tradingview_payload_maps_symbol_and_defaults_to_paper_signalr)      s    *$$$12en  F ;%!66666;&    =G#### N2222$------r   c                   t          | ddhdh          }t          t          dd          ddi|	          }|d
         du sJ |d         dk    sJ | dz  dz                                  rJ | dz  dz  }t	          j        |                    d                                          d                   }|d         dk    sJ |d         dk    sJ |d         du sJ dt	          j        |          	                                vsJ d S )Nexpected-secretsqueeze_breakout_1hr   runtime_dirsecretr!   r"   unknown_strategy$payload-secret-should-not-be-written)r   r/   X-CTB-Webhook-SecretheadersconfigacceptedFreasonstrategy_not_allowedsignalssignal_journal.jsonlrejected_signal_journal.jsonlutf-8encodingr   r   r	   r'   r/   )
r   r   r   existsjsonloads	read_text
splitlinesdumpslower)tmp_pathcfgresultreject_journalrows        r   Qtest_invalid_strategy_is_rejected_without_signal_journal_but_with_rejection_auditrK   ,   s[   
" 12g	  C (,5[\\\'):;  F *&&&&(555559$'==EEGGGGG	),KKN
*^--w-??JJLLQO
P
PCx=22222x=M))))#$----4:c??0022222222r   c                    t          | ddhdh          }t          t                      i |          }|d         du sJ |d         d	k    sJ |d
         du sJ | dz  dz                                  rJ d S )Nr+   r
   r   r-   r3   r6   Fr7   unauthorizedr'   r9   r;   )r   r   r   r?   )rF   rG   rH   s      r   8test_webhook_requires_secret_and_never_allows_live_orderrN   E   s    
" 12g	  C (

BsKKKF*&&&&(~----&'500009$'FFNNPPPPPPPr   c                f   t          | ddhdh          }t          t          d          ddi|          }|d	         d
u sJ |d         dk    sJ |d         dk    sJ |d         du sJ | dz  dz  }d |                    d                                          D             }t          |          dk    sJ |d         }|d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ |d         du sJ dt          j        |                                          vsJ d S )Nr+   r
   r   r-   r1   )r/   r2   r3   r6   Tr$   r&   r#   r'   Fr9   r:   c                6    g | ]}t          j        |          S  )r@   rA   ).0lines     r   
<listcomp>zJtest_accepted_webhook_appends_sanitized_signal_journal.<locals>.<listcomp>i   s"    ZZZDJtZZZr   r<   r=      r   r   r	   r%   r/   )	r   r   r   rB   rC   lenr@   rD   rE   )rF   rG   rH   journalrowsrJ   s         r   6test_accepted_webhook_appends_sanitized_signal_journalrY   U   s   
" 12g	  C (>???'):;  F *%%%%&>U"""""#~5555&'50000"%;;GZZ):):G):)L)L)W)W)Y)YZZZDt99>>>>
q'Cx=M))))v;%}!66666 N2222#$----4:c??0022222222r   c                    t          | ddhdh          }ddi}t          t                      ||          }t          t                      ||          }|d         du sJ |d         d	u sJ |d
         dk    sJ d S )Nr+   r
   r   r-   r2   r3   r6   TFr7   duplicate_signal)r   r   r   )rF   rG   r4   firstseconds        r   $test_duplicate_signal_id_is_rejectedr^   t   s    
" 12g	  C &'89G&xzz73OOOE'

GCPPPF$$$$*&&&&(1111111r   c                   | dz  }|                     t          j        t                                d           | dz  }|                     dd           ddlm}  |dt          |          d	t          | d
z            dt          |          dddddddg          }|dk    sJ | d
z  dz  dz                                  sJ d S )Nzpayload.jsonr<   r=   z
secret.txtzexpected-secret
r   )mainz--payload-filez--runtime-dirruntimez--secret-filez--header-secretr+   z--allowed-strategyr
   z--allowed-coinr   z--jsonr9   r:   )
write_textr@   rD   r   src.tools.tradingview_webhookr`   strr?   )rF   payload_pathsecret_pathr`   	exit_codes        r   test_cli_ingests_payload_filerh      s    n,LDJxzz22WEEE\)K.AAA222222#l++X	122[)),3%  I >>>>y 9,/EEMMOOOOOOOr   )
__future__r   r@   pathlibr   src.signals.tradingviewr   r   r   r   r)   rK   rN   rY   r^   rh   rQ   r   r   <module>rl      s    " " " " " "                   . . .3 3 32Q Q Q 3 3 3>2 2 2"P P P P Pr   