
    M/ea                     2   d 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m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 dd	lmZ ddlm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j8                        Z G d dej8                        Zej>                  ddfdZ  G d dej8                        Z! G d dej8                        Z" G d dej8                        Z#d Z$d Z%e&dk(  r4 ejN                   ejP                  ejR                  dd e*gz                yy)z)Tests for certbot._internal.auth_handler.    N)mock)	b64encode)
challenges)client)errors)messages)achallenges)obj)common)	acme_util)utilc                   $    e Zd Zd Zd Zd Zd Zy)ChallengeFactoryTestc                     ddl m}  |d d t        j                  d      g       | _        t        j                  t        j                  dt
        j                  t        j                  gdz        | _
        y )Nr   AuthHandlermock_key)keytest   )certbot._internal.auth_handlerr   r   Mockhandlerr   
gen_authzrr   STATUS_PENDING
CHALLENGESauthzrselfr   s     K/usr/lib/python3/dist-packages/certbot/_internal/tests/auth_handler_test.pysetUpzChallengeFactoryTest.setUp   sX    > #4tyyZ/H"M**##VY-A-A$$%)+    c           	          | j                   j                  | j                  t        dt	        t
        j                                    }|D cg c]  }|j                   c}t
        j                  k(  sJ y c c}w Nr   )r   _challenge_factoryr   rangelenr   r   challr   achallsachalls      r    test_allzChallengeFactoryTest.test_all$   sY    ,,11KKq#i&:&:";<> ,333y7K7KKKK3s   A6c                     | j                   j                  | j                  dg      }|D cg c]  }|j                   c}t        j
                  gk(  sJ y c c}w r$   )r   r%   r   r(   r   HTTP01r)   s      r    test_one_httpz"ChallengeFactoryTest.test_one_http*   sG    ,,11$++sC+233	8H8H7IIII3s   Ac                    t        j                  t        j                  dt	        j
                  dd      gt        j                  g      }| j                  j                  |dg      }t        |d         t        j                  k(  sJ y )Nr   r(   unrecognized)r(   typr   )r   r   r   r   r   r   r   r%   typer	   Other)r   r   r*   s      r    test_unrecognizedz&ChallengeFactoryTest.test_unrecognized/   sq    %%##VYYW.9:$$%'
 ,,11&1#>GAJ;#4#4444r"   N)__name__
