
    M/eJ                     H   d Z ddlZddlZddlmZ ddlmZ ddlZddl	m
Z
 ddlZddlZddlZddlmZ ddlmZ  ej$                  d      Z ej(                   ej*                  d      	      Z G d
 dej.                        Z G d dej.                        Z G d dej.                        Z G d dej.                        Z G d dej.                        Z G d dej.                        Z G d dej.                        Z G d dej.                        Z G d dej.                        Z  G d dej.                        Z! G d dej.                        Z" G d  d!ej.                        Z#e$d"k(  r4 ejJ                   ejL                  ejN                  d#d e(gz                yy)$zTests for acme.challenges.    N)mock)JWKEC)errors)	test_utilcert.pemrsa512_key.pemkeyc                       e Zd Zd Zy)ChallengeTestc                 p    ddl m} ddl m}  |ddi      }||j                  |j                        k(  sJ y )Nr   )	ChallengeUnrecognizedChallengetypefoo)acme.challengesr   r   	from_jsonjobj)selfr   r   challs       F/usr/lib/python3/dist-packages/acme/_internal/tests/challenges_test.pytest_from_json_unrecognizedz)ChallengeTest.test_from_json_unrecognized   s3    -9%vuo6	++EJJ7777    N)__name__
__module____qualname__r    r   r   r   r      s    8r   r   c                       e Zd Zd Zd Zd Zy)UnrecognizedChallengeTestc                 P    ddl m} ddi| _         || j                        | _        y )Nr   r   r   r   )r   r   r   r   r   r   s     r   setUpzUnrecognizedChallengeTest.setUp   s     9UO	*4995
r   c                 V    | j                   | j                  j                         k(  sJ y N)r   r   to_partial_jsonr   s    r   test_to_partial_jsonz.UnrecognizedChallengeTest.test_to_partial_json$   s!    yyDJJ668888r   c                 d    ddl m} | j                  |j                  | j                        k(  sJ y )Nr   r   )r   r   r   r   r   r"   s     r   test_from_jsonz(UnrecognizedChallengeTest.test_from_json'   s'    9zz2<<TYYGGGGr   N)r   r   r   r#   r(   r*   r   r   r   r    r       s    6
9Hr   r    c                   *    e Zd Zd Zd Zd Zd Zd Zy)%KeyAuthorizationChallengeResponseTestc                 r    d }t        j                         | _        || j                  j                  _        y )Nc                     | dk(  sJ y)Ntokenr   r   )names    r   _encodez<KeyAuthorizationChallengeResponseTest.setUp.<locals>._encode/   s    7?"?r   )r   Mockr   encodeside_effect)r   r1   s     r   r#   z+KeyAuthorizationChallengeResponseTest.setUp.   s(    	 YY[
(/

%r   c                     ddl m}  |d      }|j                  | j                  t        j                               sJ y )Nr   !KeyAuthorizationChallengeResponsez/foo.oKGqedy-b-acd5eoybm2f-NVFxvyOoET5CNy3xnv8WYkey_authorizationr   r7   verifyr   KEY
public_keyr   r7   responses      r   test_verify_okz4KeyAuthorizationChallengeResponseTest.test_verify_ok5   s2    E4OQtzz3>>+;<<<r   c                     ddl m}  |d      }|j                  | j                  t        j                               rJ y )Nr   r6   z/bar.oKGqedy-b-acd5eoybm2f-NVFxvyOoET5CNy3xnv8WYr8   r:   r>   s      r   test_verify_wrong_tokenz=KeyAuthorizationChallengeResponseTest.test_verify_wrong_token;   s5    E4OQ??4::s~~/?@@@@r   c                     ddl m}  |d      }|j                  | j                  t        j                               rJ y )Nr   r6   zfoo.oKGqedy-b-acd5eoybm2f-NVFxvr8   r:   r>   s      r   test_verify_wrong_thumbprintzBKeyAuthorizationChallengeResponseTest.test_verify_wrong_thumbprintA   s5    E4?A??4::s~~/?@@@@r   c                     ddl m}  |d      }|j                  | j                  t        j                               rJ y )Nr   r6   z0.foo.oKGqedy-b-acd5eoybm2f-NVFxvyOoET5CNy3xnv8WYr8   r:   r>   s      r   test_verify_wrong_formz<KeyAuthorizationChallengeResponseTest.test_verify_wrong_formG   s8    E4$% ??4::s~~/?@@@@r   N)r   r   r   r#   r@   rB   rD   rF   r   r   r   r,   r,   ,   s    0=AAAr   r,   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)DNS01ResponseTestc                     ddl m}  |d      | _        dddd| _        ddl m}  |d	
      | _        | j
                  j                  t              | _        y )Nr   DNS01Responser   r8   	challengedns-01resourcer   keyAuthorizationDNS01   xxxxxxxxxxxxxxxxr/   )r   rK   msgjmsgrR   r   r?   r<   )r   rK   rR   s      r   r#   zDNS01ResponseTest.setUpQ   sJ    1 6:# &
	 	*)-


