
    )Jf              	       R   d dl mZmZ d dlmZm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 e
j                            dg d          d             Zd Zd Zd Zd Ze
j                            dg d          d             Zd Zd Ze
j                            dddddddig          d             Ze
j                            dddddig          d              Z e
j                            d!d"d#gid#d$d%d#fi d&d$id$fg          d'             Z!dS )(    )Mockpatch)parse_qsurlparse)reverse)	urlencodeN)assertTemplateUsed)EmailAddress)get_adapter)SocialAccount)build_saml_configz$is_connect,relay_state, expected_url))FNz/accounts/profile/)F/foor   )Tprocess=connectz/social/connections/)Tzprocess=connect&next=/connz/connc                 x   |r+|                      d          }|                      d          }	n|                      d          }d }	d|i}
|||
d<   |                    t          dddi	          |

          }t          dddi	          }|j        dk    sJ |d         |k    sJ |                    |          }|d         |k    sJ t
          j                            dd          }|j        d         ddgk    sJ t          j                            |j	                  }|j
        |r|	j
        ndk    sJ d S )Nauth_clientuserclientSAMLResponse
RelayStatesaml_acsorganization_slugorgkwargsdatasaml_finish_acs.  locationurn:dev-123.us.auth0.comdummysamluid)provideruidRolezview-profilezmanage-account-links)r   zjohn.doe@email.org)getfixturevaluepostr   status_codegetr   objects
extra_datar
   r   email)request
is_connectdbsaml_settingsacs_saml_responsemocked_signature_validationexpected_urlrelay_stater   r   r   resp
finish_urlaccountr+   s                  m/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/saml/tests.pytest_acsr8      s   &  ((77&&v..((22-.D(\;;
$7#?@@@t   D *4G3OPPPJs""""
z))))::j!!D
|++++#''+ (  G f%.:P)QQQQQ $$',$77E;M4::9MNNNNNN    c                     ddi}|                      t          dddi          |          }|j        dk    sJ d	d
 |j        D             v sJ d S )Nr   zbad-responser   r   r   r   r      'socialaccount/authentication_error.htmlc              3   $   K   | ]}|j         V  d S Nname.0ts     r7   	<genexpr>z!test_acs_error.<locals>.<genexpr>C   $      8X8XA8X8X8X8X8X8Xr9   )r&   r   r'   	templates)r   r.   r/   r   r4   s        r7   test_acs_errorrG   =   sz    N+D;;
$7#?@@@t   D s""""48X8X8X8X8XXXXXXXr9   c                     |                      t          dddi                    }|j        dk    sJ dd |j        D             v sJ dS )	zACS expects POSTr   r   r   r   r;   r<   c              3   $   K   | ]}|j         V  d S r>   r?   rA   s     r7   rD   ztest_acs_get.<locals>.<genexpr>J   rE   r9   N)r(   r   r'   rF   r   r.   r/   r4   s       r7   test_acs_getrK   F   sb    ::gj2Eu1MNNNOODs""""48X8X8X8X8XXXXXXXr9   c                 l    |                      t          dddi                    }|j        dk    sJ dS )zSLS expects POSTsaml_slsr   r   r   i  N)r(   r   r'   rJ   s       r7   test_sls_getrN   M   s@    ::gj2Eu1MNNNOODs""""""r9   c                     |                      t          dddi                    }|j        dk    sJ t          |d           d S )N
saml_loginr   r   r   r;   zsocialaccount/login.html)r(   r   r'   r	   rJ   s       r7   test_login_on_getrQ   S   sQ    ::gl4G3OPPPQQDs""""t788888r9   zquery,expected_relay_state)) N)z?process=connectr   )z?process=connect&next=/foozprocess=connect&next=%2Ffoo)z
?next=/barznext=%2Fbarc                 H   |                      t          dddi          |z             }|j        dk    sJ |d         }|                    d          sJ t	          t          |          j                  }|d|vsJ d S |                    d          d	         |k    sJ d S )
NrP   r   r   r   r   r   z3https://dev-123.us.auth0.com/samlp/456?SAMLRequest=r   r   )r&   r   r'   
startswithr   r   queryr(   )r   r.   r/   rU   expected_relay_stater4   r   
resp_querys           r7   
test_loginrX   Y   s     ;;&95%ABBBUJ D s""""JHTUUUUU(8,,233J#:------~~l++A.2FFFFFFFr9   c                     |                      t          dddi                    }|j        dk    sJ |j                            d          sJ d S )Nsaml_metadatar   r   r   r;   sY   <?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata)r(   r   r'   contentrT   rJ   s       r7   test_metadatar\   p   sm    
 ::go7JE6RSSSTTDs""""<""e      r9   c                 :   t          d          5 }|                     t          dddi          dz   t          d|i          z             }|j        dk    sJ 	 d d d            n# 1 swxY w Y   |j        d	k    sJ |d
                             d          sJ d S )Nz4allauth.account.adapter.DefaultAccountAdapter.logoutrM   r   r   r   ?SAMLRequest   r   r   z4https://dev-123.us.auth0.com/samlp/456?SAMLResponse=)r   r(   r   r   
