
    U-f&                     (   d Z ddlmZ ddlZddlZddlZddl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 ddlmZ ddlmZ  G d	 d
e
j                  Z G d de
j                  Z e
j        ej                                         d           G d de
j                              Z G d de
j                  Z G d de
j                  Zedk    r1 ej          ej!        ej"        dd         e#gz                        dS dS )zTests for acme.standalone.    N)Set)mock)
challenges)crypto_util)errors)	test_utilc                       e Zd ZdZd Zd ZdS )TLSServerTestz$Tests for acme.standalone.TLSServer.c                 j    ddl m}  |dt          j        d          }|                                 d S )Nr   	TLSServer r   T)bind_and_activate)acme.standaloner   socketserverBaseRequestHandlerserver_closeselfr   servers      s/home/cdr/domains/dharristours.com/map/certbot/lib/python3.11/site-packages/acme/_internal/tests/standalone_test.py	test_bindzTLSServerTest.test_bind   sO    ------\4N N N    c                     t           j        r5ddlm}  |dt          j        dd          }|                                 d S d S )Nr   r   r   T)r   ipv6)sockethas_ipv6r   r   r   r   r   r   s      r   	test_ipv6zTLSServerTest.test_ipv6   sf    ? 	"111111Y8DW[] ] ]F!!!!!		" 	"r   N)__name__
__module____qualname____doc__r   r    r   r   r
   r
      s8        ..  " " " " "r   r
   c                   B    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )HTTP01ServerTestz'Tests for acme.standalone.HTTP01Server.c                    t           j                            t          j        d                    | _        t                      | _        ddlm	}  |d| j                  | _
        | j
        j                                        d         | _        t          j        | j
        j                  | _        | j                                         d S )Nrsa1024_key.pemr   HTTP01Serverr   	resources   target)joseJWKloadr   load_vectoraccount_keysetr,   r   r*   r   r   getsocknameport	threadingThreadserve_foreverthreadstart)r   r*   s     r   setUpzHTTP01ServerTest.setUp+   s    8==!"3446 6!ee000000"l7dnEEEK&2244Q7	&dk.GHHHr   c                     | j                                          | j                                         | j                                          d S Nr   shutdownr;   joinr   r   s    r   tearDownzHTTP01ServerTest.tearDown7   D      """""r   c                     t          j        d                    | j                  d          }|j        dk    sJ |j        sJ d S Nzhttp://localhost:{0}Fverifyz'ACME client standalone challenge solverrequestsgetformatr7   textokr   responses     r   
test_indexzHTTP01ServerTest.test_index<   X    <"))$)44UD D D} IIIII{r   c                     t          j        d                    | j                  d          }|j        t
          j        k    sJ d S Nzhttp://localhost:{0}/fooFrH   rK   rL   rM   r7   status_codehttp_client	NOT_FOUNDrP   s     r   test_404zHTTP01ServerTest.test_404B   M    <&--di88H H H#{'<<<<<<<r   c                 X   t          j        d          }|                    | j                  \  }}ddlm} |                    |||          }|r| j                            |           |j	        
                    |j        d| j                                        | j                  S Ns   xxxxxxxxxxxxxxxx)tokenr   )HTTP01RequestHandler)challrQ   
validation	localhost)r7   r   HTTP01response_and_validationr4   r   r_   HTTP01Resourcer,   addrQ   simple_verifyr`   
public_keyr7   r   rg   r`   rQ   ra   r_   resources          r   _test_http01zHTTP01ServerTest._test_http01G       !444$<<T=MNN*888888'66(z 7 C C 	)Nx((( ..NK)9)D)D)F)F /   	r   c                 6    |                      d          sJ d S NTrg   rl   rC   s    r   test_http01_foundz"HTTP01ServerTest.test_http01_foundT   %      T *******r   c                 6    |                      d          rJ d S NFrp   rq   rC   s    r   test_http01_not_foundz&HTTP01ServerTest.test_http01_not_foundW   %    $$$///////r   c                    ddl m}  |dt                      d          5 }t          j        |j                  }|                                 t          j                    5 }|                    d|j        	                                d         f           t          j        |j
                  }|                                 |                    d	           |                                }	 |
                    t          j                   n#  Y nxY w|r
J d
            	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r)   r   g?)r,   timeoutr.   rb   r-   g      @z"Server shutdown should not be hung)r   r*   r5   r8   r9   r:   r<   r   connectr6   rA   rB   is_alive	SHUT_RDWR)r   r*   r   server_threadclientstop_threadis_hungs          r   test_timely_shutdownz%HTTP01ServerTest.test_timely_shutdownZ   s   000000\'SUUDAAA 	IV%,F4HIIIM!!! IFV]-F-F-H-H-KLMMM'.foFFF!!###""2&&&'0022OOF$45555D"HH$HHHHHI I I I I I I I I I I I I I I		I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	IsO   AE#BD00DD0DD0$E0D4	4E7D4	8EEEN)r    r!   r"   r#   r=   rD   rR   rZ   rl   rr   rv   r   r$   r   r   r&   r&   '   s        11
 
 
# # #
  = = =
  + + +0 0 0I I I I Ir   r&   zpyOpenSSL too oldc                   *    e Zd ZdZd Zd Zd Zd ZdS )TLSALPN01ServerTestz)Test for acme.standalone.TLSALPN01Server.c                    dt          j        d          t          j        d          fi| _        dt          j        d          t          j        d          fi| _        ddlm}  |d| j        | j        	          | _        t          j	        | j        j
        
          | _        | j                                         d S )N	   localhostzrsa2048_key.pemzrsa2048_cert.pemzrsa4096_key.pemzrsa4096_cert.pemr   )TLSALPN01Server)rb   r   )certschallenge_certsr.   )r   load_pyopenssl_private_key	load_certr   r   r   r   r   r8   r9   r:   r;   r<   )r   r   s     r   r=   zTLSALPN01ServerTest.setUpu   s    "01BCC 233%
 

 !-01BCC 233/
   	433333%o&6dj $ 46 6 6  &dk.GHHHr   c                     | j                                          | j                                         | j                                          d S r?   r@   rC   s    r   rD   zTLSALPN01ServerTest.tearDown   rE   r   c                    | j         j                                        d d         \  }}t          j        d||ddg          }t          j        |          t          j        | j        d         d                   k    sJ d S )N   r   r-   s
   acme-tls/1hostr7   ry   alpn_protocols)r   r   r6   r   	probe_snir0   ComparableX509r   )r   r   r7   certs       r   test_challenge_certsz(TLSALPN01ServerTest.test_challenge_certs   s    ['3355bqb9
d$t$)?, , , "4((#D$8$Fq$IJJK K K K K Kr   c                     | j         j                                        d d         \  }}t          j        t
          j                  5  t          j        d||ddg           d d d            d S # 1 swxY w Y   d S )Nr   r   r-   s   bad-alpnr   )	r   r   r6   pytestraisesr   Errorr   r   )r   r   r7   s      r   test_bad_alpnz!TLSALPN01ServerTest.test_bad_alpn   s    ['3355bqb9
d]6<(( 	. 	.!4dA +}. . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   A00A47A4N)r    r!   r"   r#   r=   rD   r   r   r$   r   r   r   r   q   sY        33  "# # #K K K. . . . .r   r   c                   p    e Zd ZdZ G d dej                  Z ej        d          d             Z	d Z
dS )BaseDualNetworkedServersTestz2Test for acme.standalone.BaseDualNetworkedServers.c                   "     e Zd ZdZ fdZ xZS )1BaseDualNetworkedServersTest.SingleProtocolServerzUServer that only serves on a single protocol. FreeBSD has this behavior for AF_INET6.c                    |                     dd          }|rt          j        | _        d|d<   nt          j        | _         t                      j        |i | |rt          t          dd          }| j                            |t          j	        d           	 | 
                                 |                                  d S #  |                                   xY wd S )Nr   Fr   IPPROTO_IPV6)   r-   )popr   AF_INET6address_familyAF_INETsuper__init__getattr
setsockoptIPV6_V6ONLYserver_bindserver_activater   )r   argskwargsr   level	__class__s        r   r   z:BaseDualNetworkedServersTest.SingleProtocolServer.__init__   s    ::fe,,D 5&,o#.3*++&,n#EGGd-f--- 
  ;;&&uf.@!DDD$$&&&((*****%%'''
 
s   (C C)r    r!   r"   r#   r   __classcell__)r   s   @r   SingleProtocolServerr      s>        cc	 	 	 	 	 	 	 	 	r   r   zsocket.socket.bindc                 $   ddl m} ddlm} t	          j        |d          |_        t          j        t          j                  5 } |t          j
        dt          j                   d d d            n# 1 swxY w Y   |j        j         |k    sJ d S )Nr   )
EADDRINUSEBaseDualNetworkedServerszFake addr in use errorr   )errnor   r   r   r   errorside_effectr   r   r   r   r   r   value)r   	mock_bindr   r   exc_infos        r   test_fail_to_bindz.BaseDualNetworkedServersTest.test_fail_to_bind   s    $$$$$$<<<<<< &Z9Q R R	]6<(( 	:H$$,A8: : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:
 ~#z111111s   "A33A7:A7c                     ddl m}  |t          j        dt          j                  }|                                }d }|D ]}|d         }|r||k    sJ |}|j        D ]}|                                 d S )Nr   r   r   r-   )	r   r   r   r   r   r   getsocknamesserversr   )r   r   r   	socknames	prev_portsocknamer7   r   s           r   test_ports_equalz-BaseDualNetworkedServersTest.test_ports_equal   s    <<<<<<**(=+- - ((**		! 	 	HA;D ) D((((IIo 	" 	"F!!!!	" 	"r   N)r    r!   r"   r#   r   	TCPServerr   r   patchr   r   r$   r   r   r   r      s        <<    |5   , TZ$%%2 2 &%2" " " " "r   r   c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
HTTP01DualNetworkedServersTestz5Tests for acme.standalone.HTTP01DualNetworkedServers.c                 X   t           j                            t          j        d                    | _        t                      | _        ddlm	}  |d| j                  | _
        | j
                                        d         d         | _        | j
                                         d S )Nr(   r   )HTTP01DualNetworkedServersr   r+   r-   )r0   r1   r2   r   r3   r4   r5   r,   r   r   r   r   r7   r:   )r   r   s     r   r=   z$HTTP01DualNetworkedServersTest.setUp   s    8==!"3446 6!ee>>>>>>11'T^TTTL--//215	""$$$$$r   c                 8    | j                                          d S r?   )r   shutdown_and_server_closerC   s    r   rD   z'HTTP01DualNetworkedServersTest.tearDown   s    ..00000r   c                     t          j        d                    | j                  d          }|j        dk    sJ |j        sJ d S rG   rJ   rP   s     r   rR   z)HTTP01DualNetworkedServersTest.test_index   rS   r   c                     t          j        d                    | j                  d          }|j        t
          j        k    sJ d S rU   rV   rP   s     r   rZ   z'HTTP01DualNetworkedServersTest.test_404   r[   r   c                 X   t          j        d          }|                    | j                  \  }}ddlm} |                    |||          }|r| j                            |           |j	        
                    |j        d| j                                        | j                  S r]   rc   rj   s          r   rl   z+HTTP01DualNetworkedServersTest._test_http01   rm   r   c                 6    |                      d          sJ d S ro   rq   rC   s    r   rr   z0HTTP01DualNetworkedServersTest.test_http01_found  rs   r   c                 6    |                      d          rJ d S ru   rq   rC   s    r   rv   z4HTTP01DualNetworkedServersTest.test_http01_not_found  rw   r   N)r    r!   r"   r#   r=   rD   rR   rZ   rl   rr   rv   r$   r   r   r   r      s        ??	% 	% 	%1 1 1  = = =
  + + +0 0 0 0 0r   r   __main__r-   )$r#   http.clientr~   rX   r   r   sysr8   typingr   unittestr   josepyr0   r   rK   acmer   r   r   acme._internal.testsr   TestCaser
   r&   skipIf	TLSALPN01is_supportedr   r   r   r    exitmainargv__file__r$   r   r   <module>r      sH       ! ! ! ! ! !      



                                          * * * * * *" " " " "H% " " "$GI GI GI GI GIx( GI GI GIT Z)66888:MNN0. 0. 0. 0. 0.(+ 0. 0. ON0.f7" 7" 7" 7" 7"8#4 7" 7" 7"t-0 -0 -0 -0 -0X%6 -0 -0 -0` zCH[V[!""
23344444 r   