++C0r   c                 B    i | j                   j                         k(  sJ y r%   rU   r&   r'   s    r   r(   z&DNS01ResponseTest.test_to_partial_json^       TXX--////r   c                 d    ddl m} | j                  |j                  | j                        k(  sJ y Nr   rJ   )r   rK   rU   r   rV   r   rK   s     r   r*   z DNS01ResponseTest.test_from_jsona   s&    1xx=22499====r   c                 X    ddl m} t        |j                  | j                               y r[   )r   rK   hashr   rV   r\   s     r   test_from_json_hashablez)DNS01ResponseTest.test_from_json_hashablee   s    1]$$TYY/0r   c                     t         j                  j                  t        j                  d            }|j                         }| j                  j                  | j                  d|      }|rJ y Nzrsa256_key.pemlocal)	joseJWKRSAloadr   load_vectorr=   r?   simple_verifyr   )r   key2r=   verifieds       r   test_simple_verify_failurez,DNS01ResponseTest.test_simple_verify_failurei   sT    {{	 5 56F GH__&
==..tzz7JO|8r   c                     t         j                         }| j                  j                  | j                  d|      }|sJ y Nrb   )r<   r=   r?   rg   r   )r   r=   ri   s      r   test_simple_verify_successz,DNS01ResponseTest.test_simple_verify_successo   s1    ^^%
==..tzz7JOxr   N)	r   r   r   r#   r(   r*   r_   rj   rm   r   r   r   rH   rH   O   s     10>1r   rH   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)	DNS01Testc                 f    ddl m}  |t        j                  d            | _        ddd| _        y )Nr   rQ   +evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ+PCt92wr+oArT   rM   +evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oAr   r/   )r   rR   rc   decode_b64joserU   rV   r   rR   s     r   r#   zDNS01Test.setUpw   s2    )t229 ; < B
	r   c                 D    d| j                   j                  d      k(  sJ y )Nz_acme-challenge.www.example.comzwww.example.comrU   validation_domain_namer'   s    r   test_validation_domain_namez%DNS01Test.test_validation_domain_name   s*    0889JKL 	L Lr   c                 L    d| j                   j                  t              k(  sJ y )N+rAa7iIg4K2y63fvUhCfy8dP1Xl7wEhmQq0oChTcE3Zk)rU   
validationr<   r'   s    r   test_validationzDNS01Test.test_validation   s&    <HH$% 	% %r   c                 V    | j                   | j                  j                         k(  sJ y r%   rV   rU   r&   r'   s    r   r(   zDNS01Test.test_to_partial_json   !    yyDHH446666r   c                 d    ddl m} | j                  |j                  | j                        k(  sJ y Nr   rQ   )r   rR   rU   r   rV   ru   s     r   r*   zDNS01Test.test_from_json   s$    )xx5??4995555r   c                 X    ddl m} t        |j                  | j                               y r   )r   rR   r^   r   rV   ru   s     r   r_   z!DNS01Test.test_from_json_hashable   s    )U__TYY'(r   N)	r   r   r   r#   ry   r}   r(   r*   r_   r   r   r   ro   ro   u   s!    
L%76)r   ro   c                   J   e Zd Zd Zd Zd Zd Zd Z ej                  d      d        Z
 ej                  d      d        Z ej                  d      d	        Z ej                  d      d
        Z ej                  d      d        Z ej                  d      d        Zy)HTTP01ResponseTestc                     ddl m}  |d      | _        dddd| _        ddl m}  |d	
      | _        | j
                  j                  t              | _        y )Nr   HTTP01Responser   r8   rL   http-01rN   HTTP01rS   rT   )r   r   rU   rV   r   r   r?   r<   )r   r   r   s      r   r#   zHTTP01ResponseTest.setUp   sJ    2!F;# &
	 	+9.


