
    e!                        d dl Z d dlZd dlZ ej        d           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mZmZmZmZmZ ej        j        Zej                            de j        vd	
          Zeej                            dddg          d                         Zeed                         Zeed                         Zeed                         Zeej                            dd ej        e          j         dz  !                                g          d                         Z"ed             Z#ed             Z$dS )    N
playwright)expect)config)state)Markdown)run_panel_serveserve_component	unix_onlywait_for_port
wait_until
write_filePANEL_TEST_AUTHzAPANEL_TEST_AUTH environment variable is required to run this test)reasonprefix c                    d}t          || j                   t          j                            | j                  d d         }dddddd| j        g}|r| d	| }|d
|gz  }t          |          5 }t          |j                  }|	                    d| d	|            |
                    d                              d           |
                    d                              d           |                    d                              d           t          |
                    d                                        dd           d d d            d S # 1 swxY w Y   d S )NGimport panel as pn; pn.pane.Markdown(pn.state.user).servable(title='A')--port0--basic-authmy_password--cookie-secretsecret/z--prefixhttp://localhost:input[name="username"]	test_userinput[name="password"]buttonTforce	.markdown'  timeout)r   fileospathbasenamenamer   r   stdoutgotolocatorfillget_by_roleclickr   to_have_text)py_filepager   appapp_namecmdpports           8lib/python3.11/site-packages/panel/tests/ui/test_auth.pytest_basic_authr;      s    TCsGL!!!w--crc2HS.-9JHV]Vb
cC $))x))
F##			 SQX&&		7d77X77888-..33K@@@-..33MBBB""((t(444t||K(())66{E6RRRS S S S S S S S S S S S S S S S S Ss   1C EE"%E"c                    d}t          || j                   t          j                            dd          }t          j        d         }t          j        d         }t          j        d         }t          j        d         }t          j        d         }t          j        d	         }	t          j        d
         }
d|ddd|d|d|d|d|| j        g}t          |          5 }t          |j                  }|	                    d|            |
                    d                              |	           |
                    d                              |
           |
                    d                              d           t          |
                    d                                        |	d           d d d            d S # 1 swxY w Y   d S )Nr   	OKTA_PORT5703OAUTH_COOKIE_SECRETOAUTH_ENCRYPTION_KEYOKTA_OAUTH_KEYOKTA_OAUTH_SECRETOKTA_OAUTH_EXTRA_PARAMSOKTA_OAUTH_USEROKTA_OAUTH_PASSWORDr   --oauth-providerokta--oauth-key--oauth-secretr   --oauth-encryption-key--oauth-extra-paramsr   r   r   input[type="submit"]Tr!   r#   r$   r%   )r   r'   r(   environgetr+   r   r   r,   r-   r.   r/   r1   r   r2   )r3   r4   r5   r9   cookie_secretencryption_key	oauth_keyoauth_secretextra_params	okta_userokta_passwordr7   r8   s                r:   test_okta_oauthrV   -   s    TCsGL!!!:>>+v..DJ45MZ 67N
+,I:12L:78L
,-IJ45M$*FM9,(9= .2H,	C 
		 QQX&&		,d,,----..33I>>>-..33MBBB+,,222>>>t||K(())66y%6PPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   CGG	G	c                    d}t          || j                   t          j                            dd          }t          j        d         }t          j        d         }t          j        d         }t          j        d         }t          j        d         }t          j        d	         }	d
|ddd|d|d|d|| j        g}
t          |
          5 }t          |j                  }|	                    d|            |
                    d                              |           |
                    d                              d           t          |
                    d                                        dd           |
                    d                              |	           |
                    d                              d           |
                    d                              d           t          |
                    d                                        d| d           d d d            d S # 1 swxY w Y   d S )Nr   
