U
    ]-                     @   s   d Z ddlZddlZddlmZmZ edZedZedZ	G dd dej
ZG d	d
 d
ej
ZG dd dej
Zedkre  dS )zTests for josepy.jwa.    N)errors	test_utilzrsa256_key.pemzrsa512_key.pemzrsa1024_key.pemc                   @   sH   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dS )JWASignatureTestz"Tests for josepy.jwa.JWASignature.c                 C   s4   ddl m} G dd d|}|d| _|d| _d S )Nr   JWASignaturec                   @   s   e Zd Zdd Zdd ZdS )z'JWASignatureTest.setUp.<locals>.MockSigc                 S   s
   t  d S NNotImplementedError)selfkeymsg r   1/usr/lib/python3/dist-packages/josepy/jwa_test.pysign   s    z,JWASignatureTest.setUp.<locals>.MockSig.signc                 S   s
   t  d S r   r   )r
   r   r   sigr   r   r   verify   s    z.JWASignatureTest.setUp.<locals>.MockSig.verifyN)__name__
__module____qualname__r   r   r   r   r   r   MockSig   s   r   Sig1Sig2)
josepy.jwar   r   r   )r
   r   r   r   r   r   setUp   s    

zJWASignatureTest.setUpc                 C   s   |  | j| j d S r   )assertEqualr   r
   r   r   r   test_eq    s    zJWASignatureTest.test_eqc                 C   s   |  | j| j d S r   )assertNotEqualr   r   r   r   r   r   test_ne#   s    zJWASignatureTest.test_nec                 C   s   |  | jd d S )N   )r   r   r   r   r   r   test_ne_other_type&   s    z#JWASignatureTest.test_ne_other_typec                 C   s(   |  dt| j |  dt| j d S Nr   r   )r   reprr   r   r   r   r   r   	test_repr)   s    zJWASignatureTest.test_reprc                 C   s(   |  | j d |  | j d d S r!   )r   r   Zto_partial_jsonr   r   r   r   r   test_to_partial_json-   s    z%JWASignatureTest.test_to_partial_jsonc                 C   s0   ddl m} ddl m} | |d|k d S )Nr   r   RS256r&   )r   r   r&   
assertTrueZ	from_json)r
   r   r&   r   r   r   test_from_json1   s    zJWASignatureTest.test_from_jsonN)r   r   r   __doc__r   r   r   r    r#   r$   r(   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd ZdS )	JWAHSTestc                 C   s\   ddl m} d}| |dd| | |dd|dk | |dd|d dk d S )	Nr   )HS256s    R͔A.:'i+UZԳzOs   some key   fooT   !F)r   r+   r   r   r'   r   )r
   r+   r   r   r   r   test_it9   s    zJWAHSTest.test_itN)r   r   r   r.   r   r   r   r   r*   7   s   r*   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )	JWARSTestc                 C   s(   ddl m} | tj|jt d d S )Nr   r%   r,   )r   r&   assertRaisesr   Errorr   
RSA512_KEY
public_key)r
   r&   r   r   r   test_sign_no_private_partF   s       z#JWARSTest.test_sign_no_private_partc                 C   sD   ddl m} ddl m} | tj|jtd | tj|jtd d S )Nr   r%   PS256r,   )r   r&   r6   r0   r   r1   r   
RSA256_KEY)r
   r&   r6   r   r   r   test_sign_key_too_smallK   s    z!JWARSTest.test_sign_key_too_smallc                 C   s\   ddl m} d}| |td| | |t d| | |t d|d  d S )Nr   r%   s@   |Ʋ(*:N&}Ot"YY)&ǙSOVҹ.>}r,   r-   )	r   r&   r   r   r2   r'   r   r3   assertFalse)r
   r&   r   r   r   r   test_rsQ   s      zJWARSTest.test_rsc                 C   sP   ddl m} |td}| |t d| | |t d|d  d S )Nr   r5   r,   r-   )r   r6   r   RSA1024_KEYr'   r   r3   r9   )r
   r6   r   r   r   r   test_ps^   s      zJWARSTest.test_psc                 C   s2   ddl m} t }||d | |jj d S )Nr   r%   message)r   r&   mock	MagicMockr   r'   calledr
   r&   r   r   r   r   test_sign_new_apie   s    zJWARSTest.test_sign_new_apic                 C   sZ   ddl m} tjdgd}t }||j_||d | t|jj	|j
j	|jj	g d S )Nr   r%   signerspecr=   )r   r&   r>   r?   rC   return_valuer   r'   allr@   updatefinalize)r
   r&   r   rC   r   r   r   test_sign_old_apik   s    zJWARSTest.test_sign_old_apic                 C   s4   ddl m} t }||dd | |jj d S )Nr   r%   r=   	signature)r   r&   r>   r?   r   r'   r@   rA   r   r   r   test_verify_new_apiv   s    zJWARSTest.test_verify_new_apic                 C   s\   ddl m} tjdgd}t }||j_||dd | t|jj	|j
j	|jj	g d S )Nr   r%   verifierrD   r=   rK   )r   r&   r>   r?   rM   rF   r   r'   rG   r@   rH   )r
   r&   r   rM   r   r   r   test_verify_old_api|   s    zJWARSTest.test_verify_old_apiN)r   r   r   r4   r8   r:   r<   rB   rJ   rL   rN   r   r   r   r   r/   D   s   r/   __main__)r)   Zunittestr>   Zjosepyr   r   Zload_rsa_private_keyr7   r2   r;   ZTestCaser   r*   r/   r   mainr   r   r   r   <module>   s   


*D