++C0r   c                 B    i | j                   j                         k(  sJ y r%   rX   r'   s    r   r(   z'HTTP01ResponseTest.test_to_partial_json   rY   r   c                 d    ddl m} | j                  |j                  | j                        k(  sJ y Nr   r   )r   r   rU   r   rV   r   r   s     r   r*   z!HTTP01ResponseTest.test_from_json   s&    2xx>33DII>>>>r   c                 X    ddl m} t        |j                  | j                               y r   )r   r   r^   r   rV   r   s     r   r_   z*HTTP01ResponseTest.test_from_json_hashable   s    2^%%dii01r   c                     t         j                  j                  t        j                  d            }| j
                  j                  | j                  d|j                                y ra   	rc   rd   re   r   rf   r?   rg   r   r=   r   rh   s     r   (test_simple_verify_bad_key_authorizationz;HTTP01ResponseTest.test_simple_verify_bad_key_authorization   C    {{	 5 56F GH##DJJ9JKr   zacme.challenges.requests.getc                 d   | j                   j                  t              }t        j                  |      |_        | j                  j                  | j                   dt        j                               sJ |j                  | j                   j                  d      dt        j                         y )Ntextrb   Fr;   timeout)r   r|   r<   r   	MagicMockreturn_valuer?   rg   r=   assert_called_once_withuriANY)r   mock_getr|   s      r   "test_simple_verify_good_validationz5HTTP01ResponseTest.test_simple_verify_good_validation   s    ZZ**3/
 $J ?}}**JJ!13 	3 3(()@15 	) 	;r   c                     t        j                  d      |_        | j                  j	                  | j
                  dt        j                               rJ y )N!r   rb   )r   r   r   r?   rg   r   r<   r=   r   r   s     r   !test_simple_verify_bad_validationz4HTTP01ResponseTest.test_simple_verify_bad_validation   sF     $C 8==..JJ!13 	3 3 3r   c                    ddl m} t        j                  | j                  j                  t              |j                  z         |_        | j                  j                  | j                  dt        j                               sJ |j                  | j                  j                  d      dt        j                         y )Nr   r   r   rb   Fr   )r   r   r   r   r   r|   r<   WHITESPACE_CUTSETr   r?   rg   r=   r   r   r   )r   r   r   s      r   (test_simple_verify_whitespace_validationz;HTTP01ResponseTest.test_simple_verify_whitespace_validation   s    2 $**'', 223!5 }}**JJ!13 	3 3(()@15 	) 	;r   c                     t         j                  j                  |_        | j                  j                  | j                  dt        j                               rJ y rl   )	requests
exceptionsRequestExceptionr4   r?   rg   r   r<   r=   r   s     r   #test_simple_verify_connection_errorz6HTTP01ResponseTest.test_simple_verify_connection_error   sI    '22CC==..JJ!13 	3 3 3r   c                     | j                   j                  | j                  dt        j	                         d       dt        j                  |j                  d   d   d         j                  k(  sJ y )Nrb   i  )domainaccount_public_keyportz
local:8080r      )	r?   rg   r   r<   r=   urllib_parseurlparse
mock_callsnetlocr   s     r   test_simple_verify_portz*HTTP01ResponseTest.test_simple_verify_port   sl    ##JJw"~~/d 	$ 	< |44"1%a( **0&1 	1 1r   c                    | j                   j                  | j                  dt        j	                                |j                  | j                  j                  d      dd       |j                          | j                   j                  | j                  dt        j	                         d       |j                  | j                  j                  d      dd       y )Nrb   F   r   i  )r   )r?   rg   r   r<   r=   r   r   
reset_mockr   s     r   test_simple_verify_timeoutz-HTTP01ResponseTest.test_simple_verify_timeout   s    ##DJJ9IJ(()@13 	) 	5##DJJ9ISW#X(()@15 	) 	7r   N)r   r   r   r#   r(   r*   r_   r   r   patchr   r   r   r   r   r   r   r   r   r   r      s    10?2L TZZ./; 0; TZZ./3 03
 TZZ./; 0; TZZ./3 03
 TZZ./1 01 TZZ./7 07r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	
