
    f2                         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 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d Zd Zd Zd Zd Zy)    N)patch)reverse)assertTemplateUsed)EmailAddress)SocialAccount)AuthProcessc                     d|_         | j                   |d      ddt        j                  d      }t	        |d       y )NF+headless:socialaccount:redirect_to_providerdummyzhttps://unsafe.org/hackprovidercallback_urlprocessdata'socialaccount/authentication_error.html)HEADLESS_ONLYpostr   LOGINr   clientheadless_reversedbsettingsresps        j/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/headless/socialaccount/tests/test_views.pytest_bad_redirectr      sG    "H;;FG5"((
  D tFG    c                 |    | j                   |d      ddt        j                  d      }|j                  dk(  sJ y )Nr
   r   /r   r   .  )r   r   r   status_code)r   r   r   r   s       r   test_valid_redirectr#      sH    ;;FG"((
  D s"""r   c                    t         j                  j                  ||d      }t         j                  j                  ||d      }| j                   |d            }|j	                         }|d   dk(  sJ t        |d         dk(  sJ | j                   |d      |j                  |j                  d	d
      }|j                  dk(  sJ |j	                         ddddg|ddddgdk(  sJ t         j                  j                  |j                        j                         rJ t         j                  j                  |j                        j                         sJ y )Np123userr   uidp456'headless:socialaccount:manage_providersstatus   r      r   accountapplication/jsonr   content_typezUnittest ServerzUnittest client_idprovider_redirect)	client_idflowsidname)displayr   r(   )r+   r   )pk)r   objectscreategetjsonlendeleter   r(   r"   filterr9   exists)auth_clientr'   r   provider_idaccount_to_delaccount_to_keepr   r   s           r   test_manage_providersrF   &   s   "**11KV 2 N $++22KV 3 O ??BCD 99;D>S   tF|!!!BC(11n>P>PQ'  D
 s"""99; -!512%-	 	
    $$++~/@/@+AHHJJJ  ''?+=+='>EEGGGr   c                     | j                   |d      |ddd      }|j                  dk(  sJ |j                         dddd	gd
