
    0`Ϫ                        d dl mZmZmZmZ d dlZd dlZd dlZd dlm	Z	m
Z
 d dlZd dlZd dlZd dlmZmZ d dlmZmZ 	 d dlmZmZ n# e$ r d dlmZmZ Y nw xY wd Zdtd	Zd
 Zd Zd Zd Zej                            dd eej         d           eej         dd          f ej!        d           ej!        d          fg          d             Z"ej                            dd ej!        d          f ej!        d          dfg          d             Z#d Z$ej                            dd eej         d           eej         dd          f ej!        d           ej!        d          fg          d             Z%ej                            dd eej         d           eej         dd          f ej!        d           ej!        d          fg          d             Z&d Z'ej                            dej         dfi ej         dfi dfej         dfi ej         d fi d!fej         dfi ej(        dfi d!fej         dfd"diej         dfi dfg          d#             Z)d$ Z*d% Z+d& Z,d' Z-d( Z.d) Z/d* Z0d+ Z1d, Z2d- Z3d. Z4d/ Z5d0 Z6d1 Z7d2 Z8d3 Z9d4 Z:d5 Z;d6 Z<d7 Z=d8 Z>d9 Z?d: Z@d; ZAd< ZBej        C                    ejD        d=>          d?             ZEd@ ZFdA ZGdB ZHdC ZIdD ZJdE ZKdF ZLdG ZMdH ZNdI ZOdJ ZPdK ZQdL ZRdM ZSdN ZTdO ZUdP ZVdQ ZWdR ZXdS ZYdT ZZdU Z[dV Z\dW Z]ej                            dXdY          dZ             Z^d[ Z_ej                            dXd\          d]             Z`d^ Zad_ Zbd` Zcej                            daej         dbddcfej(        dddedfdgdhfejd        didjdkdldmidndoidpdqfg          dr             Zeds ZfdS )u    )absolute_importprint_functiondivisionunicode_literalsN)BufferedReaderBytesIO)ConnectionError	HTTPError)BaseResponseResponse)patchMockc                      t          t          j        j                  dk    sJ t          t          j                  dk    sJ d S )Nr   )len	responses_default_mock_matchescalls     8lib/python3.11/site-packages/responses/test_responses.pyassert_resetr      sB    y&/00A5555y1$$$$$$r   
text/plainc                     | j         dk    sJ | j        dk    sJ || j        d         |k    sJ nd| j        vsJ | j        |k    sJ d S )N   OKContent-Type)status_codereasonheaderstext)respbodycontent_types      r   assert_responser%      sv    s"""";$|N+|;;;;;T\11119r   c                     t          | d          s
J d            t          | j        d          s
J d            t          | j        d          |k    s
J d            d S )NrequestzMissing requestparamsz3Missing params on request that responses should addzIncorrect parameters)hasattrr'   getattr)r"   expecteds     r   assert_paramsr,   %   s    4##66%6666h  = =<= = = 4<**h6668N66666r   c                  `    t           j        d             }  |              t                       d S )Nc                  d   t          j        t           j        dd           t          j        d          } t          | d           t          t           j                  dk    sJ t           j        d         j        j	        dk    sJ t           j        d         j
        j        dk    sJ t          j        d          } t          | d           t          t           j                  d	k    sJ t           j        d         j        j	        d
k    sJ t           j        d         j
        j        dk    sJ d S Nhttp://example.com   testr#   test   r   http://example.com/http://example.com?foo=bar   http://example.com/?foo=bar)r   addGETrequestsgetr%   r   r   r'   urlresponsecontentr"   s    r   runztest_response.<locals>.run.   s   im%9HHHH|011f%%%9?##q((((q!)-1FFFFFq!*2g====|899f%%%9?##q((((q!)-1NNNNNq!*2g======r   r   activater   rA   s    r   test_responserE   -   s9    > > > CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                      d} t          j        t           j        | dd           t          j        |           }t          |d           d S )Nz,http://example.org/foo.bar%3D%2F%28%29%5B%5Dzit worksr   r#   statusr   r9   r:   r;   r<   r%   r=   r"   s     r   rA   z"test_response_encoded.<locals>.runB   sI     =imSz#FFFF|C  j)))))r   rB   rD   s    r   test_response_encodedrL   A   s9    * * * CEEENNNNNr   c                  0    t           j        d             } d S )Nc                     t          j        t          j        t           j        d                     t	          j        d          } t          | d           t          t           j                  dk    sJ t           j        d         j	        j
        dk    sJ t	          j        d          } t          | d           t          t           j                  dk    sJ t           j        d         j	        j
        d	k    sJ d S )
Nr0   methodr=    r4   r   r5   r6   r7   r8   )r   r9   r   r:   r;   r<   r%   r   r   r'   r=   r@   s    r   rA   z(test_response_with_instance.<locals>.runO   s    im9MNNN	
 	
 	
 |011b!!!9?##q((((q!)-1FFFFF|899b!!!9?##q((((q!)-1NNNNNNNr   r   rC   rD   s    r   test_response_with_instancerS   N   s.    O O O O Or   zoriginal,replacement)http://example.com/tworT   rT   rO   testtworP   r=   r#   zhttp://example\.com/twoc                 j     t           j         fd            } |             t                       d S )Nc                  f   t          j        t           j        dd           t          t                    rt          j                   n!t          j        t           j        d           t          j        t           j        dd           t          j        t           j        t          j        d          d           t          t                    rt          j                   n!t          j        t           j        d           t          j	        d	          } t          | d           d S )
Nhttp://example.com/onetest1r2   test2http://example.com/threetest3http://example\.com/fourrU   rT   )r   r9   r:   
isinstancer   recompilereplacer;   r<   r%   r"   originalreplacements    r   rA   ztest_replace.<locals>.runp   s   im%=GLLLLh-- 	AM(####M)-@@@@im%?gNNNNM2:&ABB	
 	
 	
 	
 k<00 	Jk****im[yIIII|455i(((((r   rB   rd   re   rA   s   `` r   test_replacerg   _   sL    " ) ) ) ) ) )* CEEENNNNNr   rY   zhttp://example\.com/onec                 j     t           j         fd            } |             t                       d S )Nc                     t          j        t           j                   t          j        t
                    5 } t          j        t           j                   d d d            n# 1 swxY w Y   dz  t          | j                  v sJ d S )Nz%Response is not registered for URL %s)	r   r9   r:   pytestraises
ValueErrorrb   strvalue)excinford   re   s    r   rA   ztest_replace_error.<locals>.run   s    imX...]:&& 	:'im[999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:6DMI
 I
 
 
 
 
 
 
s    A&&A*-A*rB   rf   s   `` r   test_replace_errorrp      sL     
 
 
 
 
 
 CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                  L   t          j        t          t           j        d                     t	          j        t                    5 } t          j        t          t           j        d                     d d d            n# 1 swxY w Y   dt          | j	                  v sJ d S )NrY   rO   rT   z9Response is not registered for URL http://example.com/two)
r   r9   r   r:   rj   rk   rl   rb   rm   rn   )ro   s    r   rA   z/test_replace_response_object_error.<locals>.run   s    him9QRRRSSS]:&& 	'	3KLLL  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 KcMO
 O
 
 
 
 
 
 