HTTP01Testc                 f    ddl m}  |t        j                  d            | _        ddd| _        y )Nr   r   rq   rT   r   rr   rs   )r   r   rc   rt   rU   rV   r   r   s     r   r#   zHTTP01Test.setUp   s4    *%%=?@ B
	r   c                 :    | j                   j                  dk(  sJ y )NzG/.well-known/acme-challenge/evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA)rU   pathr'   s    r   	test_pathzHTTP01Test.test_path   s%    xx}} !G G 	G Gr   c                 D    d| j                   j                  d      k(  sJ y )NzYhttp://example.com/.well-known/acme-challenge/evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oAexample.com)rU   r   r'   s    r   test_urizHTTP01Test.test_uri   s&    :HHLL'( 	( (r   c                 V    | j                   | j                  j                         k(  sJ y r%   r   r'   s    r   r(   zHTTP01Test.test_to_partial_json   r   r   c                 d    ddl m} | j                  |j                  | j                        k(  sJ y Nr   r   )r   r   rU   r   rV   r   s     r   r*   zHTTP01Test.test_from_json   s&    *xx6++DII6666r   c                 X    ddl m} t        |j                  | j                               y r   )r   r   r^   r   rV   r   s     r   r_   z"HTTP01Test.test_from_json_hashable  s    *Vdii()r   c                     | j                   j                  sJ | j                   j                  d      j                  rJ y )Ns   ..rT   )rU   
good_tokenupdater'   s    r   test_good_tokenzHTTP01Test.test_good_token  s6    xx""""88???/:::::r   N)
r   r   r   r#   r   r   r(   r*   r_   r   r   r   r   r   r      s&    
G(
77*;r   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z ej                  d
d      d        Z ej                  d       ej                  d      d               Z ej                  d      d        Zy)TLSALPN01ResponseTestc                     ddl m}  |t        j                  d            | _        d| _        d| _        | j                  j                  t              | _        dd| j                  j                  d	| _
        y )
Nr   	TLSALPN01s    a82d5ff8ef740d12881f6d3c2277ab2erT   r   zexample2.comrL   tls-alpn-01rN   )r   r   rc   	b64decoder   r   domain2r?   r<   r9   rV   r   r   s     r   r#   zTLSALPN01ResponseTest.setUp  s_    -..!DEG
$&

++C0#! $ ? ?
	r   c                 B    i | j                   j                         k(  sJ y r%   )r?   r&   r'   s    r   r(   z*TLSALPN01ResponseTest.test_to_partial_json  s    T]]224444r   c                 d    ddl m} | j                  |j                  | j                        k(  sJ y Nr   )TLSALPN01Response)r   r   r?   r   rV   r   r   s     r   r*   z$TLSALPN01ResponseTest.test_from_json  s'    5}} 1 ; ;DII FFFFr   c                 X    ddl m} t        |j                  | j                               y r   )r   r   r^   r   rV   r   s     r   r_   z-TLSALPN01ResponseTest.test_from_json_hashable!  s    5((34r   c                     t        j                  d      }| j                  j                  | j                  |      \  }}||k(  sJ | j                  j                  | j                  |      sJ y Nr   )r   load_pyopenssl_private_keyr?   gen_certr   verify_certr   key1certrh   s       r   test_gen_verify_certz*TLSALPN01ResponseTest.test_gen_verify_cert%  s[    334DE]]++DKK>
dt||}}((d;;;r   c                     | j                   j                  | j                        \  }}t        |t        j
                  j                        sJ | j                   j                  | j                  |      sJ y r%   )r?   r   r   
isinstanceOpenSSLcryptoPKeyr   )r   r   r
   s      r   test_gen_verify_cert_gen_keyz2TLSALPN01ResponseTest.test_gen_verify_cert_gen_key+  sV    MM**4;;7	c#w~~22333}}((d;;;r   c                 z    | j                   j                  | j                  t        j                  d            rJ y )Nr   )r?   r   r   r   	load_certr'   s    r   test_verify_bad_certz*TLSALPN01ResponseTest.test_verify_bad_cert0  s7    ==,,T[[