__module____qualname__r!   r,   r/   r5    r"   r    r   r      s    +LJ
5r"   r   c                       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 ej                  d      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)HandleAuthorizationsTestzmhandle_authorizations test.

    This tests everything except for all functions under _poll_challenges.

    c                 
   ddl m} t        j                         | _        t        j                  d      | _        t        j                  | j                         t        j                  d      | _	        t        j                  g| j                  j                  _        t        | j                  j                  _        t        j                         | _        t        j                  t$        j&                        | _        t$        j&                  j*                  | j(                  j*                  _         || j                  | j(                  | j"                  g       | _        t/        j0                  t.        j2                         y )Nr   r   F)debug_challengesAuthenticatorname)spec)r   r   r   r   mock_displaymock_configdisplay_objset_display	MagicMock	mock_authr   r.   get_chall_prefreturn_valuegen_auth_respperformside_effectmock_accountacme_clientClientV2mock_netretry_afterr   loggingdisableCRITICALr   s     r    r!   zHandleAuthorizationsTest.setUp@   s    > IIK99e< 1 12_=6@6G6G5H%%2-:* NN,K,@,@A0;0D0D0P0P!!-"NNDMM4+<+<bB 	(()r"   c                 J    t        j                  t         j                         y NrR   rS   NOTSETr   s    r    tearDownz!HandleAuthorizationsTest.tearDownV       'r"   c                    t        dt        j                        }t        j                  |g      }t        dd      | j                  j                  _        t        j                  d      5 }| j                  j                  || j                        }| j                  j                  j                  dk(  sJ | j                  j                  j                  dk(  sJ |j                  j                  dk(  sJ |j                  j                   d   d	   d	   dk  sJ |j                  j                   d   d	   d	   d
kD  sJ | j"                  j$                  j                  dk(  sJ | j"                  j$                  j&                  d	   d	   d	   j(                  dk(  sJ t+        |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)N0domainchallsauthorizations      )retry
wait_valuez#certbot._internal.auth_handler.time   r      http-01)gen_dom_authzrr   r   r   rF   _gen_mock_on_pollrP   pollrL   patchr   handle_authorizationsrC   answer_challenge
call_countsleepcall_args_listrG   cleanup	call_argsr2   r'   )r   r   
mock_order	mock_times       r    _test_name1_http_01_1_commonz5HandleAuthorizationsTest._test_name1_http_01_1_commonY   s   s93G3GH^^F8<
):r)R&ZZ=> 	$)\\77
DDTDTUF==11<<AAA==%%00A555??--222 ??11!4Q7:b@@@??11!4Q7:Q>>>>>))44999>>))33A6q9!<@@IMMMv;!####	$ 	$ 	$s   .EF99Gc                 $    | j                          y rV   )rw   rY   s    r    test_name1_http_01_1_acme_2z4HandleAuthorizationsTest.test_name1_http_01_1_acme_2q   s    ))+r"   c                    t               | j                  j                  _        | j                  j
                  j                  j                  t        j                         t        dt        j                        }t        j                  |g      }| j                  j!                  || j"                        }| j                  j$                  j&                  dk(  sJ | j                  j                  j&                  dk(  sJ | j                  j(                  j&                  dk(  sJ | j                  j(                  j*                  d   d   }t-        |      dk(  sJ |d   j.                  dk(  sJ t-        |      dk(  sJ y Nr]   r^   ra   rc   r   ri   )rk   rP   rl   rL   rG   rH   rI   appendr   DNS01rj   r   r   r   rF   r   rn   rC   ro   rp   rs   rt   r'   r2   )r   r   ru   cleaned_up_achallss       r    !test_name1_http_01_1_dns_1_acme_2z:HandleAuthorizationsTest.test_name1_http_01_1_dns_1_acme_2t   s4   ):)<&%%2299*:J:JKs93G3GH^^F8<
33J@P@PQ}}--88A===}}!!,,111~~%%00A555!^^33==a@C%&!+++!!$((I555 6{ar"   c                 `   t        dt        j                        t        dt        j                        t        dt        j                        g}t        j                  |      }t               | j                  j                  _        | j                  j                  || j                        }| j                  j                  j                  dk(  sJ | j                  j                  j                  dk(  sJ | j                  j                  j                  dk(  sJ t!        |      dk(  sJ y )Nr]   r^   12ra   rh   rc   )rj   r   r   r   rF   rk   rP   rl   rL   r   rn   rC   ro   rp   rG   rs   r'   )r   authzrsru   r   s       r    "test_name3_http_01_3_common_acme_2z;HandleAuthorizationsTest.test_name3_http_01_3_common_acme_2   s    !Y5I5IJ!Y5I5IJ!Y5I5IJL ^^7;
):)<&33J@P@PQ}}--88A=== }}!!,,111~~%%00A5556{ar"   c                    t        j                  dd      }t        dt        j                        g}t        j
                  |      }d}|| j                  j                  j                  _	        t               | j                  j                  _        | j                  j                  ||       | j                  j                   j"                  dk(  sJ | j$                  j&                  j"                  dk(  sJ d	| j$                  j&                  j(                  d   d   v sJ d
|d   j*                  j,                  j.                   dt1        |d   j*                  j2                  d   j4                  j6                        j9                         z   | j$                  j&                  j(                  d   d   vsJ t1        |      j9                         | j$                  j&                  j(                  d   d   vsJ y )NTr   r=   verbose_countr]   r^   ra   	   foobarbazrc   Pass "-v" for more infohttp:///.well-known/acme-challenge/)r   r   rj   r   r   rF   rM   r   
thumbprintrI   rk   rP   rl   rL   r   rn   ro   rp   rB   notificationrt   body
identifiervaluer   r   r(   tokendecoder   configr   ru   account_key_thumbprints        r    test_debug_challengesz.HandleAuthorizationsTest.test_debug_challenges   s   DB!Y5I5IJK^^7;
!-8N((5):)<&**:v>}}--88A===  --88A===(''44>>qA!DE 	E E3399::VW"71:??#=#=a#@#F#F#L#LMTTVW**77AA!DQGH 	H H /0779''44>>qA!DE 	E Er"   c                    t        j                  dd      }t        dt        j                  g      t        dt        j
                  g      g}t        j                  |      }d}|| j                  j                  j                  _
        t               | j                  j                  _        t        j                  t        j
                  g| j                   j"                  _
        | j$                  j'                  ||       | j                  j(                  j*                  d	k(  sJ | j,                  j.                  j*                  dk(  sJ d
