U
    ÓZjÅ7  ã                   @   s¾   d Z ddlZddlZddlZddlZddlmZmZmZm	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G dd„ dejƒZG dd„ dejƒZedkrºe ¡  dS )zTests for josepy.json_util.é    N)ÚerrorsÚ
interfacesÚ	test_utilÚutilzcert.pemzcsr.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 )Ú	FieldTestz!Tests for josepy.json_util.Field.c                 C   sP   ddl m} t ddgddgddg¡D ]$\}}}|  |d||d� |¡¡ q&d S )Nr   ©ÚFieldTFÚfoo)ÚdefaultÚ	omitempty)Újosepy.json_utilr   Ú	itertoolsÚproductZassertFalseZomit)Úselfr   r
   r   Úvalue© r   úX/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/josepy/json_util_test.pyÚtest_no_omit_boolean   s      ÿÿzFieldTest.test_no_omit_booleanc                 C   sz   t  ¡ }dd„ }dd„ }ddlm} |dƒ}| |¡}|  d| |¡¡ | |¡}|  d| |¡¡ |  d	| |¡¡ d S )
Nc                 S   s   dS )NÚdr   ©Zunused_valuer   r   r   Údecoder   s    z+FieldTest.test_descriptors.<locals>.decoderc                 S   s   dS )NÚer   r   r   r   r   Úencoder    s    z+FieldTest.test_descriptors.<locals>.encoderr   r   r	   r   r   )	ÚmockÚ	MagicMockr   r   r   ÚassertEqualÚencoder   Údecode)r   Ú
mock_valuer   r   r   Úfieldr   r   r   Útest_descriptors   s    

zFieldTest.test_descriptorsc                 C   sN   G dd„ dt jƒ}|ƒ }ddlm} |  | |¡|k¡ |  d| |¡¡ d S )Nc                   @   s    e Zd Zdd„ Zedd„ ƒZdS )z<FieldTest.test_default_encoder_is_partial.<locals>.MockFieldc                 S   s   dS ©Nr	   r   ©r   r   r   r   Úto_partial_json0   s    zLFieldTest.test_default_encoder_is_partial.<locals>.MockField.to_partial_jsonc                 S   s   d S ©Nr   ©ÚclsZjobjr   r   r   Ú	from_json3   s    zFFieldTest.test_default_encoder_is_partial.<locals>.MockField.from_jsonN)Ú__name__Ú
__module__Ú__qualname__r#   Úclassmethodr'   r   r   r   r   Ú	MockField.   s   r,   r   r   r	   )r   ZJSONDeSerializabler   r   Ú
assertTrueÚdefault_encoderZassertNotEqual)r   r,   Z
mock_fieldr   r   r   r   Útest_default_encoder_is_partial-   s
    z)FieldTest.test_default_encoder_is_partialc                 C   s,   t  ¡ }ddlm} |  | |¡|k¡ d S ©Nr   r   )r   r   r   r   r-   r.   ©r   r   r   r   r   r   Ú test_default_encoder_passthrough=   s    z*FieldTest.test_default_encoder_passthroughc                 C   s(   ddl m} |  d| dddg¡¡ d S )Nr   r   )é   é   é   r3   r4   r5   )r   r   r   Údefault_decoder)r   r   r   r   r   Ú"test_default_decoder_list_to_tupleB   s    z,FieldTest.test_default_decoder_list_to_tuplec                 C   sD   ddl m} | ddi¡}|  t|tjƒ¡ |  |tjdd�¡ d S )Nr   r   Úxr4   ©r8   )r   r   r6   r-   Ú
