
    ҫfi.                     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	 d dl
mZmZ d dlmZ d Zd Zd	 Ze j$                  j&                  d
        Ze j$                  j&                  e j$                  j+                  ej,                  j/                  d       d      d               Zy)    N)	TikTokApiProxyProvider)
RoundRobinRandom	Algorithm)ProxyProxyFormat)Listc                      t        ddddd      } | j                  t        j                        }|d   dk(  sJ |d	   dk(  sJ |d
   dk(  sJ y)z0Test proxy format conversion with authenticationztest-1userpassz192.168.1.1  idusernamepasswordproxy_addressportserverzhttp://192.168.1.1:8080r   r   N)r	   formatr
   
PLAYWRIGHTproxyresults     Y/home/homepc/tiktok-worker/venv/lib/python3.12/site-packages/tests/test_proxy_provider.py&test_proxy_format_playwright_with_authr      sk    #E \\+001F(8888*'''*'''    c                      t        ddddd      } | j                  t        j                        }|d   dk(  sJ d|vs|j	                  d      dk(  sJ d	|vs|j	                  d	      dk(  sJ y
y
)z3Test proxy format conversion without authenticationztest-2 z10.0.0.1i8  r   r   zhttp://10.0.0.1:3128r   r   N)r	   r   r
   r   getr   s     r   )test_proxy_format_playwright_without_authr"      s    b2ZdE \\+001F(5555V#vzz*'='CCCV#vzz*'='CCC'C#r   c                      ddl m}   G d d|       } |       }t               }t               }||_        ||_        |j                  |u sJ |j
                  |u sJ y)zATest that proxy provider and algorithm are stored in API instancer   r   c                       e Zd Zd Zy)1test_proxy_provider_storage.<locals>.MockProviderc                      t        ddd      gS N1z	127.0.0.1r   )r   r   r   r	   selfs    r   _fetch_proxiesz@test_proxy_provider_storage.<locals>.MockProvider._fetch_proxies,       S$GHHr   N__name__
__module____qualname__r,    r   r   MockProviderr%   +       	Ir   r3   N)proxyprovidersr   r   r   _proxy_provider_proxy_algorithm)r   r3   provideralgoapis        r   test_proxy_provider_storager;   '   sb    ,I} I ~H<D
+C"CC(***4'''r   c            	        K    G d dt               }  |        }ddig}t        j                  j                  d      }t	        j
                  t        d      5  t               4 d{   }|j                  d	|||r|gndd
       d{    ddd      d{    ddd       y7 @7 7 # 1 d{  7  sw Y   !xY w# 1 sw Y   yxY ww)z?Test that using both proxies and proxy_provider raises an errorc                       e Zd Zd Zy)?test_cannot_use_both_proxies_and_provider.<locals>.MockProviderc                      t        ddd      gS r'   r)   r*   s    r   r,   zNtest_cannot_use_both_proxies_and_provider.<locals>.MockProvider._fetch_proxies?   r-   r   Nr.   r2   r   r   r3   r>   >   r4   r   r3   r   zhttp://proxy.example.com:8080ms_tokenzCannot use both)matchN   T)num_sessionsproxiesproxy_provider	ms_tokensheadless)	r   osenvironr!   pytestraises
ValueErrorr   create_sessions)r3   r8   rD   r@   r:   s        r   )test_cannot_use_both_proxies_and_providerrN   :   s     I} I ~H9:;Gzz~~j)H	z):	; ; 	 	#%%'(08*d &   	 	 		 	 	 	 sx   ACC'B((C+B.
B*B.CB,C	C(C*B.,C.C 	4B75C 	<CCCWEBSHARE_API_KEYz.Requires WEBSHARE_API_KEY environment variable)reasonc                    K   ddl m}  t        j                  d      j	                         d   } | t
        j                  j                  d            }t
        j                  j                  d      }t               4 d{   }|j                  d	||r|gndd
       d{    |j                  d   }|j                  j                  d       d{    |j                  j                          d{   }d|j                         v sd|j                         v sJ d       ||vs
J d|        ddd      d{    y7 7 7 t7 T7 # 1 d{  7  sw Y   yxY ww)zKTest that proxy is actually being used by checking IP differs from local IPr   )Websharezhttps://httpbin.org/iporiginrO   )api_keyr@   NrB   T)rC   rE   rF   rG   zhttpbin.orgzPage didn't load httpbin.orgz,Proxy not being used - detected our own IP: )r5   rR   requestsr!   jsonrH   rI   r   rM   sessionspagegotocontentlower)rR   our_ipr8   r@   r:   sessionpage_contents          r   test_proxy_actually_usedr_   Q   sc     (\\2388:8DF

/A BCHzz~~j)H{ C Cc!!#$,xj$	 " 
 	
 	
 ,,q/ll 8999$\\1133 \//11XASASAU5U	*)	*U ,&	C9&B	C&#C C C	
 	:3C C C Cs~   B E&EE&E$E	%1EE!E8E9=E6E&EE&	EEEE&E#EE#E&)rJ   rH   rU   r   r5   r   proxyproviders.algorithmsr   r   r   proxyproviders.models.proxyr	   r
   typingr   r   r"   r;   markasynciorN   skipifrI   r!   r_   r2   r   r   <module>rf      s     	   ( C C : ( 	D(&  , 


)**;  C	 
Cr   