| j,                  j.                  j0                  d   d   vsJ d|d   j2                  j4                  j6                   dt9        |d   j2                  j                  d   j:                  j<                        j?                         z   | j,                  j.                  j0                  d   d   v sJ t9        |      j?                         | j,                  j.                  j0                  d   d   v sJ d|d   j2                  j4                  j6                   | j,                  j.                  j0                  d   d   v sJ |d   j2                  j                  d   jA                  | j                  j                        | j,                  j.                  j0                  d   d   v sJ y )NTrc   r   r]   r^   r   ra   r   rg   r   r   r   r   z_acme-challenge.)!r   r   rj   r   r.   r}   rF   rM   r   r   rI   rk   rP   rl   rL   r   rG   rH   r   rn   ro   rp   rB   r   rt   r   r   r   r   r(   r   r   
validationr   s        r    test_debug_challenges_verbosez6HandleAuthorizationsTest.test_debug_challenges_verbose   s   DB!i6F6F5GH!ioo5FGI^^7;
!-8N((5):)<&6@6G6G6@6F6F6H%%2 	**:v>}}--88A===  --88A===(**77AA!DQGH 	H H3399::VW
 : :1 = C C I IJQQST''44>>qA!DE 	E E /0779''44>>qA!DE 	E E!'!*//"<"<"B"B!CD''44>>qA!DE 	E Eqz))!,778I8I8M8MN''44>>qA!DE 	E Er"   c                 v   t        dt        j                        g}t        j                  |      }t
        j                  | j                  j                  _	        t        j                  t
        j                        5  | j                  j                  || j                         d d d        y # 1 sw Y   y xY wNr]   r^   ra   )rj   r   r   r   rF   r   AuthorizationErrorrG   rK   rL   pytestraisesr   rn   rC   r   r   ru   s      r    test_perform_failurez-HandleAuthorizationsTest.test_perform_failure   s    !Y5I5IJK^^7;
-3-F-F*]]6445 	MLL..z4;K;KL	M 	M 	Ms   ?'B//B8c                 v   t        dt        j                        g}t        j                  |      }t        d      | j                  j                  _        t        j                  t        j                  d      5  | j                  j                  || j                  dd	       d d d        y # 1 sw Y   y xY w)
Nr]   r^   ra   rg   )re   0All authorizations were not finalized by the CA.matchFrc   )rj   r   r   r   rF   rk   rP   rl   rL   r   r   r   r   r   rn   rC   r   s      r    test_max_retries_exceededz2HandleAuthorizationsTest.test_max_retries_exceeded   s    !Y5I5IJK^^7;
 *;)C&]]644!SU 	W LL..z4;K;KUTUV	W 	W 	Ws   =)B//B8z)certbot._internal.auth_handler.time.sleepc                   	 t        dt        j                        g}t        j                  |      }t
        j
                  j                  ddi		fd}||_        	fd}t        j                  d	      j                  }t        t        j                  |
      | j                  j                  _        t        j                   t"        j$                  d      5  t        j&                  d      5 }||j                  _        | j(                  j+                  || j,                  d       d d d        d d d        |j.                  dk(  sJ |j0                  d   d   d   dk(  sJ t3        |j0                  d   d   d   |dz
  z
        dk  sJ t3        |j0                  d   d   d   |dz  dz
  z
        dk  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr]   r^   ra   
