U
    [eL!                     @   sT   d Z ddlZddlmZ ddlmZ ddlmZ ej 	dZ
G dd deZdS )	z"Tests for NGP VAN ActionID Backend    N)	HTTPretty)	urlencode)
OpenIdTestz%Y-%m-%dT%H:%M:%SZc                        s   e Zd ZdZdZdZdddddd	d
ddddddddddddddgZeddddddde	d ddddd d!d"dd#d$d%d&d'd$d(d&d)d*d+d*d,d*d-Z
 fd.d/Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Z  ZS )>NGPVANActionIDOpenIDTestz,Test the NGP VAN ActionID OpenID 1.1 Backendz%social.backends.ngpvan.ActionIDOpenIDtestuser@user.local z&<?xml version="1.0" encoding="UTF-8"?>z
<xrds:XRDSzxmlns:xrds="xri://$xrds"z*xmlns:openid="http://openid.net/xmlns/1.0"zxmlns="xri://$xrd*($v*2.0)">z<XRD>z<Service priority="10">z4<Type>http://specs.openid.net/auth/2.0/signon</Type>z2<Type>http://openid.net/extensions/sreg/1.1</Type>z.<Type>http://axschema.org/contact/email</Type>z6<URI>https://accounts.ngpvan.com/OpenId/Provider</URI>z
</Service>z<Service priority="20">z)<Type>http://openid.net/signon/1.0</Type>z</XRD>z</xrds:XRDS>(https://accounts.ngpvan.com/user/abcd123zMidw8F/rCDwW7vMz3y+vK6rjz6s=a  claimed_id,identity,assoc_handle,op_endpoint,return_to,response_nonce,ns.alias3,alias3.mode,alias3.type.alias1,alias3.value.alias1,alias3.type.alias2,alias3.value.alias2,alias3.type.alias3,alias3.value.alias3,alias3.type.alias4,alias3.value.alias4,alias3.type.alias5,alias3.value.alias5,alias3.type.alias6,alias3.value.alias6,alias3.type.alias7,alias3.value.alias7,alias3.type.alias8,alias3.value.alias8,ns.sreg,sreg.fullnamez"{635790678917902781}{GdSyFA==}{20}+https://accounts.ngpvan.com/OpenId/Providerz*http://myapp.com/complete/actionid-openid/ZMMgBGEreZid_resz http://specs.openid.net/auth/2.0zhttp://openid.net/srv/ax/1.0fetch_response/http://openid.net/schema/contact/phone/business+12015555555/http://openid.net/schema/contact/internet/email)http://openid.net/schema/namePerson/firstJohn(http://openid.net/schema/namePerson/lastSmithz$http://axschema.org/namePerson/firstz#http://axschema.org/namePerson/lastzhttp://axschema.org/namePerson
John Smith#http://openid.net/schema/namePersonz%http://openid.net/extensions/sreg/1.1)zopenid.claimed_idzopenid.identityz
openid.sigzopenid.signedzopenid.assoc_handlezopenid.op_endpointzopenid.return_tozopenid.response_noncezopenid.modez	openid.nszopenid.ns.alias3zopenid.alias3.modezopenid.alias3.type.alias1zopenid.alias3.value.alias1zopenid.alias3.type.alias2zopenid.alias3.value.alias2zopenid.alias3.type.alias3zopenid.alias3.value.alias3zopenid.alias3.type.alias4zopenid.alias3.value.alias4zopenid.alias3.type.alias5zopenid.alias3.value.alias5zopenid.alias3.type.alias6zopenid.alias3.value.alias6zopenid.alias3.type.alias7zopenid.alias3.value.alias7zopenid.alias3.type.alias8zopenid.alias3.value.alias8zopenid.ns.sregzopenid.sreg.fullnamec                    sT   t t|   tjtjdd| jd tjtjdd| jd tjtjdd| jd dS )zSetup the testz%https://accounts.ngpvan.com/Home/Xrds   )statusbodyr   r	   N)superr   setUpr   Zregister_uriPOSTdiscovery_bodyGETself	__class__ c/var/www/html/services/stratfitenv/lib/python3.8/site-packages/social/tests/backends/test_ngpvan.pyr   T   s&    zNGPVANActionIDOpenIDTest.setUpc                 C   s   |    dS )z<Test the login flow using python-social-auth's built in testN)Zdo_loginr   r    r    r!   
test_loginl   s    z#NGPVANActionIDOpenIDTest.test_loginc                 C   s   |    dS )z>Test the partial flow using python-social-auth's built in testN)Zdo_partial_pipeliner   r    r    r!   test_partial_pipelinep   s    z.NGPVANActionIDOpenIDTest.test_partial_pipelinec                 C   s$   | j  }| |dddddg dS )zBTest that the AX attributes that NGP VAN responds with are present)r   emailr   phone)r   
first_name)r   	last_name)r   fullnameN)backendZget_ax_attributesassertEqual)r   recordsr    r    r!   test_get_ax_attributest   s    
z/NGPVANActionIDOpenIDTest.test_get_ax_attributesc                 C   s   |  | j \}}| |d d | d|d  | d|d  | d|d  | |d d | |d	 d
 | |d d | |d d dS )z;Test the setup_request functionality in the NGP VAN backendzopenid.ax.requiredZngpvanemailZngpvanphonezopenid.ax.if_availableZngpvanfirstnameZngpvanlastnamezopenid.ax.type.ngpvanemailr   zopenid.ax.type.ngpvanfirstnamer   zopenid.ax.type.ngpvanlastnamer   zopenid.ax.type.ngpvanphoner   N)Zget_form_datar*   Z	auth_htmlr+   ZassertIn)r   _inputsr    r    r!   test_setup_request   s*    z+NGPVANActionIDOpenIDTest.test_setup_requestc              	   C   s   | j dddddddgi |  }| |jd | |jd | |jd d	 | |jd d
 | |jd d | |jd d dS )z@Ensure that the correct user data is being passed to create_userZUSER_FIELDSr$   r'   r(   usernamer&   r)   r   r   r   r   r   N)strategyset_settingsdo_startr+   r1   r$   Zextra_user_fieldsr   userr    r    r!   test_user_data   s"    
z'NGPVANActionIDOpenIDTest.test_user_datac                 C   s2   | j ddgi |  }| |jjd d dS )z@Confirm that you can get a phone number via the relevant settingZ)SOCIAL_AUTH_ACTIONID_OPENID_AX_EXTRA_DATAr%   r&   r   N)r2   r3   r4   r+   social_user
extra_datar5   r    r    r!   test_extra_data_phone   s    z.NGPVANActionIDOpenIDTest.test_extra_data_phonec                 C   s   |   }| |jjd dS )z?Test that the correct association uid is stored in the databaser   N)r4   r+   r8   uidr5   r    r    r!   test_association_uid   s
    z-NGPVANActionIDOpenIDTest.test_association_uid)__name__
__module____qualname____doc__backend_pathZexpected_usernamejoinr   r   JANRAIN_NONCEZserver_responser   r"   r#   r-   r0   r7   r:   r<   __classcell__r    r    r   r!   r      s   	- 
r   )r@   datetimeZ	httprettyr   Z	social.p3r   Zsocial.tests.backends.open_idr   utcnowstrftimerC   r   r    r    r    r!   <module>   s   