
    5                         S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
  SSKJrJrJrJrJr  S rS rS r\R(                  " S	S
S9S 5       rS rg)zTests for the reauth module.    N)
exceptions)
challenges)$AuthenticationExtensionsClientInputsAuthenticatorAssertionResponse
GetRequestGetResponsePublicKeyCredentialDescriptorc                      [         R                  " SSS9   [        R                  " S5      S:X  d   e S S S 5        g ! , (       d  f       g = f)Ngetpass.getpassfooreturn_value )mockpatchr   get_user_password     Vplatform/gsutil/third_party/google-auth-library-python/tests/oauth2/test_challenges.pytest_get_user_passwordr   $   s6    	%E	:++B/5888 
;	:	:s	   =
Ac            
      4   SSSSS[         R                  " SR                  S5      5      R                  S5      S./SS	.S
.n [        R
                  " 5       n[        R                  " 5       n[        R                  R                  SS 5        [        R                  " SUS9   [        R                  " S5       nSUl        UR                  S:X  d   eUR                  (       d   eUR                  U 5      SS0:X  d   eUR!                  SUSS./["        R$                  R&                  S9  S S S 5        S S S 5        S[        R                  S'   [        R                  " SSS0S9   UR                  U 5      SS0:X  d   e S S S 5        [        R                  R                  SS 5        SU S   S'   ["        R$                  R'                  S[)        U 5      -   S-   5        [        R                  " SUS9   [        R                  " S5       nSUl        UR                  S:X  d   eUR                  (       d   eUR                  U 5      SS0:X  d   eUR!                  SUSS./["        R$                  R&                  S9  S S S 5        S S S 5        SU S   S'   [        R                  " SUS9   [        R                  " S5       nUR                  S:X  d   eUR                  (       d   e[*        R,                  R/                  [*        R,                  R.                  R0                  5      S/Ul        UR                  U 5      SS0:X  d   e[        R4                  " SUSS./["        R$                  R&                  S9[        R4                  " SUSS./["        R$                  R&                  S9/nUR7                  U5        S S S 5        S S S 5        [        R                  " SUS9   [        R                  " S5       n[*        R,                  R/                  [*        R,                  R.                  R0                  5      Ul        UR                  U 5      b   e S S S 5        [        R                  " S5       n[*        R,                  R/                  [*        R,                  R.                  R8                  5      Ul        UR                  U 5      b   e S S S 5        [        R                  " S5       n[*        R,                  R;                  5       Ul        UR                  U 5      b   e S S S 5        [        R                  " S5       n[*        R,                  R/                  [*        R,                  R.                  R<                  5      Ul        [>        R@                  " [*        R,                  R.                  5         UR                  U 5        S S S 5        S S S 5        [        R                  " S5       n[*        R,                  RC                  5       Ul        UR                  U 5      b   e S S S 5        [        R                  " S5       n[*        R,                  RE                  5       Ul        [>        R@                  " [*        R,                  RD                  5         UR                  U 5        S S S 5        S S S 5        [        R                  RG                  S5         S ["        RH                  S'   [>        R@                  " [J        RL                  5       nUR                  U 5        S S S 5        WRO                  S5      (       d   e S S S 5        S S S 5        g ! , (       d  f       GN3= f! , (       d  f       GN== f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN!= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNG= f! , (       d  f       GNQ= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNG= f! , (       d  f       GN8= f! , (       d  f       g = f)NREADY   SECURITY_KEYsecurity_key_application_idsome_keysome_challengeascii	keyHandle	challengeapplicationIdr   relyingPartyIdstatuschallengeIdchallengeTypesecurityKeyz"GOOGLE_AUTH_WEBAUTHN_PLUGIN"zpyu2f.model.RegisteredKeyr   zCpyu2f.convenience.authenticator.CompositeAuthenticator.Authenticatezsecurity key responser)   s   some_challenge)keyr!   )print_callbackpluginGOOGLE_AUTH_WEBAUTHN_PLUGINzNgoogle.oauth2.challenges.SecurityKeyChallenge._obtain_challenge_input_webauthnsecurity_key_relying_party_idr$   z	metadata=
zsys.modulespyu2fzpyu2f dependency is required)(base64urlsafe_b64encodeencodedecoder   Mockr   SecurityKeyChallengeosenvironpopr   r   nameis_locally_eligibleobtain_challenge_inputassert_called_withsysstderrwritestrr0   errorsU2FErrorDEVICE_INELIGIBLEside_effectcallassert_has_callsTIMEOUTPluginErrorBAD_REQUESTpytestraisesNoDeviceFoundErrorUnsupportedVersionExceptiondictmodulesr   ReauthFailErrormatch)metadatamock_keyr!   mock_authenticatecallsexcinfos         r   test_security_keyrX   )   s   ': ",!'!9!9(//8"fWo	 <
	H" yy{H//1I JJNN2D9	/h	GZZQ
-D*>>^333000033H=6B    00-!0ABC"zz// 1 
 
H" 19BJJ,-	X#%<=

 //92>
 
 	
 

 JJNN2D9 1PH],-JJ[3x=0478	/h	GZZQ
-D*>>^333000033H=6B    00/!0ABC"zz// 1 
 
H$ 1PH],-	/h	GZZQ
>>^3330000%%ell&;&;&M&MN'-) 33H=6B    		3%4EFG#&::#3#3
 		1%4EFG#&::#3#3E ..u51
 
H8 
/h	GZZQ
,1LL,A,A%%77-) 33H=EEE
 ZZQ
,1LL,A,A%%---) 33H=EEE
 ZZQ
,1LL,D,D,F)33H=EEE	
 ZZQ
,1LL,A,A%%11-) u||44500: 6
 ZZQ
,1LL,K,K,M)33H=EEE	
 ZZQ
,1LL,T,T,V)u||GGH00: I	
 ZZ__]+#'CKK z99:g00: ;==!@AAAA	 ,[ 
H	G_
 
 
H	G&
 

 
 
H	G(
 
 
H	G:
 

 

 
 65
 

 
 IH	
 
 ;: ,+[ 
H	Gs{  !])8A3]+])%];3^
A3^=^*_C<^1=_"b	9A_b	3A_'b	-8_9&b	A5`9``b	18`/*b	Aaa,a4'b	8a7a%% a7b	
]&	!]))
]8;
^

^	^
^.1
_ 	;_
_
_$	b	'
_6	1b	9
`	b	
``
`,	'b	/
`>	9b	
aa
a"	b	%
a4/a77
b	b		
bc            
      z   SSSSS[         R                  " SR                  S5      5      R                  S5      S./SS	.S
.n [        R
                  " 5       nU S   nUS   nUS   n/ nU H  nUR                  [        US   S95        M      [        US9n[        [        R                  UUR                  WS   5      [        R                  USUS9n[        SSSSS9n	[        SU	SSS9n
U
R                  R                   U
R                  R"                  U
R                  R$                  SU
R&                  SS.n[(        R*                  " 5       nXR,                  l        UR1                  X5      SU0:X  d   eUR,                  R3                  U5        U S   nS U S'   [4        R6                  " [8        R:                  5         UR1                  X5        S S S 5        X S'   U S   S   nS U S   S'   [4        R6                  " [8        R:                  5         UR1                  X5        S S S 5        / U S   S'   [4        R6                  " [8        R:                  5         UR1                  X5        S S S 5        XS   S'   U S   S   nS U S   S'   [4        R6                  " [8        R:                  5         UR1                  X5        S S S 5        XS   S'   U S   S   nS U S   S'   [4        R6                  " [8        R:                  5         UR1                  X5        S S S 5        XS   S'   U S   S   S   S   nS U S   S   S   S'   [4        R6                  " [8        R:                  5         UR1                  X5        S S S 5        UU S   S   S   S'   U S   S   S   S   nS U S   S   S   S'   [4        R6                  " [8        R:                  5         UR1                  X5        S S S 5        UU S   S   S   S'   [8        R<                  UR,                  l        [4        R6                  " [8        R<                  5         UR1                  X5        S S S 5        [8        R@                  UR,                  l        [4        R6                  " [8        R@                  5         UR1                  X5        S S S 5        [8        RB                  UR,                  l        [4        R6                  " [8        RB                  5         UR1                  X5        S S S 5        g ! , (       d  f       GN@= f! , (       d  f       GN = f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNF= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNH= f! , (       d  f       N= f! , (       d  f       g = f) Nr   r   r   r   r   r   r   r   r"   r%   r)   r   r#   r    )id)appidr!   required)originrpidr!   
timeout_msallow_credentialsuser_verification
extensionsclientDataJSONauthenticatorData	signature
userHandle)client_data_jsonauthenticator_datare   user_handlerZ   authenticatorAttachmentclientExtensionResults)rZ   responseauthenticator_attachmentclient_extension_results)
clientDatard   signatureDatar#   r    securityKeyReplyTyper$   r   )"r1   r2   r3   r4   r   r6   appendr	   r   r   REAUTH_ORIGIN_unpadded_urlsafe_b64recodeWEBAUTHN_TIMEOUT_MSr   r   rl   rg   rh   re   rZ   r   r5   getr    _obtain_challenge_input_webauthnr=   rK   rL   r   InvalidValueMalformedErrorrE   InvalidResourcerQ   )rS   r!   sksk_challengesapplication_idr`   sk_challenge	extensionget_requestassertion_respget_responserl   mock_handlercaidrpikhchs                     r   test_security_key_webauthnr      s   ': ",!'!9!9(//8"fWo	 <
	H$ //1I	-	 B|$M(N%  )\+-FG	
 &
 5>JI''77[8QR11+$K 4). 	N !:!9	L #++<<)22EE%..886!__ !H 99;L$0! 55hMxR    ''4
 
-	 B"H]	z..	/228J 
0 ]-A,0H]L)	z..	/228J 
0,.H]L)	z..	/228J 
0,-]L)
=
!/
2C/3H]O,	z..	/228J 
0/2]O,
=
!"2
3C04H],-	z..	/228J 
003],-	-	 	.q	1+	>B<@H]L)!,[9	z..	/228J 
0<>H]L)!,[9	-	 	.q	1+	>B<@H]L)!,[9	z..	/228J 
0<>H]L)!,[9 $.#<#<L 	z00	1228J 
2 $.#=#=L 	z11	2228J 
3 $.#=#=L 	z11	2228J 
3	2_ 
0	/ 
0	/ 
0	/ 
0	/ 
0	/ 
0	/ 
0	/ 
2	1 
3	2 
3	2sx    TTT/-UU#U%U76V	V0V,
T
T,/
T>
U
U"%
U47
V	
V
V),
V:r   r   r   c                    [         R                  " 5       n[        R                  " SSS9   UR                  (       d   eUR
                  S:X  d   e[         R                  " 5       R                  0 5      SS0:X  d   e S S S 5        [        R                  " SS S9   [         R                  " 5       R                  0 5      SS0:X  d   e S S S 5        g ! , (       d  f       NZ= f! , (       d  f       g = f)Nr   r   r   PASSWORD
credential )r   PasswordChallenger   r   r;   r:   r<   )getpass_mockr!   s     r   test_password_challenger   I  s    ,,.I	%E	:,,,,~~+++++-DDRH%M
 
 	
 
 
; 
%D	9++-DDRH#M
 
 	
 
 
:	9 
;	: 
:	9s   AC-C#
C #
C1c                     [         R                  " 5       n U R                  (       d   eU R                  S:X  d   e[        R
                  " [        R                  5         U R                  S 5        S S S 5        g ! , (       d  f       g = f)NSAML)	r   SamlChallenger;   r:   rK   rL   r   ReauthSamlChallengeFailErrorr<   )r!   s    r   test_saml_challenger   Z  s^    ((*I((((>>V###	z>>	?((. 
@	?	?s   A::
B)__doc__r1   r7   r>   r   rK   r0   google.authr   google.oauth2r   google.oauth2.webauthn_typesr   r   r   r   r	   r   rX   r   r   r   r   r   r   r   <module>r      sf    #  	 
    " $ 9
[B|KD E2
 3
 /r   