AZURE_PORT5702r?   r@   AZURE_OAUTH_KEYAZURE_OAUTH_SECRETAZURE_OAUTH_USERAZURE_OAUTH_PASSWORDr   rF   azurerH   rI   r   rJ   r   zinput[type="email"]rL   Tr!   valuezSign inzinput[type="password"]r#   z	live.com#r$   r%   )r   r'   r(   rM   rN   r+   r   r   r,   r-   r.   r/   r1   r   to_have_attributer2   )r3   r4   r5   r9   rO   rP   rQ   rR   
azure_userazure_passwordr7   r8   s               r:   test_azure_oauthrc   L   sg    TCsGL!!!:>>,//DJ45MZ 67N
,-I:23L./JZ 67N$*G]I,(9= .	C 
		 `QX&&		,d,,---*++00<<<+,,222>>>t||23344FFwPYZZZ-..33NCCC+,,222>>>+,,222>>>t||K(())667O:7O7OY^6___` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `s   E(H<<I I c                    d}t          || j                   t          j                            dd          }t          j        d         }t          j        d         }t          j        d         }t          j        d         }t          j        d         }t          j        d	         }	t          j        d
         }
d|ddd|d|d|d|d|| j        g}t          |          5 }t          |j                  }|	                    d|            |
                    d                              |	           |
                    d                              |
           |                    ddd                              d           t          |
                    d                                        |	d           d d d            d S # 1 swxY w Y   d S )Nr   
AUTH0_PORT5701r?   r@   AUTH0_OAUTH_KEYAUTH0_OAUTH_SECRETAUTH0_OAUTH_EXTRA_PARAMSAUTH0_OAUTH_USERAUTH0_OAUTH_PASSWORDr   rF   auth0rH   rI   r   rJ   rK   r   r   r   r    ContinueT)r+   exactr!   r#   r$   r%   )r   r'   r(   rM   rN   r+   r   r   r,   r-   r.   r/   r0   r1   r   r2   )r3   r4   r5   r9   rO   rP   rQ   rR   rS   
auth0_userauth0_passwordr7   r8   s                r:   test_auth0_oauthrq   n   s    TCsGL!!!:>>,//DJ45MZ 67N
,-I:23L:89L./JZ 67N$*G]I,(9= .2H,	C 
		 RQX&&		,d,,----..33J???-..33NCCC
$??EEDEQQQt||K(())66z56QQQR R R R R R R R R R R R R R R R R Rs   C GGGlogout_templatezlogout.htmlc                    d}t          || j                   t          j                            | j                  d d         }dddddd| j        g}|r|d	t          |          gz  }t          |          5 }t          |j	                  }|
                    d
| d|            |                    d                              d           |                    d                              d           |                    d                              d           t          |                    d                                        dd           d |j                                        D             }d|v sJ d|v sJ |
                    d
| d           |                                |rdndk    sJ d |j                                        D             }d|vsJ d|vsJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   r   r   z--logout-templater   r   r   r   r   r    Tr!   r#   r$   r%   c                     g | ]
}|d          S r+    .0cookies     r:   
<listcomp>z*test_basic_auth_logout.<locals>.<listcomp>       GGGf6&>GGG    userid_token/logoutzTest Logout PagezPanel App | Logoutc                     g | ]
}|d          S ru   rv   rw   s     r:   rz   z*test_basic_auth_logout.<locals>.<listcomp>   r{   r|   )r   r'   r(   r)   r*   r+   strr   r   r,   r-   r.   r/   r0   r1   r   r2   contextcookiestitle)	r3   r4   rr   r5   r6   r7   r8   r9   r   s	            r:   test_basic_auth_logoutr      sv    TCsGL!!!w--crc2HS.-9JHV]Vb
cC ;#S%9%9::			 )QX&&		7d77X77888-..33K@@@-..33MBBB""((t(444t||K(())66{E6RRRGG0D0D0F0FGGG    W$$$$		3d333444zz||o _ 2 2K_````GG0D0D0F0FGGGW$$$$((((()) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   7E5G::G>G>c                 B   d }t          d          }t          d          }t          j        |          5  t          | ||ddddd	
          \  }}|                     d                              d           |                     d                              d           |                     d                              d           t          |                     d                              d                    	                    d           | 
                    d| d           | 
                    d| d           |                     d                              d           |                     d                              d           |                     d                              d           t          |                     d                              d                    	                    d           d d d            d S # 1 swxY w Y   d S )Nc                 F    |dk    r| d         }|dk    rdS |dk    rdS dS dS )	Nr   r}   Az/aBz/bFTrv   )	user_infourir}   s      r:   	authorizez3test_authorize_callback_redirect.<locals>.authorize   s;    #::V$Ds{{ttutr|   Page AzPage Bauthorize_callbackIndex)abr   r   	my_secretF
basic_authrO   waitr   r   r   r    Tr!   r#   divzPage A
r   r   z/loginr   zPage B
)r   r   setr	   r.   r/   r0   r1   r   r2   r-   )r4   r   app1app2_r9   s         r:    test_authorize_callback_redirectr      sh   	 	 	 HDHD	y	1	1	1 R R!$dG(L(LYf  wB  IN  O  O  O4-..33C888-..33MBBB""((t(444t||K((007788EEjQQQ		3d333444		2d222333-..33C888-..33MBBB""((t(444t||K((007788EEjQQQ#R R R R R R R R R R R R R R R R R Rs   GHHHc                    g g cfd}fd}t          j        |          5  t          | |ddd          \  }}|                     d                              d	           |                     d
                              d           |                     d                              d           t          fd|            d         d	k    sJ t                    dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                 >                         | d                    dS )Nr}   F)append)r   r   userss     r:   r   z1test_global_authorize_callback.<locals>.authorize   s    Yv&'''ur|   c                  `                          t          j                   t          d          S )Nr   )r   r   r}   r   )sessionss   r:   r5   z+test_global_authorize_callback.<locals>.app   s%    
###!!!r|   r   r   r   Fr   r   r   r   r    Tr!   c                  *    t                     dk    S )N   )len)r   s   r:   <lambda>z0test_global_authorize_callback.<locals>.<lambda>   s    3u::? r|   r   )	r   r   r	   r.   r/   r0   r1   r   r   )r4   r   r5   r   r9   r   r   s        @@r:   test_global_authorize_callbackr      s   "OE8    " " " " " 
y	1	1	1 	" 	"!$U`glmmm4-..33C888-..33MBBB""((t(444****D111Qx38}}!!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   CC<<D D )%r(   pathlibpytestimportorskipplaywright.sync_apir   panel.configr   panel.io.stater   
panel.paner   panel.tests.utilr   r	   r
   r   r   r   markui
pytestmarkskipifrM   
auth_checkparametrizer;   rV   rc   rq   Path__file__parentabsoluter   r   r   rv   r|   r:   <module>r      s`   				    L ! ! ! & & & & & &                                       
 [^
[ 1 C  MP  Q  Q
 B>22S S 32 S* Q Q  Q: ` `  `@ R R  R: *TLGL4J4J4QTa4a3k3k3m3m,noo) ) po )@ !R !R !RH " " " " "r|   