isinstancer   Z
frozendictr   )r   r   Úobjr   r   r   Ú'test_default_decoder_dict_to_frozendictF   s    z1FieldTest.test_default_decoder_dict_to_frozendictc                 C   s,   t  ¡ }ddlm} |  | |¡|k¡ d S r0   )r   r   r   r   r-   r6   r1   r   r   r   Ú test_default_decoder_passthroughL   s    z*FieldTest.test_default_decoder_passthroughN)r(   r)   r*   Ú__doc__r   r    r/   r2   r7   r<   r=   r   r   r   r   r      s   r   c                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚJSONObjectWithFieldsMetaTestz4Tests for josepy.json_util.JSONObjectWithFieldsMeta.c                    s„   ddl m} ddl m} |dƒˆ _|dƒˆ _t |¡G ‡ fdd„dtƒƒ}G dd	„ d	|ƒ}G ‡ fd
d„d|ƒ}|ˆ _|ˆ _	|ˆ _
d S )Nr   r   )ÚJSONObjectWithFieldsMetaZBazZBaz2c                       s   e Zd ZdZ” jZdS )z-JSONObjectWithFieldsMetaTest.setUp.<locals>.A©ÚbarN)r(   r)   r*   Ú	__slots__r   Úbazr   r"   r   r   ÚA]   s   rE   c                   @   s   e Zd ZdS )z-JSONObjectWithFieldsMetaTest.setUp.<locals>.BN)r(   r)   r*   r   r   r   r   ÚBb   s   rF   c                       s   e Zd Z” jZdS )z-JSONObjectWithFieldsMetaTest.setUp.<locals>.CN)r(   r)   r*   Úfield2rD   r   r"   r   r   ÚCe   s   rH   )r   r   r@   r   rG   ÚsixÚadd_metaclassÚobjectÚa_clsÚb_clsÚc_cls)r   r   r@   rE   rF   rH   r   r"   r   ÚsetUpU   s    