s   .BBBrB   rD   s    r   "test_replace_response_object_errorrs      s9    
 
 
 CEEENNNNNr   c                 j     t           j         fd            } |             t                       d S )Nc                     t          j        t           j        dd           t          t                    rt          j                   n!t          j        t           j        d           t          t                    rt          j                   n!t          j        t           j        d           t          j        d          } t          | d           d S )NrY   rZ   r2   r[   rU   rT   	r   r9   r:   r_   r   upsertr;   r<   r%   rc   s    r   rA   z test_upsert_replace.<locals>.run   s    im%=GLLLLh-- 	AM(####M)-@@@@k<00 	I[))))Y]KiHHHH|455i(((((r   rB   rf   s   `` r   test_upsert_replacerx      sL    " ) ) ) ) ) )  CEEENNNNNr   c                 f    t           j        fd            } |             t                       d S )Nc                  (   t          j        t           j        dd           t          t                    rt          j                   n!t          j        t           j        d           t          j        d          } t          | d           d S )NrY   rZ   r2   rU   rT   rv   )r"   re   s    r   rA   ztest_upsert_add.<locals>.run   s    im%=GLLLLk<00 	I[))))Y]KiHHHH|455i(((((r   rB   rf   s    ` r   test_upsert_addr{      sF    " 	) 	) 	) 	) 	) CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                     t          j        t           j        d           t          j        t           j        d           t          j        t           j        d           t          j        t           j        t          j        d                     t          j        t           j        t          j        d                     t          j                     t          j        t           j        d           t          j        t          t           j        d                     t          j        t           j        t          j        d                     t          j	        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        d           t          j	        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        d           t          j	        t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )	Nzhttp://example.com/zerorY   rT   zhttp://example\.com/threer^   rO   r\   zhttp://example.com/four)r   r9   r:   r`   ra   purgeremover   rj   rk   r	   r;   r<   r   r   r   rA   ztest_remove.<locals>.run   st   im%>???im%=>>>im%=>>>imRZ0L%M%MNNNimRZ0K%L%LMMM



(@AAA<UVVVWWW
3N(O(OPPP]?++ 	4 	4L2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4-...]?++ 	3 	3L1222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3/000]?++ 	4 	4L2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s6   )F

FFG##G'*G'H==IIrB   rD   s    r   test_remover      s9    4 4 4( CEEENNNNNr   z$args1,kwargs1,args2,kwargs2,expectedaTbFmatch_querystringc                 ^    t          | i |}t          |i |}||k    |u sJ ||k    |usJ d S N)r   )args1kwargs1args2kwargs2r+   o1o2s          r   test_response_equalityr     sX      
u	(	(	(B	u	(	(	(B"H!!!!"HX%%%%%%r   c                  h    t          t          j        d          } d}| |k    du sJ | |k    du sJ d S )Nr   rO   rm   FT)r   r   r:   )r   r   s     r   (test_response_equality_different_objectsr   &  sK    	Y]	4	4	4B	B"H"Hr   c                  `    t           j        d             }  |              t                       d S )Nc                     t          j        t           j        d           t          j        t
                    5  t          j        d           d d d            n# 1 swxY w Y   t          t           j	                  dk    sJ t           j	        d         j
        j        dk    sJ t          t           j	        d         j                  t
          u sJ t           j	        d         j        j
        sJ d S )Nr0   zhttp://example.com/foor4   r   )r   r9   r:   rj   rk   r	   r;   r<   r   r   r'   r=   typer>   r   r   r   rA   z"test_connection_error.<locals>.run.  s   im%9:::]?++ 	3 	3L1222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 9?##q((((q!)-1IIIIIIOA&/00OCCCCq!*222222s   AA!ArB   rD   s    r   test_connection_errorr   -  s9    	3 	3 	3 CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                  &   d} t          j        t           j        | dd           t          j        d          }t          |d           t          j        d          }t          |d           t          j        d          }t          |d           d S )Nz!http://example.com?test=1&foo=barTr1   )r   r#   r3   z!http://example.com?foo=bar&test=1z"http://example.com/?foo=bar&test=1rJ   rK   s     r   rA   z#test_match_querystring.<locals>.run?  s    1imSDwOOOO|?@@f%%%|?@@f%%%|@AAf%%%%%r   rB   rD   s    r   test_match_querystringr   >  s9    & & & CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                  f   t          j        t           j        ddd           t          j        d          } t          | d           t          j        d          } t          | d           t          j        t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nr0   r1   Tr#   r   r3   r5   zhttp://example.com?query=foo	r   r9   r:   r;   r<   r%   rj   rk   r	   r@   s    r   rA   z)test_match_empty_querystring.<locals>.runO  s    M/gQU	
 	
 	
 	
 |011f%%%|122f%%%]?++ 	9 	9L7888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   B&&B*-B*rB   rD   s    r   test_match_empty_querystringr   N  s9    	9 	9 	9 CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                      t          j        t           j        dd           t          j        t
                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nzhttp://example.com/?test=1Tr   http://example.com/foo/?test=2r   r9   r:   rj   rk   r	   r;   r<   r   r   r   rA   z)test_match_querystring_error.<locals>.run`  s    M74	
 	
 	
 	
 ]?++ 	; 	;L9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   AA!$A!rB   rD   s    r   test_match_querystring_errorr   _  s9    ; ; ; CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                  f   t          j        t           j        t          j        d          dd           t          j        d          } t          | d           t          j        t           j        t          j        d          dd           t          j        d	          } t          | d           d
S )^Note that `match_querystring` value shouldn't matter when passing a
        regular expression http://example\.com/foo/\?test=1rZ   Tr   zhttp://example.com/foo/?test=1 http://example\.com/foo/\?test=2r[   Fr   N)r   r9   r:   r`   ra   r;   r<   r%   r@   s    r   rA   z)test_match_querystring_regex.<locals>.runn  s    
 	MJ:;;"		
 	
 	
 	
 |<==g&&&MJ:;;#		
 	
 	
 	
 |<==g&&&&&r   rB   rD   s    r   test_match_querystring_regexr   m  s9    ' ' '0 CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                     t          j        t           j        t          j        d          d           t          j        t                    5  t          j	        d           ddd           n# 1 swxY w Y   t          j        t           j        t          j        d          d           t          j        t                    5  t          j	        d           ddd           dS # 1 swxY w Y   dS )	r   r   Tr   zhttp://example.com/foo/?test=3Nr   Fzhttp://example.com/foo/?test=4)
