
íÂÐZ¯  ã               @   sî   d  Z  d d l Z d d l Z d d l m Z m Z m Z m Z e j d ƒ Z	 e j
 d ƒ Z e j
 d ƒ Z Gd d „  d e j ƒ Z Gd	 d
 „  d
 e ƒ Z Gd d „  d e j e ƒ Z Gd d „  d e j e ƒ Z e d k rê e j ƒ  d S)zTests for josepy.jwk.é    N)ÚerrorsÚ	json_utilÚ	test_utilÚutilzdsa512_key.pemzrsa256_key.pemzrsa512_key.pemc               @   s.   e  Z d  Z d Z d d „  Z d d „  Z d S)ÚJWKTestzTests for josepy.jwk.JWK.c             C   s-   d d l  m } |  j t j | j t ƒ d  S)Nr   )ÚJWK)Ú
josepy.jwkr   ÚassertRaisesr   ÚErrorÚloadÚDSA_PEM)Úselfr   © r   ú1/usr/lib/python3/dist-packages/josepy/jwk_test.pyÚ	test_load   s    zJWKTest.test_loadc             C   s-   d d l  m } |  j t j | j t ƒ d  S)Nr   )ÚJWKRSA)r   r   r	   r   r
   r   r   )r   r   r   r   r   Útest_load_subclass_wrong_type   s    z%JWKTest.test_load_subclass_wrong_typeN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r      s   r   c               @   s4   e  Z d  Z d Z e Z d d „  Z d d „  Z d S)ÚJWKTestBaseMixinz"Mixin test for JWK subclass tests.c             C   s    |  j  |  j |  j j ƒ  ƒ d  S)N)ÚassertEqualÚ
thumbprintÚjwk)r   r   r   r   Útest_thumbprint_private   s    z(JWKTestBaseMixin.test_thumbprint_privatec             C   s&   |  j  |  j |  j j ƒ  j ƒ  ƒ d  S)N)r   r   r   Ú
public_key)r   r   r   r   Útest_thumbprint_public    s    z'JWKTestBaseMixin.test_thumbprint_publicN)r   r   r   r   ÚNotImplementedr   r   r   r   r   r   r   r      s   r   c               @   sd   e  Z d  Z d Z d Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z	 d d „  Z
 d S)Ú