+- 	- - -r   c                     t        j                  d      }| j                  j                  | j                  |      \  }}||k(  sJ | j                  j                  | j                  |      rJ y r   )r   r   r?   r   r   r   r   r   s       r   test_verify_bad_domainz,TLSALPN01ResponseTest.test_verify_bad_domain4  s^    334DE]]++DKK>
dt||==,,T\\4@@@@r   c                     t         j                  j                  t        j                  d            }| j
                  j                  | j                  d|j                                y ra   r   r   s     r   r   z>TLSALPN01ResponseTest.test_simple_verify_bad_key_authorization:  r   r   z-acme.challenges.TLSALPN01Response.verify_certT)autospecc                    t         j                  j                  |_        t         j                  j                  | j                  j                  | j                  | j                  t        j                         t         j                  j                        k(  sJ |j                  | j                  | j                  t         j                  j                         y )N)r   )r   sentinelverificationr   r?   rg   r   r   r<   r=   r   r   )r   mock_verify_certs     r   test_simple_verifyz(TLSALPN01ResponseTest.test_simple_verify>  s    (,(B(B%}}))T]]-H-H

DKK)9]]'' .I .) ) 	) ) 	00MM4;;(:(:	<r   z$acme.challenges.socket.gethostbynamez%acme.challenges.crypto_util.probe_snic                 @   d|_         | j                  j                  d       |j                  d       |j                  d| j                  j                  ddg       | j                  j                  dd       |j                  d	t        j                  ddg       y )
Nz	127.0.0.1zfoo.coms	   127.0.0.1s   foo.coms
   acme-tls/1)hostr   r0   alpn_protocolsz8.8.8.8)r   s   8.8.8.8)r   r?   
probe_certr   PORTassert_called_withr   r   )r   mock_probe_snimock_gethostbynames      r   test_probe_certz%TLSALPN01ResponseTest.test_probe_certG  s     +6'  +229=..DMM$6$6Z)? 	/ 	, 	   ;))$(()? 	* 	,r   z,acme.challenges.TLSALPN01Response.probe_certc                     t         j                  |_        | j                  j	                  | j
                  | j                  t        j                               rJ y r%   )	r   Errorr4   r?   rg   r   r   r<   r=   )r   mock_probe_certs     r   'test_simple_verify_false_on_probe_errorz=TLSALPN01ResponseTest.test_simple_verify_false_on_probe_errorV  sE    &,ll#==..JJS^^%57 	7 7 7r   N)r   r   r   r#   r(   r*   r_   r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   
  s    
5G5<<
-AL TZZ?$O< P< TZZ67TZZ78, 9 8, TZZ>?7 @7r   r   c                   Z    e Zd Zd Zd Zd Zd Zd Z ej                  d      d        Z
y)	TLSALPN01Testc                 f    ddl m}  |t        j                  d            | _        ddd| _        y )Nr   r    a82d5ff8ef740d12881f6d3c2277ab2erT   r   rs   )r   r   rc   r   rU   rV   r   s     r   r#   zTLSALPN01Test.setUp_  s0    -..!CDF "7
	r   c                 V    | j                   | j                  j                         k(  sJ y r%   r   r'   s    r   r(   z"TLSALPN01Test.test_to_partial_jsonh  r   r   c                 d    ddl m} | j                  |j                  | j                        k(  sJ y Nr   r   )r   r   rU   r   rV   r   s     r   r*   zTLSALPN01Test.test_from_jsonk  s&    -xx9..tyy9999r   c                 X    ddl m} t        |j                  | j                               y r  )r   r   r^   r   rV   r   s     r   r_   z%TLSALPN01Test.test_from_json_hashableo  s    -Y  +,r   c                     ddl m} t        j                  d      | j                  d<   t        j                  t        j                        5  |j                  | j                         d d d        y # 1 sw Y   y xY w)Nr   r   s   abcdr/   )	r   r   rc   encode_b64joserV   pytestraisesDeserializationErrorr   r   s     r   #test_from_json_invalid_token_lengthz1TLSALPN01Test.test_from_json_invalid_token_lengths  sW    -!009		']]4445 	+		*	+ 	+ 	+s   A11A:z*acme.challenges.TLSALPN01Response.gen_certc                 F   d|_         d| j                  j                  t        t        j
                  j                  t        j
                  j                        k(  sJ |j                  t        j
                  j                  t        j
                  j                         y )N)r   r
   )cert_keyr   )r
   r   )	r   rU   r|   r<   r   r   r  r   r   )r   mock_gen_certs     r   r}   zTLSALPN01Test.test_validationy  s~    %4"$(("5"5$--009M9M #6 #O O 	O O--$--2H2H59]]5I5I 	. 	Kr   N)r   r   r   r#   r(   r*   r_   r  r   r   r}   r   r   r   r  r  ]  s=    