r   r9   r:   r`   ra   rj   rk   r	   r;   r<   r   r   r   rA   z/test_match_querystring_error_regex.<locals>.run  sc   
 	MJ:;;"	
 	
 	
 	
 ]?++ 	; 	;L9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	MJ:;;#	
 	
 	
 	
 ]?++ 	; 	;L9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s$   A..A25A2C''C+.C+rB   rD   s    r   "test_match_querystring_error_regexr     s9    ; ; ;, CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                     t          j        t           j        dd           t          j        d          } t          | d           t          j        t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nzhttp://example.com?test=1r1   r2   r3   zhttp://example.com/?test=2r   r@   s    r   rA   z2test_match_querystring_auto_activates.<locals>.run  s    im%@wOOOO|788f%%%]?++ 	7 	7L5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   BBBrB   rD   s    r   %test_match_querystring_auto_activatesr     9    7 7 7 CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                  ^   t          j        t           j        dd           t          j        t
                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t
                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nzhttp://example.com?foo=1&bar=2r1   r2   zhttp://example.com/?foo=1&baz=2zhttp://example.com/?bar=2&fez=1r   r   r   r   rA   z/test_match_querystring_missing_key.<locals>.run  s   im%EGTTTT]?++ 	< 	<L:;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ]?++ 	< 	<L:;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s#   AA #A  B""B&)B&rB   rD   s    r   "test_match_querystring_missing_keyr     s9    < < < CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                      d} t          j        t           j        | d           t          j        |           }t          |d           d S )Nr5   r3   r2   rJ   rK   s     r   rA   z$test_accept_string_body.<locals>.run  sE    #imSv6666|C  f%%%%%r   rB   rD   s    r   test_accept_string_bodyr     s9    & & & CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                  .   d} d}t          j        t           j        |ddi           t          j        |          }t          |d|            d}t          j        t           j        |g            t          j        |          }t          |d|            d S )	Napplication/jsonr5   messagesuccess)jsonz{"message": "success"}zhttp://example.com/1/z[]rJ   )r$   r=   r"   s      r   rA   z"test_accept_json_body.<locals>.run  s    )#imS	9/EFFFF|C  6EEE%imSr2222|C  dL11111r   rB   rD   s    r   test_accept_json_bodyr     s9    2 2 2 CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                      d} t          j        t           j        | dd            t          j        |           }t          |dd            d S )Nr5   r3   )r#   r$   r$   rJ   rK   s     r   rA   z!test_no_content_type.<locals>.run  sL    #imSvDIIII|C  f4888888r   rB   rD   s    r   test_no_content_typer     s9    9 9 9 CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                      d} t          j        t           j        | dd           t          j        |           }|j        dk    sJ |j        J d S )Nr5   r3   i  rH   )r   r9   r:   r;   r<   r   r   rK   s     r   rA   z'test_arbitrary_status_code.<locals>.run  sY    #imSvcBBBB|C  3&&&&{"""""r   rB   rD   s    r   test_arbitrary_status_coder     s9    # # # CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                  &   d} t          d          }t          j        t          j        | |           t	          j        t                     5 }t          j        |            d d d            n# 1 swxY w Y   t          |j	                  dk    sJ d S )Nr0   z
HTTP Error)
r
   r   r9   r:   rj   rk   r;   r<   rm   rn   )r=   	exceptionHEs      r   rA   z1test_throw_connection_error_explicit.<locals>.run  s    "l++	imS)444]9%% 	L	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 28}},,,,,,s   A,,A03A0rB   rD   s    r   $test_throw_connection_error_explicitr     s9    - - - CEEENNNNNr   c                      ddddddddfd	t           j        fd
            }  |              t                       d S )N   test callback  Bad Requestbarr   13)foor   Content-Lengthr5   c                     fS r   r   r'   r#   r    rI   s    r   request_callbackz'test_callback.<locals>.request_callback      &&r   c                  ~   t          j        t           j                   t          j                  } | j        dk    sJ | j        k    sJ | j        k    sJ d| j                            d          k    sJ d| j                            d          k    sJ d| j                            d          k    sJ d S )Ntest callbackr   r   r   r   r   r   	r   add_callbackr:   r;   r<   r!   r   r   r    r"   r   r   rI   r=   s    r   rA   ztest_callback.<locals>.run  s    y}c3CDDD|C  yO++++6)))){f$$$$((//////!T\%5%5n%E%EEEEEt|''(899999999r   rB   rA   r#   r    r   r   rI   r=   s    @@@@@@r   test_callbackr   
  s    DFF* G
  C' ' ' ' ' ' ' : : : : : : : : CEEENNNNNr   c                      t                      dfdt          j        fd            }  |              t                       d S )Nr5   c                     S r   r   )r'   results    r   r   z8test_callback_exception_result.<locals>.request_callback+  s    r   c                      t          j        t           j                   t          j        t
                    5 } t          j                   d d d            n# 1 swxY w Y   | j        u sJ d S r   	r   r   r:   rj   rk   	Exceptionr;   r<   rn   )er   r   r=   s    r   rA   z+test_callback_exception_result.<locals>.run.  s    y}c3CDDD]9%% 	L	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 w&         AA #A r   r   rC   r   )rA   r   r   r=   s    @@@r   test_callback_exception_resultr   '  sy    [[F
C     ! ! ! ! ! ! ! CEEENNNNNr   c                      t                      dfdt          j        fd            }  |              t                       d S )Nr5   c                     di fS )Nr   r   )r'   r#   s    r   r   z6test_callback_exception_body.<locals>.request_callback?  s    Rr   c                      t          j        t           j                   t          j        t
                    5 } t          j                   d d d            n# 1 swxY w Y   | j        u sJ d S r   r   )r   r#   r   r=   s    r   rA   z)test_callback_exception_body.<locals>.runB  s    y}c3CDDD]9%% 	L	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 w$r   r   )rA   r#   r   r=   s    @@@r   test_callback_exception_bodyr   ;  sy    ;;D
C            CEEENNNNNr   c                      dddddidfdt           j        fd            }  |              t                       d S )	Nr   r   r   r   r   r5   c                     fS r   r   r   s    r   r   z7test_callback_no_content_type.<locals>.request_callbackV  r   r   c                      t          j        t           j        d            t          j                  } | j        dk    sJ | j        k    sJ | j        k    sJ d| j        v sJ d| j        vsJ d S )Nr   r   r   r   r   r   s    r   rA   z*test_callback_no_content_type.<locals>.runY  s    y}c3CRVWWWW|C  yO++++6)))){f$$$$$$$$T\111111r   rB   r   s    @@@@@@r   test_callback_no_content_typer   O  s    DFFenG
C' ' ' ' ' ' ' 2 2 2 2 2 2 2 2 CEEENNNNNr   c                  l    d t           j        fd            }  |              t                       d S )Nc                     dddidfS )Nr   r   r      foor   r'   s    r   r   z9test_callback_content_type_dict.<locals>.request_callbackh  s    /0
 	
r   c                      t          j        dd           t          j        d          } | j        dk    sJ | j        d         dk    sJ d S Nr:   zhttp://mockhost/.foo)callbackr   zcontent-typer   r   r   r;   r<   r!   r    r"   r   s    r   rA   z,test_callback_content_type_dict.<locals>.runo  _    u&<GWXXXX|233yE!!!!|N+/AAAAAAAr   rB   rA   r   s    @r   test_callback_content_type_dictr   g  Z    
 
 
 B B B B B CEEENNNNNr   c                  l    d t           j        fd            }  |              t                       d S )Nc                     ddgdfS )Nr   )r   r   r   r   r   s    r   r   z:test_callback_content_type_tuple.<locals>.request_callback{  s    12
 	
r   c                      t          j        dd           t          j        d          } | j        dk    sJ | j        d         dk    sJ d S r   r   r   s    r   rA   z-test_callback_content_type_tuple.<locals>.run  r   r   rB   r   s    @r    test_callback_content_type_tupler   z  r   r   c                  `    t           j        d             }  |              t                       d S )Nc                     t          j        d          } t          j        t          j        | d           t          j        d          }t          |d           t          j        d          }t          |d           t          j        d          }t          |d           t          j	        t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )	Nzhttps?://(.*\.)?example.comr1   r2   r0   r3   zhttps://example.comzhttps://uk.example.comzhttps://uk.exaaample.com)r`   ra   r   r9   r:   r;   r<   r%   rj   rk   r	   rK   s     r   rA   z(test_regular_expression_url.<locals>.run  s   j788imSw7777|011f%%%|122f%%%|455f%%%]?++ 	5 	5L3444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   ;CC!$C!rB   rD   s    r   test_regular_expression_urlr     s9    5 5 5  CEEENNNNNr   c                  D    t           j        d             }  |              d S )Nc                     d} t          j        t           j        | d           dg G fddt          j        j                  t          j                    }|                    d                        |                    | d	          }d         d
k    sJ t          j                    }|                    d                        |                    |           }t          |d           d S )Nr0   r1   r2   r   c                   $     e Zd Z fdZ xZS )6test_custom_adapter.<locals>.run.<locals>.DummyAdapterc                 Z    dxx         dz  cc<    t          |           j        |i |S )Nr   r4   )supersend)selfr   kDummyAdapter	__class__r   s      r   r  z;test_custom_adapter.<locals>.run.<locals>.DummyAdapter.send  s:    aA5u\4005q>A>>>r   )__name__
__module____qualname__r  __classcell__)r
  r	  r   s   @r   r	  r    sC        ? ? ? ? ? ? ? ? ? ? ?r   r	  zhttp://Fallow_redirectsr4   r3   )