k(  sJ y )Nr*   unknownr.   r0   r1     account_not_foundzUnknown account.codemessager+   errors)r?   r"   r=   )rB   r'   r   rC   r   s        r   test_disconnect_bad_requestrP   L   sm    BC%)<'  D
 s"""99;/<NOP   r   c                    t        j                  dddd      }| j                   |d      dd|it        j                  dd	
      }|j
                  dk(  sJ t        j                  j                  dd      j                         sJ y )N{   a@b.comTr6   emailemail_verified%headless:socialaccount:provider_tokenr   id_tokenr   tokenr   r0   r1   r,   rU   verified)
r=   dumpsr   r   r   r"   r   r:   r@   rA   )r   r   r   rX   r   s        r   test_valid_tokenr^   Y   s    zz"	
H ;;@AH #((
 (  
D s"""&&Y&FMMOOOr   c                     | j                   |d      dd|d   d   d   dt        j                  dd	
      }|j                  dk(  sJ |j	                         }|dddddgdk(  sJ y )NrW   googler   APPSr   r4   )rX   r4   rY   r0   r1   rI   zInvalid token.invalid_tokenrZ   )rM   rL   paramrN   )r   r   r   r"   r=   )r   r   r   google_provider_settingsr   r   s         r   test_invalid_tokenre   p   s    ;;@A #5f=a@M #((
 (  D s"""99;D(/GT
   r   c                 ^    d|_         | j                  t        d            }t        |d       y)zlAuthentication errors use the regular "Third-Party Login Failure"
    template if headless is not used.
    Fgoogle_callbackr   N)r   r<   r   r   )r   r   rd   r   r   s        r   #test_auth_error_no_headless_requestrh      s+     #H::g/01DtFGr   c                 n     || dd      }| j                  t        d      d| z         }|d   dk(  sJ y)	zaAuthentication errors redirect to the next URL with ?error params for
    headless requests.
    T/fooheadlessnextrg   ?state=location&/foo?error=unknown&error_process=loginN)r<   r   )r   r   rd   sociallogin_setup_statestater   s         r    test_auth_error_headless_requestrs      sF     $FTGE::g/0WUG3DDED
GGGGr   c                 l    d| _         ddi| _        |j                  t        d            }|d   dk(  sJ y)Authentication errors redirect to a fallback error URL for headless-only,
    in case no next can be recovered from the state.
    Tsocialaccount_login_error/3rdparty/failurerg   ro   zDhttp://testserver/3rdparty/failure?error=unknown&error_process=loginNr   HEADLESS_FRONTEND_URLSr<   r   )r   r   r   rd   r   s        r   7test_auth_error_no_headless_state_request_headless_onlyrz      sJ     "H'BDW&XH#::g/01DZQ	R	Rr   c                      ||dd      }d| _         ddi| _        |j                  t        d      d| z         }|d   d	k(  sJ y
)ru   Trj   rk   rv   rw   rg   rn   ro   rp   Nrx   )r   r   r   rd   rq   rr   r   s          r   4test_auth_error_headless_state_request_headless_onlyr|      s\     $FTGE!H'BDW&XH#::g/0WUG3DDED
GGGGr   c                 f   t        j                  dddd      }t        d      5 }d|_        | j	                   |d      dd	|it
        j                  d
d      }|j                  dk(  sJ 	 d d d        t        j                  j                  dd      j                         rJ y # 1 sw Y   ;xY w)NrR   rS   TrT   Lallauth.socialaccount.adapter.DefaultSocialAccountAdapter.is_open_for_signupFrW   r   rX   rY   r0   r1     r[   )r=   r]   r   return_valuer   r   r   r"   r   r:   r@   rA   )r   r   r   rX   iofsr   s         r   test_token_signup_closedr      s    zz"	
H 
V
 '	!{{DE# ',, ,  

 3&&&'  ##**T*JQQSSSS!' 's   AB''B0c                    d|_         d|_        d|_        t        j                  ddi      }| j                   |d      dd|it        j                  d	d
      }|j                  dk(  sJ |j                         d   d   D cg c]  }|j                  d      s| c}d   }|d   dk(  sJ | j                   |d      ddid
      }|j                  dk(  sJ |j                         d   d   D cg c]  }|j                  d      s| c}d   }|d   dk(  sJ t        j                  j                  d      j                         sJ y c c}w c c}w )N	mandatoryTFr6   rR   rW   r   rX   rY   r0   r1     r   r5   
is_pendingr   provider_signup&headless:socialaccount:provider_signuprU   rS   verify_email)rU   )ACCOUNT_EMAIL_VERIFICATIONACCOUNT_EMAIL_REQUIREDACCOUNT_USERNAME_REQUIREDr=   r]   r   r   r   r"   r<   r   r:   r@   rA   )r   r   r   r   rX   r   fpending_flows           r   test_provider_signupr      s   *5H'&*H#).H&zz#	
H
 ;;@AH #((
 (  
D s"""#yy{627;S!quu\?RASTUVL!2222;;ABY
 (  D s"""#yy{627;S!quu\?RASTUVL///&&Y&7>>@@@ T Ts   EE4EEc                    d|_         d|_        d|_        t        j                  ddi      }| j                   |d      dd|it        j                  d	d
      }|j                  dk(  sJ |j                         d   d   D cg c]  }|j                  d      s| c}d   }|d   dk(  sJ t        d      5 }d|_        | j                   |d      ddid
      }d d d        |j                  dk(  sJ y c c}w # 1 sw Y    xY w)Nr   TFr6   rR   rW   r   rX   rY   r0   r1   r   r   r5   r   r   r   r~   r   rU   rS   r   )r   r   r   r=   r]   r   r   r   r"   r<   r   r   )	r   r   r   r   rX   r   r   r   r   s	            r   test_signup_closedr      s?   *5H'&*H#).H&zz#	
H
 ;;@AH #((
 (  
D s"""#yy{627;S!quu\?RASTUVL!2222	V
 

	!{{EF ,  
	

 s""" T

 

s   C8C8:$C==Dc                      ||ddd      }|j                  t        d      d| z   ddi	      }|j                  d
k(  sJ |d   dk(  sJ t        j                  j                  | dd      j                         sJ y )Nconnectrj   Tr   rm   rl   dummy_authenticatern   r6   rR   r   r!   ro   r   123r&   )r   r   r"   r   r:   r@   rA   )r'   rB   rq   r   r   rr   r   s          r   test_connectr     s    #YVdE $%'%(99#
  D s"""
v%%%  ''TG'OVVXXXr   c                 l    |       }t         j                  j                  |dd        ||t        j                  dd      }|j                  t        d      d| z   d	d
i      }|j                  dk(  sJ |d   dk(  sJ t         j                  j                  | dd      j                         rJ y )Nr   r   r'   r(   r   rj   Tr   r   rn   r6   rR   r   r!   ro   z0/foo?error=connected_other&error_process=connectr&   )
r   r:   r;   r   CONNECTr   r   r"   r@   rA   )	r'   user_factoryrB   rq   r   r   
other_userrr   r   s	            r   test_connect_already_connectedr   *  s     J  jeg N#[00vE $%'%(99#
  D s"""
QQQQ$$++G , fh   r   c                    t        j                  dddd      }|j                   |d      dd|it        j                  dd	
      }|j
                  dk(  sJ t        j                  j                  d|       j                         sJ y )NrR   rS   TrT   rW   r   rX   rY   r0   r1   r,   r   r(   r'   )
r=   r]   r   r   r   r"   r   r:   r@   rA   )r'   rB   r   r   rX   r   s         r   test_token_connectr   B  s    zz"	
H @AH #**
 (  
D s"""  ''E'=DDFFFr   c                     |       }t         j                  j                  |dd       t        j                  dddd      }|j                   |d      dd	|it        j                  d
d      }t         j                  j                  d|       j                         rJ |j                  dk(  sJ |j                         ddddgdk(  sJ y )Nr   r   r   rR   rS   TrT   rW   rX   rY   r0   r1   r   rI   connected_otherzDThe third-party account is already connected to a different account.rK   rN   )r   r:   r;   r=   r]   r   r   r   r@   rA   r"   )r'   rB   r   r   r   r   rX   r   s           r   $test_token_connect_already_connectedr   Y  s     J  jeg Nzz"	
H @AH #**
 (  
D $$++D+AHHJJJs"""99; *a
   r   c                 ^    | j                   |d      ddid      }|j                  dk(  sJ y )Nr   rU   rS   r0   r1   i  )r   r"   r   s        r    test_provider_signup_not_pendingr   ~  sC    ;;ABY
 (  D s"""r   )r=   unittest.mockr   django.urlsr   pytest_django.assertsr   allauth.account.modelsr   allauth.socialaccount.modelsr   .allauth.socialaccount.providers.base.constantsr   r   r#   rF   rP   r^   re   rh   rs   rz   r|   r   r   r   r   r   r   r   r    r   r   <module>r      s       4 / 6 F
H	##HL
P..HH
HT6!AH"#JY0G."J#r   