time_sleptr   c                      dxx   | z  cc<   y )Nr   r9   )secsstates    r    mock_sleep_effectzJHandleAuthorizationsTest.test_deadline_exceeded.<locals>.mock_sleep_effect   s    ,4'r"   c                  F             t        j                  d         z   S )Nr   )seconds)datetime	timedelta)orig_nowr   s   r    mock_now_effectzHHandleAuthorizationsTest.test_deadline_exceeded.<locals>.mock_now_effect   s     : 2 25;N OOOr"      )minutes)statusrf   r   r   z0certbot._internal.auth_handler.datetime.datetimeFrh   rc   rg   )rj   r   r   r   rF   r   nowrL   r   r   rk   r   r   rP   rl   r   r   r   r   rm   r   rn   rC   rp   rr   abs)
r   
mock_sleepr   ru   r   r   intervalmock_dtr   r   s
           @@r    test_deadline_exceededz/HandleAuthorizationsTest.test_deadline_exceeded   s   !Y5I5IJK^^7;
$$((q!	(!2
	P %%b199):(BYBYFN*P& ]]644!SU 	XNO XSZ*9' 22:t?O?OQVW	X	X $$)))((+A.q1Q666:,,Q/215AFG1LLL:,,Q/215!aHIQNNNX X	X 	Xs$   G
49F>-G
>G	G

Gc                     t        j                  g       }t        j                  t        j
                        5  | j                  j                  || j                         d d d        y # 1 sw Y   y xY w)Nra   )	r   rF   r   r   r   r   r   rn   rC   )r   ru   s     r    test_no_domainsz(HandleAuthorizationsTest.test_no_domains  sU    ^^26
]]6445 	MLL..z4;K;KL	M 	M 	Ms   'A**A3c                    t        dt        j                        g}t        j                  |      }| j
                  j                  j                  j                  t        j                         | j                  j                  j                  t        j                  j                  t        j                  j                  f       t!               | j"                  j$                  _        | j                  j)                  || j*                         | j
                  j,                  j.                  dk(  sJ | j
                  j,                  j0                  d   d   d   j                  dk(  sJ y r{   )rj   r   r   r   rF   rG   rH   rI   r|   r   r.   r   pref_challsextendr2   r}   rk   rP   rl   rL   rn   rC   rs   rp   rt   r   s      r    -test_preferred_challenge_choice_common_acme_2zFHandleAuthorizationsTest.test_preferred_challenge_choice_common_acme_2	  s   !Y5I5IJK^^7;
%%2299*:K:KL  ''):):)>)>)3)9)9)=)=)@ 	A *;)<&**:t7G7GH~~%%00A555~~%%//215a8<<	IIIr"   c                    t        dt        j                        g}t        j                  |      }| j
                  j                  j                  t        j                  j                         t        j                  t        j                        5  | j
                  j                  || j                          d d d        y # 1 sw Y   y xY wr   )rj   r   r   r   rF   r   r   r|   r   r}   r2   r   r   r   r   rn   rC   r   s      r    .test_preferred_challenges_not_supported_acme_2zGHandleAuthorizationsTest.test_preferred_challenges_not_supported_acme_2  s    !Y5I5IJK^^7;
  ''