r   r9   r:   r;   adaptersHTTPAdapterSessionmountr<   r%   )r=   sessionr"   r	  r   s      @@r   rA   z test_custom_adapter.<locals>.run  s	   "imSw7777	? 	? 	? 	? 	? 	? 	? 	?8,8 	? 	? 	? "$$i000{{3{66Qx1}}}} "$$i000{{3f%%%%%r   rR   rD   s    r   test_custom_adapterr    s0    & & &2 CEEEEEr   c                  <    d }  |              t                       d S )Nc                     t           j        5  t          j        t           j        dd           t	          j        d          } t          | d           t          t           j                  dk    sJ t           j        d         j	        j
        dk    sJ t           j        d         j        j        dk    sJ t	          j        d          } t          | d           t          t           j                  d	k    sJ t           j        d         j	        j
        d
k    sJ t           j        d         j        j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S r/   )r   mockr9   r:   r;   r<   r%   r   r   r'   r=   r>   r?   r@   s    r   rA   z.test_responses_as_context_manager.<locals>.run  s   ^ 	B 	BM)-)=GLLLL< 455DD&)))y''1,,,,?1%-15JJJJJ?1%.6'AAAA< <==DD&)))y''1,,,,?1%-15RRRRR?1%.6'AAAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   D0EEEr   rD   s    r   !test_responses_as_context_managerr    s.    B B B CEEENNNNNr   c                  ~   dd} t          j        |           }t          t          d          r-t          j        |           t          j        |          k    sJ n,t          j        |           t          j        |          k    sJ  |dd           | dd          k    sJ  |d           | d          k    sJ d S )Nc                 
    | |fS r   r   r   r   s     r   test_functionz<test_activate_doesnt_change_signature.<locals>.test_function      1vr   	signaturer4   r7      r   )r   rC   r)   inspectr!  
getargspecr  decorated_test_functions     r   %test_activate_doesnt_change_signaturer'    s       (0??w$$ 
 //73D#4
 4
 
 
 
 
 
 !-00G4F#5
 5
 
 
 
 
 #"1a((MM!Q,?,?????""1%%q)9)9999999r   c                     t          d          d             } t          j        |           }t          t          d          r-t	          j        |           t	          j        |          k    sJ n,t	          j        |           t	          j        |          k    sJ  |             }t          |t                    sJ  |            }t          |t                    sJ d S )Nz
