
    5                         d Z ddlZddl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mZmZmZmZmZ d Zd Zd Z ej(                  d	d
      d        Zd Zy)zTests for the reauth module.    N)
exceptions)
challenges)$AuthenticationExtensionsClientInputsAuthenticatorAssertionResponse
GetRequestGetResponsePublicKeyCredentialDescriptorc                      t        j                  dd      5  t        j                  d      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)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            
      H   dddddt        j                  dj                  d            j                  d      dgdd	d
} t	        j
                         }t        j                         }t        j                  j                  dd        t	        j                  d|      5  t	        j                  d      5 }d|_        |j                  dk(  sJ |j                  sJ |j                  |       ddik(  sJ |j!                  d|ddgt"        j$                  j&                         d d d        d d d        dt        j                  d<   t	        j                  dddi      5  |j                  |       ddik(  sJ 	 d d d        t        j                  j                  dd        d| d   d<   t"        j$                  j'                  dt)        |       z   dz          t	        j                  d|      5  t	        j                  d      5 }d|_        |j                  dk(  sJ |j                  sJ |j                  |       ddik(  sJ |j!                  d|ddgt"        j$                  j&                         d d d        d d d        d| d   d<   t	        j                  d|      5  t	        j                  d      5 }|j                  dk(  sJ |j                  sJ t*        j,                  j/                  t*        j,                  j.                  j0                        dg|_        |j                  |       ddik(  sJ t	        j4                  d|ddgt"        j$                  j&                        t	        j4                  d|ddgt"        j$                  j&                        g}|j7                  |       d d d        d d d        t	        j                  d|      5  t	        j                  d      5 }t*        j,                  j/                  t*        j,                  j.                  j0                        |_        |j                  |       J 	 d d d        t	        j                  d      5 }t*        j,                  j/                  t*        j,                  j.                  j8                        |_        |j                  |       J 	 d d d        t	        j                  d      5 }t*        j,                  j;                         |_        |j                  |       J 	 d d d        t	        j                  d      5 }t*        j,                  j/                  t*        j,                  j.                  j<                        |_        t?        j@                  t*        j,                  j.                        5  |j                  |        d d d        d d d        t	        j                  d      5 }t*        j,                  jC                         |_        |j                  |       J 	 d d d        t	        j                  d      5 }t*        j,                  jE                         |_        t?        j@                  t*        j,                  jD                        5  |j                  |        d d d        d d d        t        j                  jG                  d      5  d t"        jH                  d<   t?        j@                  tJ        jL                        5 }|j                  |        d d d        jO                  d      sJ 	 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   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   OxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY w# 1 sw Y   UxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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	 ,[ 
H	G_
 
 
H	G&
 

 
 
H	G(
 
 
H	G:
 

 

 
 65
 

 
 IH	
 
 ;: ,+[ 
H	Gs{   ]
6A/\=%]
!]0]1A/]$5]1$^:C9]>3^`0A^`(A^%` 7^2`5A4_)^?;_` 7_`5A_3_&_3 '`7`>` `,`=]	]

]]!$].	)]11];>^	^^^"	`%^/	*`2^<	7`?_	__	`_#	`&_0+_33_=	8` `	``	``!c            
      4   dddddt        j                  dj                  d            j                  d      dgdd	d
} t	        j
                         }| d   }|d   }|d   }g }|D ]   }|j                  t        |d                " t        |      }t        t        j                  ||j                  d         t        j                  |d|      }t        dddd      }	t        d|	dd      }
|
j                  j                   |
j                  j"                  |
j                  j$                  d|
j&                  dd}t)        j*                         }|
|j,                  _        |j1                  | |      d|ik(  sJ |j,                  j3                  |       | d   }d | d<   t5        j6                  t8        j:                        5  |j1                  | |       d d d        || d<   | d   d   }d | d   d<   t5        j6                  t8        j:                        5  |j1                  | |       d d d        g | d   d<   t5        j6                  t8        j:                        5  |j1                  | |       d d d        || d   d<   | d   d   }d | d   d<   t5        j6                  t8        j:                        5  |j1                  | |       d d d        || d   d<   | d   d   }d | d   d<   t5        j6                  t8        j:                        5  |j1                  | |       d d d        || d   d<   | d   d   d   d   }d | d   d   d   d<   t5        j6                  t8        j:                        5  |j1                  | |       d d d        || d   d   d   d<   | d   d   d   d   }d | d   d   d   d<   t5        j6                  t8        j:                        5  |j1                  | |       d d d        || d   d   d   d<   t8        j<                  |j,                  _        t5        j6                  t8        j<                        5  |j1                  | |       d d d        t8        j@                  |j,                  _        t5        j6                  t8        j@                        5  |j1                  | |       d d d        t8        jB                  |j,                  _        t5        j6                  t8        jB                        5  |j1                  | |       d d d        y # 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   .xY w# 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y    xY w# 1 sw Y   xY w# 1 sw Y   y xY w) 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      s8   ': ",!'!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$0L! 55hMxR    ''4
 
-	 B"H]	z..	/228\J 
0 H]-A,0H]L)	z..	/228\J 
0,.H]L)	z..	/228\J 
0,-H]L)
=
!/
2C/3H]O,	z..	/228\J 
0/2H]O,
=
!"2
3C04H],-	z..	/228\J 
003H],-	-	 	.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'#T49UU1UU(U5!V>VT$'T14T>UUU%(U25U?VVr   r   r   c                    t        j                         }t        j                  dd      5  |j                  sJ |j
                  dk(  sJ t        j                         j                  i       ddik(  sJ 	 d d d        t        j                  dd       5  t        j                         j                  i       ddik(  sJ 	 d d d        y # 1 sw Y   UxY w# 1 sw Y   y xY w)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C c                      t        j                         } | j                  sJ | j                  dk(  sJ t	        j
                  t        j                        5  | j                  d        d d d        y # 1 sw Y   y xY w)NSAML)	r   SamlChallenger;   r:   rK   rL   r   ReauthSamlChallengeFailErrorr<   )r!   s    r   test_saml_challenger   Z  s^    ((*I((((>>V###	z>>	?((. 
@	?	?s   A22A;)__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      sh    #  	 
    " $ 9
[B|KD E2
 3
 /r   