(8(8(<(<=]]6445 	MLL..z4;K;KL	M 	M 	Ms   'CCc                 &   t        dt        j                  g      g}t        j                  |      }t        j                  t        j                        5  | j                  j                  || j                         d d d        y # 1 sw Y   y xY wr   )rj   r   r}   r   rF   r   r   r   r   r   rn   rC   r   s      r    %test_dns_only_challenge_not_supportedz>HandleAuthorizationsTest.test_dns_only_challenge_not_supported  sk    !ioo5FGH^^7;
]]6445 	MLL..z4;K;KL	M 	M 	Ms   'BBc                 0   t         j                  | j                  j                  _        t        dt        j                        }t        j                  |g      }t        j                  t         j                        5  | j                  j                  || j                         d d d        | j                  j                  j                   dk(  sJ | j                  j                  j"                  d   d   d   j$                  dk(  sJ y # 1 sw Y   gxY wr{   )r   r   rG   rK   rL   rj   r   r   r   rF   r   r   r   rn   rC   rs   rp   rt   r2   r   r   ru   s      r    test_perform_errorz+HandleAuthorizationsTest.test_perform_error%  s    -3-F-F*s93G3GH^^F8<
]]6445 	MLL..z4;K;KL	M ~~%%00A555~~%%//215a8<<	III		M 	M   ?'DDc                 0   t         j                  | j                  j                  _        t        dt        j                        g}t        j                  |      }t        j                  t         j                        5  | j                  j                  || j                         d d d        | j                  j                   j"                  dk(  sJ | j                  j                   j$                  d   d   d   j&                  dk(  sJ y # 1 sw Y   gxY wr{   )r   r   rP   ro   rL   rj   r   r   r   rF   r   r   r   rn   rC   rG   rs   rp   rt   r2   r   s      r    test_answer_errorz*HandleAuthorizationsTest.test_answer_error0  s    5;5N5N&&2!Y5I5IJK^^7;
]]6445 	MLL..z4;K;KL	M~~%%00A555~~%%//215a8<<	III	M 	Mr   c                    t        dt        j                        g}t        j                  |      }t        t        j                        | j                  j                  _
        t        j                         5  t        j                  t        j                   d      5  | j"                  j%                  || j&                  d       d d d        d d d        | j(                  j*                  j,                  dk(  sJ | j(                  j*                  j.                  d	   d	   d	   j0                  d
k(  sJ y # 1 sw Y   oxY w# 1 sw Y   sxY w)Nr]   r^   ra   r   zSome challenges have failed.r   Frc   r   ri   )rj   r   r   r   rF   rk   r   STATUS_INVALIDrP   rl   rL   	test_utilpatch_display_utilr   r   r   r   r   rn   rC   rG   rs   rp   rt   r2   r   s      r    test_incomplete_authzr_errorz5HandleAuthorizationsTest.test_incomplete_authzr_error;  s   !Y5I5IJK^^7;
):(BYBY)Z&))+ 	Xv88@^_ X22:t?O?OQVWX	X ~~%%00A555~~%%//215a8<<	IIIX X	X 	Xs$   :&E (D6E6D?	;EEc                 6   d }t        dt        j                        t        dt        j                        g}|| j                  j                  _        t        j                  |      }t        j                  d      5 }| j                  j                  || j                  d      }d d d        t              dk(  sJ j                  dk(  sJ t        t        j                   	      | j                  j                  _        t#        j$                         5  t'        j(                  t*        j,                  d
      5  | j                  j                  || j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                     t        t        j                        }t        t        j                        }| j                  j
                  j                  dk(  r ||       S  ||       S )zBThis mock will invalidate one authzr, and invalidate the other onewill-be-invalid)rk   r   STATUS_VALIDr   r   r   r   )r   