sys.stdoutc                     | S r   r   )mock_stdouts    r   r  z5test_activate_mock_interaction.<locals>.test_function  s    r   r!  )	r   r   rC   r)   r#  r!  r$  r_   r   )r  r&  rn   s      r   test_activate_mock_interactionr+    s   
<   (0??w$$ 
 //73D#4
 4
 
 
 
 
 
 !-00G4F#5
 5
 
 
 
 
 MOOEeT"""""##%%EeT"""""""r   zCannot run in python2)r   c                     dd} t           | j        d<   t           | j        d<   t          j        |           }t	          t
          d          r-t          j        |           t          j        |          k    sJ n,t          j        |           t          j        |          k    sJ  |dd           | dd          k    sJ  |d           | d          k    sJ d S )	Nc                 
    | |fS r   r   r  s     r   r  zMtest_activate_doesnt_change_signature_with_return_type.<locals>.test_function  r   r   returnr   r!  r4   r7   r"  r   )r   __annotations__r   rC   r)   r#  r!  r$  r%  s     r   6test_activate_doesnt_change_signature_with_return_typer0    s      
 /3M!(+)-M!#&'0??w$$ 
 //73D#4
 4
 
 
 
 
 
 !-00G4F#5
 5
 
 
 
 
 #"1a((MM!Q,?,?????""1%%q)9)9999999r   c                       G d dt                     }  |             }|                    dd          |                    dd          k    sJ |                    d          |                    d          k    sJ d S )Nc                   6    e Zd ZddZ ej        e          ZdS )Btest_activate_doesnt_change_signature_for_method.<locals>.TestCaseNc                     | ||fS r   r   )r  r   r   s      r   r  zPtest_activate_doesnt_change_signature_for_method.<locals>.TestCase.test_function  s    !Q<r   r   )r  r  r  r  r   rC   r&  r   r   r   TestCaser3    s9        	  	  	  	  #5)"4]"C"Cr   r5  r4   r7   r"  )objectr&  r  )r5  	test_cases     r   0test_activate_doesnt_change_signature_for_methodr8    s    D D D D D6 D D D 

I,,Q22i6M6MaQR6S6SSSSS,,Q//93J3J13M3MMMMMMMr   c                      ddddidfdt           j        fd            }  |              t                       d S )Nr   r   
set-cookiezsession_id=12345; a=b; c=dr5   c                     fS r   r   r   s    r   r   z/test_response_cookies.<locals>.request_callback%  r   r   c                  T   t          j        t           j                   t          j                  } | j        dk    sJ | j        k    sJ d| j        v sJ | j        d         dk    sJ t          | j        	                                          t          dg          k    sJ d S Nr   
session_id12345
r   r   r:   r;   r<   r!   r   cookiessetkeysr"   r   rI   r=   s    r   rA   z"test_response_cookies.<locals>.run(      y}c3CDDD|C  yO++++6))))t|++++|L)W44444<$$&&''3~+>+>>>>>>>r   rB   rA   r#   r    r   rI   r=   s    @@@@@r   test_response_cookiesrG    s    DF9:G
C' ' ' ' ' ' ' ? ? ? ? ? ? ? CEEENNNNNr   c                      ddddidfdt           j        fd            }  |              t                       d S )Nr   r   r:  z"session_id=12345; a=b; c=d; securer5   c                     fS r   r   r   s    r   r   z6test_response_secure_cookies.<locals>.request_callback<  r   r   c                  T   t          j        t           j                   t          j                  } | j        dk    sJ | j        k    sJ d| j        v sJ | j        d         dk    sJ t          | j        	                                          t          dg          k    sJ d S r=  r@  rD  s    r   rA   z)test_response_secure_cookies.<locals>.run?  rE  r   rB   rF  s    @@@@@r   test_response_secure_cookiesrK  6  s    DFABG
C' ' ' ' ' ' ' ? ? ? ? ? ? ? CEEENNNNNr   c                      ddddgdfdt           j        fd            }  |              t                       d S )Nr   r   )r:  z;1P_JAR=2019-12-31-23; path=/; domain=.example.com; HttpOnly)r:  z3NID=some=value; path=/; domain=.example.com; securer5   c                     fS r   r   r   s    r   r   z8test_response_cookies_multiple.<locals>.request_callbackV  r   r   c                  f   t          j        t           j                   t          j                  } | j        dk    sJ | j        k    sJ t          | j        	                                          t          ddg          k    sJ | j        d         dk    sJ | j        d         dk    sJ d S )Nr   1P_JARNIDz2019-12-31-23z
some=value)
r   r   r:   r;   r<   r!   r   rB  rA  rC  rD  s    r   rA   z+test_response_cookies_multiple.<locals>.runY  s    y}c3CDDD|C  yO++++6))))4<$$&&''3%/@+A+AAAAA|H%8888|E"l222222r   rB   rF  s    @@@@@r   test_response_cookies_multiplerQ  M  s    DFUMG  C' ' ' ' ' ' ' 3 3 3 3 3 3 3 CEEENNNNNr   c                  <    d }  |              t                       dS )z8adds a callback to decorate the response, then checks itc                  <   d } t          j        |           5 }|                    t           j        dd           t	          j        d          }|j        dk    sJ t          |d          sJ t          |d          du sJ 	 d d d            d S # 1 swxY w Y   d S )	Nc                     d| _         | S )NT)
_is_mockedr@   s    r   response_callbackz>test_response_callback.<locals>.run.<locals>.response_callbackk  s    "DOKr   )rV  r0   r1   r2   r3   rU  T)	r   RequestsMockr9   r:   r;   r<   r!   r)   r*   )rV  mr"   s      r   rA   z#test_response_callback.<locals>.runj  s    	 	 	 #6GHHH 	7AEE)-!5GEDDD< 455D9&&&&4.....4..$66666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   A*BBBNr  rD   s    r   test_response_callbackrY  g  s+    
7 
7 
7 CEEENNNNNr   c                      d } dS )z@ Adds the possibility to use actual (binary) files as responses c                     t          j                    5 } t          dd          5 }|                     t           j        d|                                d           t          j        d          }d d d            n# 1 swxY w Y   t          dd          5 }|j        |                                k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz
README.rstrr0   T)r#   stream)	r   rW  openr9   r:   readr;   r<   r!   )rX  outr"   s      r   rA   z#test_response_filebody.<locals>.run}  s   #%% 	/lC(( :Cim%9

SWXXX|$899: : : : : : : : : : : : : : : lC(( /CyCHHJJ...../ / / / / / / / / / / / / / /		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sY   CA
A;/C;A?	?CA?	C C7CC	C
C	CC"CNr   rD   s    r   test_response_filebodyra  z  s    / / / / /r   c                  H    d fd}  |              t                       d S )Nc                     t                      r   )BaseExceptionr   s    r   r   z<test_assert_all_requests_are_fired.<locals>.request_callback  s    oor   c                     t          j        t                    5 } t          j        d          5 }|                    t          j        dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   dt          | j                  v sJ t          j        t          | j                  v sJ t          j        t                    5  t          j                    5 }|                    t          j        dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t                    5  t          j                    5 }|                    t          j        dd           t                      # 1 swxY w Y   	 d d d            n# 1 swxY w Y   t          j        d          5 }|                    t          j        dd           t          |j                  dk    sJ t          j        d           t          |j                  dk    sJ 	 d d d            n# 1 swxY w Y   t          j        d          5 }|                    t          j        dt                                 t          |j                  dk    sJ t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          |j                  dk    sJ 	 d d d            n# 1 swxY w Y   t          j        d          5 }|                    t          j        d           t          |j                  dk    sJ t          j        t                     5  t          j        d           d d d            n# 1 swxY w Y   t          |j                  dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NT)assert_all_requests_are_firedr0   r1   r2   r4   )rj   rk   AssertionErrorr   rW  r9   r:   rm   rn   rl   r   r   r;   r<   r   r   rd  )ro   rX  r   s     r   rA   z/test_assert_all_requests_are_fired.<locals>.run  sJ   ]>** 	Ig'dKKK Iqim%9HHHI I I I I I I I I I I I I I I	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I $s7='9'99999}GM 2 22222 ]>** 	I 	I')) IQim%9HHHI I I I I I I I I I I I I I I	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I
 ]:&& 	# 	#')) #Qim%9HHH ll"# # # # # # # # #	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# #$GGG 	(1EE)-!5GEDDDqz??a''''L-...qz??a'''''		( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( #$GGG 	(1EE)-!5IKKEHHHqz??a''''y)) 3 312223 3 3 3 3 3 3 3 3 3 3 3 3 3 3qz??a'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( #$GGG 	(1NN9=*>@PQQQqz??a''''}-- 3 312223 3 3 3 3 3 3 3 3 3 3 3 3 3 3qz??a'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s  A7#A A7 A$	$A7'A$	(A77A;>A;D/)#DD/D	D/D	 D//D36D3F0'1FF	F0F	 F00F47F4A+III(A"L
K+L+K/	/L2K/	3LL!$L!=AO&N3'O&3N7	7O&:N7	;O&&O*-O*r  r   s    @r   "test_assert_all_requests_are_firedrh    sF      &( &( &( &( &(P CEEENNNNNr   c                      ddd                               t          j        d          fdfd}  |              t                       d S )Nr0   z/1z{0}{1}z^http://example.com(/)?(\d+)?$c                     | j                                       rdS | j                             d          rd}nd}dd                    |          i}d|d fS )N)r   r   r1   z/0r4   r   locationz/{0!s}-  )r=   endswithformat)r'   nredirect_headersfinal_url_paths      r   r   z7test_allow_redirects_samehost.<locals>.request_callback  sl    ;// 
	/## {##D))  *HOOA,>,>?($..r   c                  0   t           j        5  t          j        t           j                   t	          j        d          } | j        dk    sJ t          t           j                  dk    sJ t           j        d         d         j        dk    sJ 	 d d d            n# 1 swxY w Y   t                       t           j        5  t          j        t           j                   t	          j        d          }t          t           j                  dk    sJ t          |j
                  dk    sJ |j        d	k    sJ |j        k    sJ d
 t           j        D             }|g dk    sJ 	 d d d            n# 1 swxY w Y   t                       d S )NFr  rl  r4   r   Tr"  r7   r   c                 (    g | ]}|d          j         S )r4   )r   ).0calls     r   
<listcomp>z>test_allow_redirects_samehost.<locals>.run.<locals>.<listcomp>  s    LLLDDG/LLLr   )rl  rl  r   )r   r  r   r:   r;   r<   r   r   r   r   historyr=   )resp_no_redirectsresp_yes_redirectsstatus_codes	final_urlredirecting_urlr   url_res      r   rA   z*test_allow_redirects_samehost.<locals>.run  s   ^ 	< 	<"9=&:JKKK (_e T T T$0C7777y''1,,,,?1%a(4;;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	^ 	3 	3"9=&:JKKK!)ot!T!T!Ty''1,,,,)122a7777%1S8888 2 66666LLIOLLLL???22222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	s%   BB!!B%(B%B*E==FF)rn  r`   ra   r   )rA   r{  rq  r|  r   r}  s    @@@@@r   test_allow_redirects_samehostr~    s    *ON@@IZ9::F/ / / / /       * CEEENNNNNr   c                  j    dt           j        fd            }  |              t                       d S )Nu3   http://example.com/test?type=2&ie=utf8&query=汉字c                      t          j        t           j        dd           t          j                  } t          | d           d S )Nr3   Tr   rJ   r"   r=   s    r   rA   z-test_handles_unicode_querystring.<locals>.run  sC    imSvNNNN|C  f%%%%%r   rB   rA   r=   s    @r    test_handles_unicode_querystringr    sI    
?C& & & & & CEEENNNNNr   c                  j    dt           j        fd            }  |              t                       d S )NuS   http://www.संजाल.भारत/hi/वेबसाइट-डिजाइनc                      t          j        t           j        d           t          j                  } t          | d           d S )Nr3   r2   rJ   r  s    r   rA   z%test_handles_unicode_url.<locals>.run  sA    imSv6666|C  f%%%%%r   rB   r  s    @r   test_handles_unicode_urlr    sI    
_C& & & & & CEEENNNNNr   c                  j    dt           j        fd            }  |              t                       d S )Nhttp://example.com/testc                      t          j        t           j        d           t          j                  } t          | dd           d S )Nu   михољско летоr2   ztext/plain; charset=utf-8r   rJ   r  s    r   rA   z&test_handles_unicode_body.<locals>.run  sI    imS/JKKKK|C  9Hcddddddr   rB   r  s    @r   test_handles_unicode_bodyr    sN    
#Ce e e e e CEEENNNNNr   c                  j    dt           j        fd            }  |              t                       d S )Nr  c            	          t          j        t           j        t          t	          d                               t          j                  } t          | d           d S )Nr1   r2   r3   )r   r9   r:   r   r   r;   r<   r%   r  s    r   rA   z.test_handles_buffered_reader_body.<locals>.run  sQ    imS~gg>N>N/O/OPPPP|C  f%%%%%r   rB   r  s    @r   !test_handles_buffered_reader_bodyr    sI    
#C& & & & & CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                      t          j        t           j        ddddi           t          j        d          } | j        d         dk    sJ d S )Nr0   rQ   X-Testr   r#   r    r   r9   r:   r;   r<   r    r@   s    r   rA   ztest_headers.<locals>.run   s\    M/b8UBS	
 	
 	
 	
 |011|H%......r   rB   rD   s    r   test_headersr    s9    / / / CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                      t          j        t           j        ddddi           t          j        d          } | j        d         dk    sJ d S )Nr0   rQ   r  r   )r#   adding_headersr  r@   s    r   rA   z'test_legacy_adding_headers.<locals>.run-  s^    M $e,		
 	
 	
 	
 |011|H%......r   rB   rD   s    r   test_legacy_adding_headersr  ,  s9    / / / CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                  b   t          j        t           j        dd           t          j        t           j        dd           t          j        d          } t          | d           t          j        d          } t          | d           t          j        d          } t          | d           d S )Nr0   r3   r2   restrJ   r@   s    r   rA   z$test_multiple_responses.<locals>.run=  s    im%9GGGGim%9GGGG|011f%%%|011f%%%|011f%%%%%r   rB   rD   s    r   test_multiple_responsesr  <  s9    
& 
& 
& CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                     t          j        t           j        dd           t          j        t           j        dd           t          j        d          } t          | d           t          j        d          } t          | d           d S )NrY   oner2   rT   tworJ   r@   s    r   rA   ztest_multiple_urls.<locals>.runO  s|    im%=EJJJJim%=EJJJJ|455e$$$|455e$$$$$r   rB   rD   s    r   test_multiple_urlsr  N  s9    % % % CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                     t          j        t           j        dd           t          j        t           j        dd           t	          j        d          } t          | d           t	          j        d          } t          | d           d S )NrY   gotchar2   posted)r   r9   r:   POSTr;   r<   r%   postr@   s    r   rA   z"test_multiple_methods.<locals>.run^  s|    im%=HMMMMin&>XNNNN|455h'''}566h'''''r   rB   rD   s    r   test_multiple_methodsr  ]  s9    ( ( ( CEEENNNNNr   c                                            dddi           t          j         fd            } |             t                       d S )Nr   r   r   r    c                      t          j        j                   t          j        t           j        d                    j                  d           t          j        t           j        dd           t          j        d          } t          | d           t          j        d                    j                            } t          | d           t          j        j                  } t          | d           d S )N{}/oner  r2   rT   r  r   )	r   add_passthrur=   r9   r:   rn  r;   r<   r%   r"   
httpservers    r   rA   ztest_passthru.<locals>.runo  s    z~...imX__Z^%D%D5QQQQim%=EJJJJ|455e$$$|HOOJN;;<<e$$$|JN++d#####r   serve_contentr   rC   r   r  rA   s   ` r   test_passthrur  l  sb    TNL+IJJJ
$ 
$ 
$ 
$ 
$ CEEENNNNNr   c                                            dddi           t          j         fd            } |             t                       d S )Nr   r   r   r  c                     t          j        t          j        d                    j                                       t          j        t           j        d                    j                  d           t          j        t           j        dd           t          j	        d          } t          | d           t          j	        d                    j                            } t          | d           t          j	        d                    j                            } t          | d           t          j	        d	                    j                            } t          | d           d S )
Nz{}/\w+r  r  r2   rT   r  z{}/twor   z{}/three)r   r  r`   ra   rn  r=   r9   r:   r;   r<   r%   r  s    r   rA   z test_passthru_regex.<locals>.run  s   rz)*:*::>*J*JKKLLLimX__Z^%D%D5QQQQim%=EJJJJ|455e$$$|HOOJN;;<<e$$$|HOOJN;;<<d###|J--jn==>>d#####r   r  r  s   ` r   test_passthru_regexr    sb    TNL+IJJJ$ $ $ $ $ CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                      t          j        t           j        dd           t          j        d          } t          | d           d S )Nr0   r   rV   rJ   r@   s    r   rA   z$test_method_named_param.<locals>.run  sB    Y]0D4PPPP|011d#####r   rB   rD   s    r   test_method_named_paramr    s9    $ $ $
 CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                      t          j                    5 } d}d}|                     |           | j        d         |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nu5   http://موقع.وزارة-الاتصالات.مصر/z8http://xn--4gbrim.xn----ymcbaaajlc6dj7bxne2c.xn--wgbh1c/r   )r   rW  r  passthru_prefixes)rX  r=   	clean_urls      r   rA   z"test_passthru_unicode.<locals>.run  s    #%% 	7ICRINN3&q)Y66666		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   -AAArB   rD   s    r   test_passthru_unicoder    r   r   c                 @   t          j        d          }t           j                                        }|j        }|                     t           d|           |                                 t          |j                  dk    sJ |j	        d         d         dk    sJ d S )Nzsomething.else)targetstd_mockr4   r  )
r   rW  r  	MagicMockr   setattrstartr   call_args_list	call_args)monkeypatchrequests_mockstd_mock_mock
patch_mocks       r   test_custom_targetr    s    *2BCCCM&0022M$J	:}===z())Q...."8,0@@@@@@@r   c                 N    t          j        t          j        |                     S r   )r   quote_ensure_str)ss    r   _quoter    s    ?9033444r   c                  >   d} t          |           }d|d}dd                    d |                                D                       i}t          j        |          }|                                D ]*\  }}t          |t                    sJ |||         k    sJ +d S )Nu   こんにちは/世界r   )xyr:  z; c              3   ,   K   | ]\  }}|d z   |z   V  dS )=Nr   )rt  r  vs      r   	<genexpr>z,test_cookies_from_headers.<locals>.<genexpr>  s.      &P&Ptq!q3w{&P&P&P&P&P&Pr   )r  joinitemsr   _cookies_from_headersr_   rm   )r!   quoted_textr+   r    	cookiejarr  r  s          r   test_cookies_from_headersr    s    #D,,K{++HTYY&P&Px~~?O?O&P&P&PPPQG/88I!!    1!S!!!!!HQK   r   r=   )r0   zhttp://example.com/some/pathzhttp://example.com/other/path/c                 f     t           j         fd            } |             t                       d S )Nc                  P   ddd} t          j        t           j        d                              dd           t	          j        |           }t          |d           t          ||            t	          j                  }t          |d           t          |i            d S )	Nworldr(   )helloexamplez{0}?hello=worldr3   F)rP   r=   r#   r   r(   )r   r9   r:   rn  r;   r<   r%   r,   )r(   r"   r=   s     r   rA   ztest_request_param.<locals>.run  s    "x88=!((--#		
 	
 	
 	
 |C///f%%%dF###|C  f%%%dBr   rB   r=   rA   s   ` r   test_request_paramr    sF                CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                      d} ddgdd}t          j        t           j        | d           t          j        | |          }t          |d           t          ||           d S )	Nr0   r  r  three)key1key2r3   rV   r  )r   r9   r:   r;   r<   r%   r,   )r=   r(   r"   s      r   rA   zEtest_request_param_with_multiple_values_for_the_same_key.<locals>.run  sx    " %.'::=	
 	
 	
 	

 |C///f%%%dF#####r   rB   rD   s    r   8test_request_param_with_multiple_values_for_the_same_keyr    s9    
$ 
$ 
$ CEEENNNNNr   )r0   zhttp://example.com?hello=worldc                 f     t           j         fd            } |             t                       d S )Nc                  V   t          j        t           j                   t          j        t           j        d           t          j        d          du sJ t	          j        t                    5 } t          j        d           d d d            n# 1 swxY w Y   d                              t          | j	                  v sJ t          j                   t          j        d          du sJ t          j        d           t          j        d          du sJ t          j                   t	          j        t                    5 } t          j        d           d d d            n# 1 swxY w Y   d                              t          | j	                  v sJ d S )	Nhttp://example1.comr   Tr7   z8Expected URL '{0}' to be called 2 times. Called 0 times.r4   r"  z8Expected URL '{0}' to be called 3 times. Called 2 times.)r   r9   r:   assert_call_countrj   rk   rg  rn  rm   rn   r;   r<   )ro   r=   s    r   rA   z#test_assert_call_count.<locals>.run  s   imS)))im%:;;;*322d::::]>** 	0g'Q///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0IPP
 
        	S*322d::::*+++*322d::::S]>** 	0g'Q///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0IPP
 
           s$   2BBBE33E7:E7rB   r  s   ` r   test_assert_call_countr    sF              2 CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                     t          j        t           j        ddt          j        ddddi          g           t          j        t           j        ddt          j        d	d
d          g           t          j        ddddid	d
d          } t          | d           t          j        ddddiddddi          } t          | d           d S )Nr5   r  pagefirstr   )namer   rP   r=   r#   matchr  second
urlencoded)r  r   r  r   x-www-form-urlencoded)r    datar   )r    r   r   r9   r  json_params_matcherurlencoded_params_matcherr;   r'   r%   r@   s    r   rA   z-test_request_matches_post_params.<locals>.run  s$   >%-gv>>? 			
 		
 		
 		
 	>%3%|<< 			
 		
 		
 		
 !#%<="L99	
 
 
 	e$$$!#%787F;;<	
 
 
 	e$$$$$r   rB   rD   s    r    test_request_matches_post_paramsr    s:    $% $% $%L CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                  v   t          j        t           j        ddt          j        d           g           t          j        t           j        ddt          j        d           g           t          j        dd          } t          | d           t          j        ddddi          } t          | d           d S )	Nr5   r  r  r  r  r   r  r  r  r@   s    r   rA   z,test_request_matches_empty_body.<locals>.runF  s    >%0667		
 	
 	
 	
 	>%6t<<=		
 	
 	
 	
 (=>>e$$$!#%<=
 
 

 	e$$$$$r   rB   rD   s    r   test_request_matches_empty_bodyr  E  s9    % % %2 CEEENNNNNr   c                  `    t           j        d             }  |              t                       d S )Nc                     t          j        dd           t          j        dd           t          j        ddt          j        ddi          g           t          j        t
                    5 } t          j        ddd	i
           d d d            n# 1 swxY w Y   t          | j	                  }d|v sJ d|v sJ d|v sJ d S )Nr  r  r:   r0   r   r   )r  idbad)r  z.- POST http://example1.com/ URL does not matchz/- GET http://example.com/ Method does not matchz2- POST http://example.com/ Parameters do not match)
r   r9   r  rj   rk   r	   r;   r  rm   rn   )ro   msgs     r   rA   z$test_fail_request_error.<locals>.rune  s2   f3444e1222 6u~FFG	
 	
 	
 	
 ]?++ 	DwM.dE]CCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D'-  ?3FFFF@CGGGGCsJJJJJJs   0BBBrB   rD   s    r   test_fail_request_errorr  d  s<    K K K  CEEENNNNNr   z(response_params, expected_representationr5   zY<Response(url='http://example.com/' status=200 content_type='text/plain' headers='null')>zhttp://another-domain.com/r     )rP   r=   r$   rI   zf<Response(url='http://another-domain.com/' status=404 content_type='application/json' headers='null')>zhttp://abcd.com/z	text/htmli  r  r   
it_wont_be
considered)rP   r=   r$   rI   r    r#   zb<Response(url='http://abcd.com/' status=500 content_type='text/html' headers='{"X-Test": "foo"}')>c                 r    t          di | }t          |          |k    sJ t          |          |k    sJ d S )Nr   )r   rm   repr)response_paramsexpected_representationr>   s      r   test_response_representationsr  z  sN    N **/**Hx==33333>>4444444r   c                  `    t           j        d             }  |              t                       d S )Nc                     t          t          j        ddddid          } t          t          j        ddddi          }t          t          j        d          }t          j        |            t          j        |           t          j        |           t          j                    }|t          j        j        k    sJ || ||gk    sJ d S )	Nr5   rQ   r  r   r  )r#   r    rI   r  zhttp://anotherdomain.com/)r   r   r:   r  r9   
registeredr  r   )first_responsesecond_responsethird_response
mocks_lists       r   rA   z2test_mocked_responses_list_registered.<locals>.run  s    !M!u%
 
 
 #M0rHeCT
 
 
 "N'
 
 	n%%%o&&&n%%%)++
Y^44444no~NNNNNNNr   rB   rD   s    r   %test_mocked_responses_list_registeredr    s<    O O O0 CEEENNNNNr   )Nr   )g
__future__r   r   r   r   r#  r`   sixior   r   rj   r;   r   requests.exceptionsr	   r
   r   r   r  r   r   ImportErrorunittest.mockr   r%   r,   rE   rL   rS   markparametrizer:   ra   rg   rp   rs   rx   r{   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r'  r+  skipifPY2r0  r8  rG  rK  rQ  rY  ra  rh  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  PUTr  r  r   r   r   <module>r#     s   S R R R R R R R R R R R  				 



 & & & & & & & &       : : : : : : : : , , , , , , , ,*          * * *))))))))))*% % %
   O O O  (
 
 
O O O" <HIM/GHHHH }*B  	
 BJ122BJ122	
   !  6 	!:2:.H#I#IJ	.	/	/1IJ       <HIM/GHHHH }*B  	
 BJ122BJ122	
   !  , <HIM/GHHHH }*B  	
 BJ122BJ122	
   !  "  4 *
-	rIM3#7TB
-	rIM3#7UC
-	rINC#8"eD]C  $']C 	
	 & & &    "     "    <  8
 
 
  	 	 	  &	 	 	
 
 
     :  (  (  0  &  &  ,
 
 
<  (: : :"# # #, CG$;<<: : =<:,	N 	N 	N  .  .  4  &	/ 	/ 	/- - -`* * *Z        
 
 
     $      (  ,  
 
 
A A A5 5 5      	   ,  $ 	C   >) ) )X  >  , . !}-BCC=	
 $.3 2	 C	
 $-) +$e,%|4 M	
)"% %L5 5M% %L5    s   A AA