call_countr'   rT   )r   r.   r/   user_factorysls_saml_requestlogout_mockr4   s          r7   test_slsre   |   s   	E	F	F ++J(;U'CDDD(89::;
 

 %*****+ + + + + + + + + + + + + + + s""""
&&>      s   A	A&&A*-A*provider_configidpdummyhttps://idp.org/sso/https://idp.saml.org/slo/cert)	entity_idsso_urlslo_urlx509certc                     |                      d          }t          ||d          }|d         d         dk    sJ |d         d         dk    sJ |d         d         d	d
ik    sJ |d         d         d	dik    sJ d S )N/r   rg   entityIdrh   ro   rk   singleSignOnServiceurlri   singleLogoutServicerj   )r(   r   )rfrf   r,   configs       r7   +test_build_saml_config_without_metadata_urlrx      s     ffSkkGw??F%=$////%=$....%=./E;Q3RRRRR%=./E;V3WWWWWWWr9   )rl   metadata_urlc                 l   |                      d          }t          d          5 }ddddiddidd	i|_        t          ||d
          }d d d            n# 1 swxY w Y   |d         d         dk    sJ |d         d         dk    sJ |d         d         ddik    sJ |d         d         ddik    sJ d S )Nrq   zPonelogin.saml2.idp_metadata_parser.OneLogin_Saml2_IdPMetadataParser.parse_remoterg   rh   rt   ri   rj   rk   )rr   rs   ru   ro   r   rr   ro   rs   ru   )r(   r   return_valuer   )rv   rf   r,   
parse_mockrw   s        r7   test_build_saml_configr}      sI    ffSkkG	Z
 
 D	#(-/E'F(-/J'K"	 #

 #7OUCCD D D D D D D D D D D D D D D %=$////%=$....%=./E;Q3RRRRR%=./E;V3WWWWWWWs   $AAAzdata, result, uidz,urn:oasis:names:tc:SAML:attribute:subject-id123nameid@saml.org)r#   r+   r+   c                 :   dddddgii|_         t                                          d d          }t                      }||j        _        d|j        _        d|j        _        |                    |          |k    sJ |	                    |          |k    sJ d S )	NsamlAPPSr   r    )	client_idprovider_id)r,   r"   r   z6urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress)
SOCIALACCOUNT_PROVIDERSr   get_providerr   get_attributesr{   
get_nameidget_nameid_format_extractextract_uid)r.   r   resultr#   settingsr"   onelogin_datas          r7   test_extract_attributesr      s     	!&#= 
	(H$ }}))$)HHHFFM04M -,=M)@ #0 ]++v5555..#555555r9   )"unittest.mockr   r   urllib.parser   r   django.urlsr   django.utils.httpr   pytestpytest_django.assertsr	   allauth.account.modelsr
   allauth.socialaccount.adapterr   allauth.socialaccount.modelsr   *allauth.socialaccount.providers.saml.utilsr   markparametrizer8   rG   rK   rN   rQ   rX   r\   re   rx   r}   r    r9   r7   <module>r      s   % % % % % % % % + + + + + + + +       ' ' ' ' ' '  4 4 4 4 4 4 / / / / / / 5 5 5 5 5 5 6 6 6 6 6 6 H H H H H H *   !O !O !OHY Y YY Y Y# # #9 9 9     G G G	 	 	    $16"	 	
	 X X X  $ 6 	

 
X X
 
X*  <eWE$566	

 
g()+<=
 
6 6
 
6 6 6r9   