z"JSONObjectWithFieldsMetaTest.setUpc                 C   s0   |   d| ji| jj¡ |   d| ji| jj¡ d S ©NrD   )r   r   rL   Ú_fieldsrM   r"   r   r   r   Útest_fieldsl   s    z(JSONObjectWithFieldsMetaTest.test_fieldsc                 C   s   |   d| ji| jj¡ d S rP   )r   rG   rN   rQ   r"   r   r   r   Útest_fields_inheritanceq   s    z4JSONObjectWithFieldsMetaTest.test_fields_inheritancec                 C   s$   |   d| jj¡ |   d| jj¡ d S )N)rB   rD   )rD   )r   rL   rC   rM   r"   r   r   r   Ú
test_slotsu   s    z'JSONObjectWithFieldsMetaTest.test_slotsc                 C   s$   |   d| jj¡ |   d| jj¡ d S )NrA   r   )r   rL   Z_orig_slotsrM   r"   r   r   r   Útest_orig_slotsy   s    z,JSONObjectWithFieldsMetaTest.test_orig_slotsN)	r(   r)   r*   r>   rO   rR   rS   rT   rU   r   r   r   r   r?   R   s   r?   c                   @   sp   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d„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚJSONObjectWithFieldsTestz0Tests for josepy.json_util.JSONObjectWithFields.c                    sF   ddl m} ddl m‰  G ‡ fdd„d|ƒ}|| _|d ddd�| _d S )	Nr   )ÚJSONObjectWithFieldsr   c                       sP   e Zd Z” dddd„ dd„ d�Z” dƒZ” dƒZejd	d
„ ƒZejdd
„ ƒZdS )z@JSONObjectWithFieldsTest.setUp.<locals>.MockJSONObjectWithFieldsr8   Tc                 S   s   | d S ©Nr4   r   r9   r   r   r   Ú<lambda>‹   ó    zIJSONObjectWithFieldsTest.setUp.<locals>.MockJSONObjectWithFields.<lambda>c                 S   s   | d S rX   r   r9   r   r   r   rY   Œ   rZ   )r   r   r   ÚyÚZc                 S   s   | dkrt  ¡ ‚| S ©Néô  )r   ÚSerializationError©r   r   r   r   r[   �   s    zBJSONObjectWithFieldsTest.setUp.<locals>.MockJSONObjectWithFields.yc                 S   s   | dkrt  ¡ ‚| S r]   )r   ÚDeserializationErrorr`   r   r   r   r[   –   s    N)r(   r)   r*   r8   r[   Úzr   r   r   r   r   r   ÚMockJSONObjectWithFields‡   s   þ
rc   r4   r5   ©r8   r[   rb   )r   rW   r   rc   r   )r   rW   rc   r   r   r   rO   ƒ   s
    zJSONObjectWithFieldsTest.setUpc                 C   s   |   | j| jddd�¡ d S )Nr4   r5   ©r[   rb   )r   r   rc   r"   r   r   r   Útest_init_defaults    s    z+JSONObjectWithFieldsTest.test_init_defaultsc                 C   s"   |   d| jdddd� d¡¡ d S )Né
   é   r   rd   r8   )r   rc   r   r"   r   r   r   Útest_encode£   s    
  ÿÿz$JSONObjectWithFieldsTest.test_encodec                 C   s   |   tj| jjd¡ d S r!   )ÚassertRaisesr   ÚErrorr   r   r"   r   r   r   Útest_encode_wrong_field§   s    z0JSONObjectWithFieldsTest.test_encode_wrong_fieldc                 C   s    |   tj| jdd d�jd¡ d S )Nr^   re   r[   )rj   r   r_   rc   r   r"   r   r   r   Ú+test_encode_serialization_error_passthroughª   s
     þzDJSONObjectWithFieldsTest.test_encode_serialization_error_passthroughc                 C   s   |   | j ¡ dddœ¡ d S )Nr4   r5   ©r[   r\   )r   r   Úfields_to_partial_jsonr"   r   r   r   Ú'test_fields_to_partial_json_omits_empty¯   s    z@JSONObjectWithFieldsTest.test_fields_to_partial_json_omits_emptyc                 C   s&   |   d dddœ| j dddœ¡¡ d S )Nr4   r5   rd   rn   ©r   rc   Úfields_from_jsonr"   r   r   r   Ú-test_fields_from_json_fills_default_for_empty²   s    
þzFJSONObjectWithFieldsTest.test_fields_from_json_fills_default_for_emptyc                 C   sh   |   tj| jjddi¡ |   tj| jjddi¡ |   tj| jjdddœ¡ |   tj| jjdddœ¡ d S )Nr[   r   r\   )r8   r[   )r8   r\   )rj   r   ra   rc   rr   r"   r   r   r   Ú&test_fields_from_json_fails_on_missing·   s(     þ þ þ þz?JSONObjectWithFieldsTest.test_fields_from_json_fails_on_missingc                 C   s(   |   | jdddd� ¡ ddddœ¡ d S )Nr3   r4   r5   rd   ©r8   r[   r\   )r   rc   r#   r"   r   r   r   Ú#test_fields_to_partial_json_encoderÅ   s    
þz<JSONObjectWithFieldsTest.test_fields_to_partial_json_encoderc              	   C   s(   |   ddddœ| j ddddœ¡¡ d S )Nr4   r5   rd   é   ru   rq   r"   r   r   r   Útest_fields_from_json_decoderÊ   s    

ÿþz6JSONObjectWithFieldsTest.test_fields_from_json_decoderc                 C   s    |   tj| jdddd�j¡ d S )Nr3   r^   r5   rd   )rj   r   r_   rc   r#   r"   r   r   r   Ú-test_fields_to_partial_json_error_passthroughÐ   s       ÿÿzFJSONObjectWithFieldsTest.test_fields_to_partial_json_error_passthroughc                 C   s    |   tj| jjddddœ¡ d S )Nrw   r^   r5   ru   )rj   r   ra   rc   r'   r"   r   r   r   Ú'test_fields_from_json_error_passthroughÕ   s
    
ýz@JSONObjectWithFieldsTest.test_fields_from_json_error_passthroughN)r(   r)   r*   r>   rO   rf   ri   rl   rm   rp   rs   rt   rv   rx   ry   rz   r   r   r   r   rV      s   rV   c                   @   s|   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d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚDeEncodersTestc                 C   s   d| _ d| _d S )Naƒ  MIIB3jCCAYigAwIBAgICBTkwDQYJKoZIhvcNAQELBQAwdzELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE1pY2hpZ2FuMRIwEAYDVQQHDAlBbm4gQXJib3IxKzApBgNVBAoMIlVuaXZlcnNpdHkgb2YgTWljaGlnYW4gYW5kIHRoZSBFRkYxFDASBgNVBAMMC2V4YW1wbGUuY29tMB4XDTE0MTIxMTIyMzQ0NVoXDTE0MTIxODIyMzQ0NVowdzELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE1pY2hpZ2FuMRIwEAYDVQQHDAlBbm4gQXJib3IxKzApBgNVBAoMIlVuaXZlcnNpdHkgb2YgTWljaGlnYW4gYW5kIHRoZSBFRkYxFDASBgNVBAMMC2V4YW1wbGUuY29tMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKx1c7RR7R_drnBSQ_zfx1vQLHUbFLh1AQQQ5R8DZUXd36efNK79vukFhN9HFoHZiUvOjm0c-pVE6K-EdE_twuUCAwEAATANBgkqhkiG9w0BAQsFAANBAC24z0IdwIVKSlntksllvr6zJepBH5fMndfk3XJp10jT6VE-14KNtjh02a56GoraAvJAT5_H67E8GvJ_ocNnB_oa×  MIIBXTCCAQcCAQAweTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE1pY2hpZ2FuMRIwEAYDVQQHDAlBbm4gQXJib3IxDDAKBgNVBAoMA0VGRjEfMB0GA1UECwwWVW5pdmVyc2l0eSBvZiBNaWNoaWdhbjEUMBIGA1UEAwwLZXhhbXBsZS5jb20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEArHVztFHtH92ucFJD_N_HW9AsdRsUuHUBBBDlHwNlRd3fp580rv2-6QWE30cWgdmJS86ObRz6lUTor4R0T-3C5QIDAQABoCkwJwYJKoZIhvcNAQkOMRowGDAWBgNVHREEDzANggtleGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAANBAHJH_O6BtC9aGzEVCMGOZ7z9iIRHWSzr9x_bOzn7hLwsbXPAgO1QxEwL-X-4g20Gn9XBE1N9W6HCIEut2d8wACg)Úb64_certÚb64_csrr"   r   r   r   rO   Ý   s    ÿÿzDeEncodersTest.setUpc                 C   s6   ddl m} |dƒ}|  t|tjƒ¡ |  d|¡ d S )Nr   )Úencode_b64joseó   xÚeA)r   r~   r-   r:   rI   Ústring_typesr   )r   r~   Úencodedr   r   r   Útest_encode_b64joseö   s    z"DeEncodersTest.test_encode_b64josec                 C   s6   ddl m} |dƒ}|  t|tjƒ¡ |  d|¡ d S )Nr   ©Údecode_b64joser€   r   )r   r…   r-   r:   rI   Úbinary_typer   )r   r…   Údecodedr   r   r   Útest_decode_b64joseü   s    z"DeEncodersTest.test_decode_b64josec                 C   s    ddl m} |  tj|d¡ d S )Nr   r„   r8   )r   r…   rj   r   ra   ©r   r…   r   r   r   Ú!test_decode_b64jose_padding_error  s    z0DeEncodersTest.test_decode_b64jose_padding_errorc                 C   sL   ddl m} |  d|ddd�¡ | jtj|ddd� | jtj|ddd� d S )	Nr   r„   ó   fooÚZm9vr5   )Úsizer4   rw   ©r   r…   r   rj   r   ra   r‰   r   r   r   Útest_decode_b64jose_size  s       ÿ   ÿz'DeEncodersTest.test_decode_b64jose_sizec                 C   sR   ddl m} |  d|dddd�¡ |  d|dddd�¡ | jtj|dd	dd� d S )
Nr   r„   r‹   rŒ   r5   T©r�   Úminimumr4   rw   rŽ   r‰   r   r   r   Ú test_decode_b64jose_minimum_size  s    
  ÿz/DeEncodersTest.test_decode_b64jose_minimum_sizec                 C   s6   ddl m} |dƒ}|  d|¡ |  t|tjƒ¡ d S )Nr   )Úencode_hex16r‹   Ú666f6f)r   r“   r   r-   r:   rI   r�   )r   r“   r‚   r   r   r   Útest_encode_hex16  s    z DeEncodersTest.test_encode_hex16c                 C   s6   ddl m} |dƒ}|  d|¡ |  t|tjƒ¡ d S )Nr   ©Údecode_hex16r”   r‹   )r   r—   r   r-   r:   rI   r†   )r   r—   r‡   r   r   r   Útest_decode_hex16  s    z DeEncodersTest.test_decode_hex16c                 C   sR   ddl m} |  d|dddd�¡ |  d|dddd�¡ | jtj|dd	dd� d S )
Nr   r–   r‹   r”   r5   Tr�   r4   rw   )r   r—   r   rj   r   ra   ©r   r—   r   r   r   Útest_decode_hex16_minimum_size!  s    
  ÿz-DeEncodersTest.test_decode_hex16_minimum_sizec                 C   s    ddl m} |  tj|d¡ d S )Nr   r–   r8   )r   r—   rj   r   ra   r™   r   r   r   Útest_decode_hex16_odd_length(  s    z+DeEncodersTest.test_decode_hex16_odd_lengthc                 C   s"   ddl m} |  | j|tƒ¡ d S )Nr   )Úencode_cert)r   rœ   r   r|   ÚCERT)r   rœ   r   r   r   Útest_encode_cert,  s    zDeEncodersTest.test_encode_certc                 C   sH   ddl m} || jƒ}|  t|tjƒ¡ |  |t¡ |  	t
j|d¡ d S )Nr   )Údecode_certÚ )r   rŸ   r|   r-   r:   r   ÚComparableX509r   r�   rj   r   ra   )r   rŸ   Úcertr   r   r   Útest_decode_cert0  s
    
zDeEncodersTest.test_decode_certc                 C   s"   ddl m} |  | j|tƒ¡ d S )Nr   )Ú
encode_csr)r   r¤   r   r}   ÚCSR)r   r¤   r   r   r   Útest_encode_csr7  s    zDeEncodersTest.test_encode_csrc                 C   sH   ddl m} || jƒ}|  t|tjƒ¡ |  |t¡ |  	t
j|d¡ d S )Nr   )Ú
decode_csrr    )r   r§   r}   r-   r:   r   r¡   r   r¥   rj   r   ra   )r   r§   Zcsrr   r   r   Útest_decode_csr;  s
    
zDeEncodersTest.test_decode_csrN)r(   r)   r*   rO   rƒ   rˆ   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d„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTypedJSONObjectWithFieldsTestc                 C   sH   ddl m} G dd„ d|ƒ}|jG dd„ d|ƒƒ}|| _|dd�| _d S )	Nr   )ÚTypedJSONObjectWithFieldsc                   @   s   e Zd Zi ZdZdS )zPTypedJSONObjectWithFieldsTest.setUp.<locals>.MockParentTypedJSONObjectWithFieldsÚtypeN)r(   r)   r*   ÚTYPESZtype_field_namer   r   r   r   Ú#MockParentTypedJSONObjectWithFieldsK  s   r­   c                   @   s(   e Zd ZdZdZedd„ ƒZdd„ ZdS )zJTypedJSONObjectWithFieldsTest.setUp.<locals>.MockTypedJSONObjectWithFieldsÚtest©r	   c                 S   s   d|d iS r!   r   r%   r   r   r   rr   U  s    z[TypedJSONObjectWithFieldsTest.setUp.<locals>.MockTypedJSONObjectWithFields.fields_from_jsonc                 S   s
   d| j iS r!   r¯   r"   r   r   r   ro   Y  s    zaTypedJSONObjectWithFieldsTest.setUp.<locals>.MockTypedJSONObjectWithFields.fields_to_partial_jsonN)r(   r)   r*   ÚtyprC   r+   rr   ro   r   r   r   r   ÚMockTypedJSONObjectWithFieldsO  s
   
r±   rB   r¯   )r   rª   ÚregisterÚ
parent_clsÚmsg)r   rª   r­   r±   r   r   r   rO   E  s    
ÿz#TypedJSONObjectWithFieldsTest.setUpc                 C   s   |   | j ¡ dddœ¡ d S )Nr®   rB   ©r«   r	   )r   r´   r#   r"   r   r   r   Útest_to_partial_json_  s    þz2TypedJSONObjectWithFieldsTest.test_to_partial_jsonc                 C   s*   g dddfD ]}|   tj| jj|¡ qd S )Nr   rh   Zasd©rj   r   ra   r³   r'   )r   r   r   r   r   Útest_from_json_non_dict_failse  s      ÿz;TypedJSONObjectWithFieldsTest.test_from_json_non_dict_failsc                 C   s   |   tj| jji ¡ d S r$   r·   r"   r   r   r   Ú!test_from_json_dict_no_type_failsj  s
      ÿz?TypedJSONObjectWithFieldsTest.test_from_json_dict_no_type_failsc                 C   s   |   tj| jjddi¡ d S )Nr«   rB   )rj   r   ZUnrecognizedTypeErrorr³   r'   r"   r   r   r   Ú!test_from_json_unknown_type_failsn  s     ÿz?TypedJSONObjectWithFieldsTest.test_from_json_unknown_type_failsc                 C   s"   |   ddi| j dddœ¡¡ d S )Nr	   rB   r®   rµ   )r   r³   r'   r"   r   r   r   Útest_from_json_returns_objr  s    ÿz8TypedJSONObjectWithFieldsTest.test_from_json_returns_objN)	r(   r)   r*   rO   r¶   r¸   r¹   rº   r»   r   r   r   r   r©   C  s   r©   Ú__main__)r>   r   Zunittestr   rI   Zjosepyr   r   r   r   Zload_comparable_certr�   Zload_comparable_csrr¥   ZTestCaser   r?   rV   r{   r©   r(   Úmainr   r   r   r   Ú<module>   s   

D-]g4