7:-+ TZZ<=K >Kr   r  c                   N    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y)DNSTestc                 f    ddl m}  |t        j                  d            | _        ddd| _        y )Nr   DNS+   evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oArT   dnsrr   rs   )r   r  rc   r   rU   rV   r   r  s     r   r#   zDNSTest.setUp  s0    'T^^:< = B
	r   c                 V    | j                   | j                  j                         k(  sJ y r%   r   r'   s    r   r(   zDNSTest.test_to_partial_json  r   r   c                 d    ddl m} | j                  |j                  | j                        k(  sJ y Nr   r  )r   r  rU   r   rV   r  s     r   r*   zDNSTest.test_from_json  s$    'xx3==3333r   c                 X    ddl m} t        |j                  | j                               y r!  )r   r  r^   r   rV   r  s     r   r_   zDNSTest.test_from_json_hashable  s    'S]]499%&r   c                    t        t        j                  d            }t        t        j
                  f|t        j                  ffD ]i  \  }}| j                  ||      5  | j                  j                  | j                  j                  ||      |j                               sJ 	 d d d        k y # 1 sw Y   vxY w)Nec_secp384r1_key.pemr	   )r
   algr%  )r   r   load_ecdsa_private_keyr<   rc   RS256ES384subTestrU   check_validationgen_validationr=   )r   ec_key_secp384r1r
   r%  s       r   test_gen_check_validationz!DNSTest.test_gen_check_validation  s     Y%E%EF\%]^tzz*-=tzz,JK 	MHC#3/ Mxx00HH++CS+93>>;KM M MM M	MM Ms   !AB55B>	c                     t         j                  j                  t        j                  d            }| j
                  j                  | j
                  j                  t              |j                               rJ y )Nzrsa1024_key.pem)
rc   rd   re   r   rf   rU   r+  r,  r<   r=   r   s     r   #test_gen_check_validation_wrong_keyz+DNSTest.test_gen_check_validation_wrong_key  s^    {{	 5 56G HI88,,HH##C($//*;= 	= = =r   c                     t        d dD              }|D ]2  }| j                  j                  |t        j	                               s2J  y )Nc              3      K   | ]8  }t         j                  j                  |t         j                  t                : yw)payloadr%  r
   N)rc   JWSsignr(  r<   ).0r4  s     r   	<genexpr>z>DNSTest.test_check_validation_wrong_payload.<locals>.<genexpr>  s/      
 HHMM'tzzsMC
s   >A )r      {})tuplerU   r+  r<   r=   )r   validationsr|   s      r   #test_check_validation_wrong_payloadz+DNSTest.test_check_validation_wrong_payload  sR     
'
 
 & 	.Jxx00CNN,. . .	.r   c                 :   t         j                  j                  | j                  j	                  d      j                         j                  d      t         j                  t              }| j                  j                  |t        j                               rJ y )Ns   xxxxxxxxxxxxxxxxxxxxrT   zutf-8r3  )rc   r5  r6  rU   r   
