
    (i                     :    d dl mZ d dlZd dlmZ  G d de      Zy)    )TestCaseN)build_hmac_signaturec                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestHMACc                     d| _         d| _        d| _        d| _        d| _        t        | j                   | j                  | j                  | j                  | j                        | _        y )Nz,AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=1000000z	test-signz/ordersz{"hash": "0x123"})secret	timestampmethodpathstring_bodyr   baseline_signatureselfs    H/var/www/br/venv/lib/python3.12/site-packages/tests/signing/test_hmac.pysetUpzTestHMAC.setUp   sT    D"!	."6KKdiiAQAQ#
    c                     t        | j                  | j                  | j                  | j                  | j
                        }| j                  |       | j                  d|       y )Nz,ZwAdJKvoYRlEKDkNMwd5BuwNNtg93kNaR_oU2HrfVvc=)r   r	   r
   r   r   r   assertIsNotNoneassertEqual)r   	signatures     r   *test_build_hmac_signature_matches_expectedz3TestHMAC.test_build_hmac_signature_matches_expected   sN    (KKdiiAQAQ
	 	Y'GSr   c                     t        | j                  | j                  | j                  | j                  ddi      }| j                  | j                  |       y Nhash0x123)r   r	   r
   r   r   r   r   )r   dict_body_sigs     r   -test_dict_body_same_as_equivalent_string_bodyz6TestHMAC.test_dict_body_same_as_equivalent_string_body   sF     -KKdii&'AR
 	00-@r   c                    t        | j                  | j                  d| j                  ddi      }t        | j                  | j                  d| j                  ddi      }| j	                  ||       | j	                  || j
                         y )NGETr   r   POST)r   r	   r
   r   assertNotEqualr   )r   get_sigpost_sigs      r   'test_different_method_changes_signaturez0TestHMAC.test_different_method_changes_signature#   sx    &KK		FG;L
 (KKVW<M
 	GX.GT%<%<=r   c                     t        | j                  d| j                  | j                  ddi      }| j	                  || j
                         y )N1000001r   r   )r   r	   r   r   r"   r   )r   sig_new_times     r   *test_different_timestamp_changes_signaturez3TestHMAC.test_different_timestamp_changes_signature-   s@    +KKDKKVW<M
 	L$*A*ABr   c                     t        | j                  | j                  | j                  dddi      }| j	                  || j
                         y )Nz/api/v1/ordersr   r   )r   r	   r
   r   r"   r   )r   sig_paths     r   %test_different_path_changes_signaturez.TestHMAC.test_different_path_changes_signature3   sD    'KKNNKKW
 	Hd&=&=>r   c           	      H   t        | j                  | j                  | j                  | j                  ddd      }t        | j                  | j                  | j                  | j                  ddd      }| j                  ||       | j                  || j                         y )Nr   bar)r   foo)r/   r   r   r	   r
   r   r   r"   r   )r   
sig_order1
sig_order2s      r   ,test_extra_key_and_ordering_affect_signaturez5TestHMAC.test_extra_key_and_ordering_affect_signature=   s    )KKNNKKIIU+

 *KKNNKKII7+

 	J