JWKOctTestzTests for josepy.jwk.JWKOct.s    óç¾¨`ÒÚpé}œÎ>ÐüI¾Í’'Ôoô1êŽ(Š²ic             C   sD   d d l  m } | d d ƒ |  _ d d d t j d ƒ i |  _ d  S)Nr   )ÚJWKOctÚkeys   fooÚktyÚoctÚk)r   r    r   r   Zencode_b64joseÚjobj)r   r    r   r   r   ÚsetUp+   s    zJWKOctTest.setUpc             C   s    |  j  |  j j ƒ  |  j ƒ d  S)N)r   r   Úto_partial_jsonr%   )r   r   r   r   Útest_to_partial_json0   s    zJWKOctTest.test_to_partial_jsonc             C   s3   d d l  m } |  j |  j | j |  j ƒ ƒ d  S)Nr   )r    )r   r    r   r   Ú	from_jsonr%   )r   r    r   r   r   Útest_from_json3   s    zJWKOctTest.test_from_jsonc             C   s*   d d l  m } t | j |  j ƒ ƒ d  S)Nr   )r    )r   r    Úhashr)   r%   )r   r    r   r   r   Útest_from_json_hashable7   s    z"JWKOctTest.test_from_json_hashablec             C   s0   d d l  m } |  j |  j | j d ƒ ƒ d  S)Nr   )r    s   foo)r   r    r   r   r   )r   r    r   r   r   r   ;   s    zJWKOctTest.test_loadc             C   s#   |  j  |  j j ƒ  |  j k ƒ d  S)N)Ú
assertTruer   r   )r   r   r   r   Útest_public_key?   s    zJWKOctTest.test_public_keyN)r   r   r   r   r   r&   r(   r*   r,   r   r.   r   r   r   r   r   $   s   r   c               @   sÄ   e  Z d  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 d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d S) Ú
JWKRSATestzTests for josepy.jwk.JWKRSA.s    ƒKÜ#3˜Ê˜íË€€<ð•¹H²*l½$å&|O‘Ô °Yc             C   s  d d l  m } | d t j ƒ  ƒ |  _ d d d d d d	 i |  _ | d t j ƒ  j ƒ |  _ | d t j ƒ  ƒ |  _	 d d d d d d
 i |  _
 | d t ƒ |  _ |  j j ƒ  |  _ d |  j d <|  j j ƒ  |  _ |  j j d d d d d d d d d d d d i ƒ |  j |  _ d  S)Nr   )r   r!   r"   ÚRSAÚeÚAQABÚnz+m2Fylv-Uz7trgTW8EBHP3FQSMeZs2GNQ6VRo1sIVJEkzVrHVztFHtH92ucFJD_N_HW9AsdRsUuHUBBBDlHwNlRd3fp580rv2-6QWE30cWgdmJS86ObRz6lUTor4R0T-3C5Qz+lPQED_EPTV0UIBfNI3KP2d9Jlrc2mrMllmf946bu-CEÚdÚpZzUVNZn4lLLBD1R6NE8TKNQÚqZwcfKfc7kl5jfqXArCRSURQZdpZCWJFq43QvT5Bm5iN8n1okQZdqZbHh2u7etM8LKKCF2pY2UdQZqiZoi45cEkbVoJjAbnQpFY87Q)r   r   Ú
RSA256_KEYr   Újwk256Ú
jwk256jsonZ_wrappedÚjwk256_not_comparableÚ
RSA512_KEYÚjwk512Ú
jwk512jsonÚprivateÚcopyÚprivate_json_smallÚprivate_jsonÚupdater   )r   r   r   r   r   r&   J   s.    	zJWKRSATest.setUpc             C   s9   |  j  t |  j j t j ƒ ƒ |  j |  j |  j ƒ d  S)N)r-   Ú
isinstancer:   r!   r   ZComparableRSAKeyr   r8   )r   r   r   r   Útest_init_auto_comparablek   s    	z$JWKRSATest.test_init_auto_comparablec             C   s-   d d l  m } |  j d | j d ƒ ƒ d  S)Nr   )r   ZAA)r   r   r   Z_encode_param)r   r   r   r   r   Útest_encode_param_zerop   s    z!JWKRSATest.test_encode_param_zeroc             C   s0   |  j  |  j |  j ƒ |  j  |  j |  j ƒ d  S)N)r   r8   r<   )r   r   r   r   Útest_equalsv   s    zJWKRSATest.test_equalsc             C   s0   |  j  |  j |  j ƒ |  j  |  j |  j ƒ d  S)N)ZassertNotEqualr8   r<   )r   r   r   r   Útest_not_equalsz   s    zJWKRSATest.test_not_equalsc             C   s9   d d l  m } |  j |  j | j t j d ƒ ƒ ƒ d  S)Nr   )r   zrsa256_key.pem)r   r   r   r>   r   r   Úload_vector)r   r   r   r   r   r   ~   s    zJWKRSATest.test_loadc             C   s    |  j  |  j |  j j ƒ  ƒ d  S)N)r   r8   r>   r   )r   r   r   r   r.   ƒ   s    zJWKRSATest.test_public_keyc             C   sX   |  j  |  j j ƒ  |  j ƒ |  j  |  j j ƒ  |  j ƒ |  j  |  j j ƒ  |  j ƒ d  S)N)r   r8   r'   r9   r<   r=   r>   rA   )r   r   r   r   r(   †   s    zJWKRSATest.test_to_partial_jsonc             C   sq   d d l  m } |  j |  j | j |  j ƒ ƒ |  j |  j | j |  j ƒ ƒ |  j |  j | j |  j	 ƒ ƒ d  S)Nr   )r   )
r   r   r   r8   r)   r9   r<   r=   r>   rA   )r   r   r   r   r   r*   ‹   s    zJWKRSATest.test_from_jsonc             C   s3   d d l  m } |  j |  j | j |  j ƒ ƒ d  S)Nr   )r   )r   r   r   r>   r)   r@   )r   r   r   r   r   Útest_from_json_private_small“   s    z'JWKRSATest.test_from_json_private_smallc             C   s:   d d l  m } |  j d =|  j t j | j |  j ƒ d  S)Nr   )r   r6   )r   r   rA   r	   r   r
   r)   )r   r   r   r   r   Ú%test_from_json_missing_one_additional—   s    
z0JWKRSATest.test_from_json_missing_one_additionalc             C   s*   d d l  m } t | j |  j ƒ ƒ d  S)Nr   )r   )r   r   r+   r)   r9   )r   r   r   r   r   r,   œ   s    z"JWKRSATest.test_from_json_hashablec          	   C   sj   d d l  m } |  j t j | j d d d d d d i ƒ |  j t j | j d d d d d d	 i ƒ d  S)
Nr   )r   r"   r0   r1   r2   r3   Ú Ú1)r   r   r	   r   ZDeserializationErrorr)   )r   r   r   r   r   Ú test_from_json_non_schema_errors    s
    z+JWKRSATest.test_from_json_non_schema_errorsc             C   sB   d d l  m } | j d ƒ } |  j t j | j ƒ  ƒ d ƒ d  S)Nr   )r   aÇ  {
    "kty": "RSA",
    "kid": "bilbo.baggins@hobbiton.example",
    "use": "sig",
    "n": "n4EPtAOCc9AlkeQHPzHStgAbgs7bTZLwUBZdR8_KuKPEHLd4rHVTeT-O-XV2jRojdNhxJWTDvNd7nqQ0VEiZQHz_AJmSCpMaJMRBSFKrKb2wqVwGU_NsYOYL-QtiWN2lbzcEe6XC0dApr5ydQLrHqkHHig3RBordaZ6Aj-oBHqFEHYpPe7Tpe-OfVfHd1E6cS6M1FZcD1NNLYD5lFHpPI9bTwJlsde3uhGqC0ZCuEHg8lhzwOHrtIQbS0FVbb9k3-tVTU4fg_3L_vniUFAKwuCLqKnS2BYwdq_mzSnbLY7h_qixoR7jig3__kRhuaxwUkRz5iaiQkqgc5gHdrNP5zw",
    "e": "AQAB"
}s@   f63838e96077ad1fc01c3f8405774dedc0641f558ebb4b40dccf5f9b6d66a932)r   r   Z
json_loadsr   ÚbinasciiZhexlifyr   )r   r   r!   r   r   r   Útest_thumbprint_go_jose¨   s    	z"JWKRSATest.test_thumbprint_go_joseN)r   r   r   r   r   r&   rD   rE   rF   rG   r   r.   r(   r*   rI   rJ   r,   rM   rO   r   r   r   r   r/   C   s    !r/   Ú__main__)r   rN   ZunittestZjosepyr   r   r   r   rH   r   Zload_rsa_private_keyr7   r;   ZTestCaser   Úobjectr   r   r/   r   Úmainr   r   r   r   Ú<module>   s   "v