json_dumpsr3   r(  r<   r+  r=   )r   bad_validations     r   "test_check_validation_wrong_fieldsz*DNSTest.test_check_validation_wrong_fields  so    HHOO $ !!+ffWo

 ' % 88,,^S^^=MNNNNr   c                 N   t        j                  d      5 }t         j                  j                  |_        | j
                  j                  t              }d d d        ddlm	} t        |      sJ |j                  t         j                  j                  k(  sJ y # 1 sw Y   GxY w)Nz"acme.challenges.DNS.gen_validationr   DNSResponse)r   r   r   r|   r   rU   gen_responser<   r   rC  r   )r   mock_genr?   rC  s       r   test_gen_responsezDNSTest.test_gen_response  s    ZZ<= 	2$(MM$<$<H!xx,,S1H	2 	0(K000""dmm&>&>>>>	2 	2s   ?BB$c                 D    d| j                   j                  d      k(  sJ y )Nz_acme-challenge.le.wtfzle.wtfrw   r'   s    r   ry   z#DNSTest.test_validation_domain_name  s    '488+J+J8+TTTTr   c                     t        t        j                  d            }| j                  j	                  | j                  j                  |t        j                        |j                               du sJ y )Nr$  r	   r&  T)	r   r   r'  rU   r+  r,  rc   r)  r=   )r   r-  s     r   !test_validation_domain_name_ecdsaz)DNSTest.test_validation_domain_name_ecdsa  se     Y%E%EF\%]^xx((HH##$4$**#E'')+.23 	3 3r   N)r   r   r   r#   r(   r*   r_   r.  r0  r<  r@  rF  ry   rI  r   r   r   r  r    s<    
74'M=
.O?U3r   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)DNSResponseTestc                    ddl m}  |t        j                  d            | _        t        j
                  j                  | j                  j                  d      j                         t        t        j                        | _        ddl m}  || j                  	      | _        d
| j                  i| _        dd| j                  j                         d| _        y )Nr   r  r  rT   T)	sort_keys)r4  r
   r%  rB  )r|   r|   rL   r  )rO   r   r|   )r   r  rc   r   r   r5  r6  r>  r3   r<   r(  r|   rC  rU   jmsg_toto_json	jmsg_from)r   r  rC  s      r   r#   zDNSResponseTest.setUp  s    't~~: < =
((--JJ))D)9@@B ( % 	0$//:$//
 $//113
r   c                 V    | j                   | j                  j                         k(  sJ y r%   )rN  rU   r&   r'   s    r   r(   z$DNSResponseTest.test_to_partial_json  s!    ||txx779999r   c                 d    ddl m} | j                  |j                  | j                        k(  sJ y Nr   rB  )r   rC  rU   r   rP  r   rC  s     r   r*   zDNSResponseTest.test_from_json  s&    /xx;00@@@@r   c                 X    ddl m} t        |j                  | j                               y rS  )r   rC  r^   r   rP  rT  s     r   r_   z'DNSResponseTest.test_from_json_hashable  s    /[""4>>23r   c                 x    | j                   j                  | j                  t        j	                               sJ y r%   )rU   r+  r   r<   r=   r'   s    r   test_check_validationz%DNSResponseTest.test_check_validation  s'    xx((S^^5EFFFr   N)r   r   r   r#   r(   r*   r_   rW  r   r   r   rK  rK    s    
&:A4Gr   rK  c                       e Zd ZdZd Zy)JWSPayloadRFC8555CompliantzFTest for RFC8555 compliance of JWS generated from resources/challengesc                 l    ddl m}  |       }|j                  d      j                         }|dk(  sJ y )Nr   r      )indentr9  )r   r   r>  r3   )r   r   challenge_bodyr   s       r   test_challenge_payloadz1JWSPayloadRFC8555Compliant.test_challenge_payload  s5    2')(((299;u}}r   N)r   r   r   __doc__r^  r   r   r   rY  rY    s
    Pr   rY  __main__r   ))r_  sysunittestr   urllib.parseparser   josepyrc   
josepy.jwkr   r   r  r   acmer   acme._internal.testsr   load_comparable_certCERTrd   load_rsa_private_keyr<   TestCaser   r    r,   rH   ro   r   r   r   r  r  rK  rY  r   exitmainargv__file__r   r   r   <module>rq     s     
   #       *%y%%j1dkk4i445EFG8H%% 8H 1 1 H AH,=,=  AF#)) #L)!! )>N7** N7b";"" ";JP7H-- P7f"KH%% "KJA3h A3H!Gh'' !GH	!2!2 	 zCHH[V[[!"
234 r   