valid_mockinvalid_mocks      r    _conditional_mock_on_pollzLHandleAuthorizationsTest.test_best_effort.<locals>._conditional_mock_on_pollG  sQ    *8+@+@AJ,X-D-DEL{{%%++/@@#F++f%%r"   zwill-be-validr^   r   ra   zAcertbot._internal.auth_handler.AuthHandler._report_failed_authzrsTrc   r   zAll challenges have failed.r   )rj   r   r   rP   rl   rL   r   rF   rm   r   rn   rC   r'   rp   rk   r   r   r   r   r   r   r   r   )r   r   r   ru   mock_reportvalid_authzrs         r    test_best_effortz)HandleAuthorizationsTest.test_best_effortF  sV   	& "AUAUV!):9CWCWXZ)B&^^7;
ZZ[\ 	b<<==j$JZJZ\`aL	b
 < A%%%%%***):(BYBY)Z&))+ 	Wv88@]^ W22:t?O?OQUVW	W 	W	b 	bW W	W 	Ws0    (E7&F>(F&F7F F	FFc                 x   t        j                  t        j                  dt         j                  gt        j                  g      }t        j                  |g      }t        j                  t        j                        5  | j                  j                  || j                         d d d        t        j                  t        j                  dt         j                  gt        j                  g      }t        j                  |g      }| j                  j                  || j                         y # 1 sw Y   xY w)Nr]   ra   )r   r   r   r   r}   r   rF   r   r   r   r   r   rn   rC   r   r   s      r    "test_validated_challenge_not_rerunz;HandleAuthorizationsTest.test_validated_challenge_not_rerunf  s     %%''!(()+ ^^F8<
]]6445 	MLL..z4;K;KL	M %%%%s!&&') ^^F8<
**:t7G7GH	M 	Ms   ?'D00D9c           
      r   d }dt         j                  fdt         j                  fdt         j                  fg}|D cg c]3  }t        j                  |d   |d   t        j
                  g|d   g      5 }}t        j                  |      }|| j                  j                  _
        | j                  j                  |      \  }}| j                  j                  j                  dk(  sJ t        |      dk(  sJ t        |      dk(  sJ |d   j                  j                   j"                  dk(  sJ |d   j                  j$                  t         j&                  k(  sJ |d   j                  j                   j"                  dk(  sJ |d   j                  j$                  t         j                  k(  sJ y	c c}w )
zWhen we deactivate valid authzrs in an orderr, we expect them to become deactivated
        and to receive a list of deactivated authzrs in return.c                 n   | j                   j                  t        j                  k(  rz| j                   j                  j
                  dk(  rt        j                  d      | j                   j                  t        j                        }t        j                  |      } | S t        j                  d      )Nis_valid_but_will_failzMock deactivation ACME errorr   )r   z Can't deactivate non-valid authz)r   r   r   r   r   r   acme_errorsErrorupdateSTATUS_DEACTIVATEDAuthorizationResourcer   )r   authzbs     r    _mock_deactivatezQHandleAuthorizationsTest.test_valid_authzrs_deactivated.<locals>._mock_deactivate~  s    {{!!X%:%::;;))//3KK%++,JKK++83N3N+O!77VD M ll#EFFr"   is_valid
is_pendingr   rc   r   ra   rg   N)r   r   r   r   r   r.   r   rF   rP   deactivate_authorizationrL   r   deactivate_valid_authorizationsrp   r'   r   r   r   r   r   )r   r   to_deactivateaorderrr   faileds          r    test_valid_authzrs_deactivatedz7HandleAuthorizationsTest.test_valid_authzrs_deactivated{  s   	 %h&;&;<&(?(?@2H4I4IJL
 +89%& #--adAaD9;K;K:LA$! 9 9}==M..:,,FFvN}}55@@AEEE7|q   6{aqz))//:===qz%%)D)DDDDay~~((..2JJJJay~~$$(=(====9s   8F4N)r6   r7   r8   __doc__r!   rZ   rw   ry   r   r   r   r   r   r   r   rm   r   r   r   r   r   r   r   r   r   r   r   r9   r"   r    r;   r;   9   s    *,($0, ( $E,E<M
W TZZ;<O =O@M
JMM	J	J	JW@I*>r"   r;   rc   c                 "     d|i fd}|S )Ncountc           	         d   dz
  d<   d   dk  rnt         j                  }t        j                  || j                  j
                  j                  | j                  j                  D cg c]  }|j                   c}|gt        | j                  j                        z        }|t        j                  dt              i      fS c c}w )Nr   rc   r   zRetry-After)headers)r   r   r   r   r   r   r   r   r(   r'   r   rF   str)r   effective_statuschallbupdated_azrr   r   rf   s       r    _mockz _gen_mock_on_poll.<locals>._mock  s    w!+g%*7^a%76X=T=T**KK""(((.(>(>?fV\\?V[[%;%;!<<	>
 DNNM3z?3STTT @s   .Cr9   )r   re   rf   r   r   s   ` ` @r    rk   rk     s    eEU Lr"   c                       e Zd ZdZd Zd Zy)ChallbToAchallTestz:Tests for certbot._internal.auth_handler.challb_to_achall.c                 "    ddl m}  ||dd      S )Nr   )challb_to_achallaccount_keyr_   )r   r   )r   r   r   s      r    _callzChallbToAchallTest._call  s    Cx@@r"   c                     | j                  t        j                        t        j                  t        j                  dd      k(  sJ y )Nr   r_   )r   r   r_   )r   r   HTTP01_Pr	   "KeyAuthorizationAnnotatedChallengerY   s    r    test_itzChallbToAchallTest.test_it  s?    zz),,-:: ))}!! 	! !r"   N)r6   r7   r8   r   r   r  r9   r"   r    r   r     s    DA!r"   r   c                   8    e Zd ZdZd Zd Zed        Zd Zd Z	y)GenChallengePathTestzBTests for certbot._internal.auth_handler.gen_challenge_path.

    c                 J    t        j                  t         j                         y rV   )rR   rS   FATALrY   s    r    r!   zGenChallengePathTest.setUp  s    &r"   c                 J    t        j                  t         j                         y rV   rW   rY   s    r    rZ   zGenChallengePathTest.tearDown  r[   r"   c                      ddl m}  |||      S )Nr   )gen_challenge_path)r   r
  )clschallbspreferencesr
  s       r    r   zGenChallengePathTest._call  s    E!';77r"   c                     t         j                  t         j                  f}t        j                  t        j
                  g}| j                  ||      dk(  sJ | j                  |ddd   |      dk(  sJ y)z/Given DNS01 and HTTP01 with appropriate combos.)r   N)rc   )r   DNS01_Pr  r   r}   r.   r   r   r  prefss      r    test_common_casez%GenChallengePathTest.test_common_case  sh    $$i&8&89!!:#4#45zz'5)T111zz'$B$-/4777r"   c                     t         j                  f}t        j                  g}t	        j
                  t        j                        5  | j                  ||       d d d        y # 1 sw Y   y xY wrV   )	r   r  r   r.   r   r   r   r   r   r  s      r    test_not_supportedz'GenChallengePathTest.test_not_supported  sU    $$&""# ]]6445 	'JJw&	' 	' 	's   A""A+N)
r6   r7   r8   r   r!   rZ   classmethodr   r  r  r9   r"   r    r  r    s/    '( 8 88'r"   r  c                       e Zd ZdZd Z ej                  d      d        Z ej                  d      d        Z ej                  d      d        Z	y)ReportFailedAuthzrsTestzLTests for certbot._internal.auth_handler.AuthHandler._report_failed_authzrs.c                 4   ddl m} t        j                  t        j
                  d      | _        d| j                  _        d| j                  j                  _	         || j                  t        j                         t        j                         g       | _
        t        j                  dt        j                  t        j                  j!                  dd	      d
}|d   j"                  J t        j$                  di |}t        j                  |d<   t        j$                  di |}t        j                         | _        d| j&                  j(                  j*                  _        ||g| j&                  j(                  _        t        j                  j!                  dd	      |d<   t        j$                  di |}t        j                         | _        d| j0                  j(                  j*                  _        |g| j0                  j(                  _        y )Nr   r   buzz)rA   r@   zthe buzz hinturitlsdetail)r  )r(   r  r   errorr  r(   zexample.comdnsseczfoo.barr9   )r   r   r   rF   plugin_commonPluginrG   r@   	auth_hintrI   r   r   r.   r   r   r   	with_codedescriptionChallengeBodyauthzr1r   r   r   r   authzr2)r   r   kwargshttp_01http_01_diffs        r    r!   zReportFailedAuthzrsTest.setUp  s   >]-A-AO$0?  -"4>>4>>3CT^^EUWYZ %%--^^--eH-E	
 g**666((262#**w((262~~'-:$$*(/'9$"..228H2Mw--77~~'-6$$*(4~$r"   z2certbot._internal.auth_handler.display_util.notifyc                 r    | j                   j                  | j                  g       |j                  d       y )Nz
Certbot failed to authenticate some domains (authenticator: buzz). The Certificate Authority reported these problems:
  Domain: example.com
  Type:   tls
  Detail: detail

  Domain: example.com
  Type:   tls
  Detail: detail

Hint: the buzz hint
)r   _report_failed_authzrsr&  assert_called_withr   mock_notifys     r    test_same_error_and_domainz2ReportFailedAuthzrsTest.test_same_error_and_domain  s-    ++T\\N;&&
&	
r"   c                     d| j                   _        d| j                   j                  _        | j                  j                  | j                  | j                  g       |j                  d       y )Nquuxquuuuuuxa'  
Certbot failed to authenticate some domains (authenticator: quux). The Certificate Authority reported these problems:
  Domain: foo.bar
  Type:   dnssec
  Detail: detail

  Domain: example.com
  Type:   tls
  Detail: detail

  Domain: example.com
  Type:   tls
  Detail: detail

Hint: quuuuuux
)	rG   r@   r"  rI   r   r,  r&  r'  r-  r.  s     r    !test_different_errors_and_domainsz9ReportFailedAuthzrsTest.test_different_errors_and_domains  sR    $0:  -++T\\4<<,HI&&!	
r"   c                    ddl m} t        j                  d      | _        d| j                  _        t        | j                  j                  _         || j                  t        j                         t        j                         g       | _	        | j                  j                  | j                  g       |j                  dk(  sJ y)zMIf authenticator not derived from common.Plugin, we shouldn't call .auth_hintr   r   quuzr?   rc   N)r   r   r   rF   rG   r@   	Exceptionr"  rL   r   r,  r&  rp   )r   r/  r   s      r    !test_non_subclassed_authenticatorz9ReportFailedAuthzrsTest.test_non_subclassed_authenticator)  s     	?V4$/8  ,"4>>4>>3CT^^EUWYZ++T\\N;%%***r"   N)
r6   r7   r8   r   r!   r   rm   r0  r4  r8  r9   r"   r    r  r    sn    V 6D TZZDE
 F
  TZZDE
 F
, TZZDE	+ F	+r"   r  c                 p    | D cg c]&  }|j                   j                  |j                  ( c}S c c}w )z(Generate a dummy authorization response.)	__class__r6   r_   )
chall_listr(   s     r    rJ   rJ   6  s7     $% oo..= % % %s   +3c           	          t        j                  t        j                  | |t        j                  gt	        |      z        S )z!Generates new authzr for domains.)r   r   r   r   r'   r^   s     r    rj   rj   <  s7    		 	 !CK/1 1r"   __main__)+r   r   rR   sysunittestr   josepyr   r   acmer   r   rN   r   r   r   certbotr	   certbot._internal.displayr
   rD   certbot.pluginsr   r   certbot.testsr   r   r   TestCaser   r;   r   rk   r   r  r  rJ   rj   r6   exitmainargv__file__r9   r"   r    <module>rK     s    /   
      & &    8 3 # +58,, 5Da>x00 a>H &22! !** !'8,, '@Y+h// Y+x%1 zCHH[V[[!"
234 r"   