3J(?(?@r   c                     t        | j                  | j                  | j                  | j                  g d      }| j                  |       | j                  || j                         y )N)         r   r	   r
   r   r   r   r"   r   )r   	sig_arrays     r   test_array_body_signaturez"TestHMAC.test_array_body_signatureO   sM    (KKdii
	 	Y'It'>'>?r   c                     t        | j                  | j                  | j                  | j                  ddi      }| j                  |       | j                  || j                         y )Nemojiu   😃r8   )r   sig_unicodes     r   test_unicode_body_signaturez$TestHMAC.test_unicode_body_signatureV   sR    *KKdii'6AR
 	[)K)@)@Ar   c                     t        | j                  | j                  | j                  | j                  d       }| j                  || j                         y )Nr0   )r   sig_nones     r   #test_none_body_omitted_from_messagez,TestHMAC.test_none_body_omitted_from_message]   s?    'KKdii
 	Hd&=&=>r   c                     t        | j                  | j                  | j                  | j                  d      }| j                  || j                         y N r0   )r   	sig_emptys     r   test_empty_string_body_omittedz'TestHMAC.test_empty_string_body_omittedc   s?    (KKdii
	 	It'>'>?r   c                    t        | j                  | j                  | j                  | j                  d       }t        | j                  | j                  | j                  | j                  d      }| j                  ||       y rC   r   r	   r
   r   r   r   )r   r@   rE   s      r   'test_none_and_empty_body_same_signaturez0TestHMAC.test_none_and_empty_body_same_signaturei   s`    'KKdii
 )KKdii
	 	9-r   c                    t        | j                  | j                  | j                  | j                  ddi      }t        | j                  | j                  | j                  | j                  ddi      }| j                  ||       y r   rH   )r   sig1sig2s      r   test_idempotent_same_inputsz$TestHMAC.test_idempotent_same_inputsr   sj    #KKdii&'AR
 $KKdii&'AR
 	t$r   c                     d}t        || j                  | j                  | j                  ddi      }t        | j                  | j                  | j                  | j                  ddi      }| j                  ||       y )Nz,BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=r   r   )r   r
   r   r   r	   r"   )r   other_secret	sig_othersig_originals       r   'test_different_secret_changes_signaturez0TestHMAC.test_different_secret_changes_signature{   sk    E($..$++tyy67BS
	 ,KKdii&'AR
 	I|4r   c           	          | j                  t        j                        5  t        d| j                  | j
                  | j                  ddi       d d d        y # 1 sw Y   y xY w)Nz!!!notbase64!!!r   r   )assertRaisesbinasciiErrorr   r
   r   r   r   s    r   test_invalid_secret_raisesz#TestHMAC.test_invalid_secret_raises   sQ    x~~. 	 !		!	 	 	s   0AA"c                 H   t        | j                  | j                  | j                  | j                  d      }t        | j                  | j                  | j                  | j                  d      }| j                  |       | j                  |       | j                  ||       y )NTFr   r	   r
   r   r   r   r"   )r   sig_true	sig_falses      r   test_boolean_body_signaturez$TestHMAC.test_boolean_body_signature   s|    'KKdii
 )KKdii
	 	X&Y'Hi0r   c                 H   t        | j                  | j                  | j                  | j                  d      }t        | j                  | j                  | j                  | j                  d      }| j                  |       | j                  |       | j                  ||       y )N*   gn!	@rY   )r   sig_int	sig_floats      r   test_numeric_body_signaturez$TestHMAC.test_numeric_body_signature   s|    &KKdii
 )KKdii
	 	W%Y'GY/r   c                 ,   dddg dd}g ddddd}t        | j                  | j                  | j                  | j                  |      }t        | j                  | j                  | j                  | j                  |      }| j                  ||       y )Nr5   r6   )zb)r7   r6   r5   )ac)rd   rc   )rf   re   r   r	   r
   r   r   r"   )r   body_abody_bsig_asig_bs        r   9test_nested_object_no_sorting_means_signatures_can_differzBTestHMAC.test_nested_object_no_sorting_means_signatures_can_differ   s~    Q'i8 QQ'78$KKdii
 %KKdii
 	E5)r   c                 ,   ddddddg}ddddddg}t        | j                  | j                  | j                  | j                  |      }t        | j                  | j                  | j                  | j                  |      }| j                  ||       y )	Nr6   r5   )rd   re      r7   )drf   )re   rd   )rf   ro   rg   )r   body1body2rK   rL   s        r   .test_list_of_dicts_key_order_affects_signaturez7TestHMAC.test_list_of_dicts_key_order_affects_signature   s    q!#34q!#34#KKdii
 $KKdii
 	D$'r   c                    d}d}t        | j                  | j                  | j                  | j                  |      }t        | j                  | j                  | j                  | j                  |      }| j                  ||       y )Nz{"x":1, "y":2}z{"x":1,"y":2}rg   )r   string_astring_brj   rk   s        r   #test_string_body_preserved_verbatimz,TestHMAC.test_string_body_preserved_verbatim   sj    #"$KKdii
 %KKdii
 	E5)r   N)__name__
__module____qualname__r   r   r   r%   r)   r,   r3   r:   r>   rA   rF   rI   rM   rR   rW   r\   ra   rl   rr   rv    r   r   r   r      sm    	
TA>C?A$@B?@.%5	1	0	*	(	*r   r   )unittestr   rU   py_clob_client.signing.hmacr   r   rz   r   r   <module>r}      s      <}*x }*r   