
    ;e                     
   d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z ddlm
Z
 ddlmZ ddlmZ ddlmZmZ dd	lmZmZ d
ZdZ G d de          Z G d de          Zd Zedk    r e e                       dS dS )z#Tests for distutils.command.upload.    N)	HTTPError)run_unittest)upload)Distribution)DistutilsError)ERRORINFO)PYPIRCBasePyPIRCCommandTestCasez[distutils]

index-servers =
    server1
    server2

[server1]
username:me
password:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

[server2]
username:meagain
password: secret
realm:acme
repository:http://another.pypi/
z@[distutils]

index-servers =
    server1

[server1]
username:me
c                   *    e Zd ZddZddZd Zd ZdS )FakeOpenNc                     || _         t          |t                    s|| _        nd | _        |pd| _        |pd| _        d S )NOK   )url
isinstancestrreqmsgcode)selfr   r   r   s       2/usr/lib/python3.11/distutils/tests/test_upload.py__init__zFakeOpen.__init__0   sE    #s## 	DHHDH;$KC			    c                 V    ddi                     |                                |          S )Nzcontent-typeztext/plain; charset=utf-8)getlower)r   namedefaults      r   	getheaderzFakeOpen.getheader9   s)    7c$**,,((	)r   c                     dS )Ns   xyzzy r   s    r   readzFakeOpen.read>   s    xr   c                     | j         S N)r   r#   s    r   getcodezFakeOpen.getcodeA   s
    yr   )NNr&   )__name__
__module____qualname__r   r    r$   r'   r"   r   r   r   r   .   sZ               ) ) ) )
      r   r   c                   R     e Zd Z fdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Z xZS )
uploadTestCasec                     t          t          |                                            t          j        | _        | j        t          _        d | _        d | _        d | _	        d S r&   )
superr,   setUp
upload_modurlopenold_open_urlopen	last_opennext_msg	next_coder   	__class__s    r   r/   zuploadTestCase.setUpG   sL    nd##))+++"*!]
r   c                 x    | j         t          _        t          t          |                                            d S r&   )r2   r0   r1   r.   r,   tearDownr7   s    r   r:   zuploadTestCase.tearDownO   s/    !]
nd##,,.....r   c                 R    t          || j        | j                  | _        | j        S )N)r   r   )r   r5   r6   r4   )r   r   s     r   r3   zuploadTestCase._urlopenS   s$    !#4=t~NNN~r   c                     |                      | j        t                     t                      }t	          |          }|                                 dD ])\  }}|                     t          ||          |           *d S )N))usernameme)passwordsecret)realmpypi)
repositoryhttps://upload.pypi.org/legacy/)
write_filercr
   r   r   finalize_optionsassertEqualgetattr)r   distcmdattrwaiteds        r   test_finalize_optionsz$uploadTestCase.test_finalize_optionsW   s     	(((~~TllP 	9 	9LD& WS$//8888	9 	9r   c                 h   |                      | j        t                     t                      }t	          |          }|                                 |                     |j        d            d|_        t	          |          }|                                 |                     |j        d           d S )Nxxx)rE   rF   PYPIRC_NOPASSWORDr   r   rG   rH   r?   )r   rJ   rK   s      r   test_saved_passwordz"uploadTestCase.test_saved_passwordc   s    !2333 ~~Tllt,,, Tllu-----r   c                    |                                  }t          j                            |d          }|                     |           dd|}}}|||fg}|                     | j        t                     |                     |          \  }}t          |          }	d|	_	        |	
                                 |	                                 t          | j        j        j                  }
|                     t#          |
d                   d           |
d         }|                     |                    d                     |                     | j        j                                        d	           d
}|                     | j        j                                        |           | j        j        j        }|                     d|           |                     d|           |                     d|           |                     d|           d|v r|                     d|           d|v r|                     d|           |                     t4                    }|                     |d         d           d S )NrP   2.6
dist_files   Content-lengthir  zContent-typezmultipart/form-dataPOSTrD   s   xxxs   protocol_versions   sha256_digests@   cd2eb0837c9b4c962c22d2ff8b5441b7b45805887f051d39bf133b583baf6860s
   md5_digests    f561aaf6ef0bf14d4208bb46a4ccb3ads   blake2_256_digests   b6f289a27d4fe90da63c503bfe0a9b761a8f76bb86148565065f040be6d1c3044cf7ded78ef800509bccb4b648e507d88dc6383d67642aadccce443f1534330az---------------------------------------------------------------------------
xyzzy
---------------------------------------------------------------------------)mkdtempospathjoinrE   rF   PYPIRC_LONG_PASSWORDcreate_distr   show_responseensure_finalizedrundictr4   r   headersassertGreaterEqualint
assertTrue
startswithrH   
get_methodget_full_urldataassertInget_logsr	   )r   tmpr]   command	pyversionfilenamerV   pkg_dirrJ   rK   re   content_typeexpected_urlrl   resultss                  r   test_uploadzuploadTestCase.test_uploadt   sZ   llnnw||C''',eTH	845
!5666 ((J(??Tll			 t~)122G,<$= > >EEE~.//0EFFGGG+6688&AAA8+88::LIII~!&fT""")4000&---	
 	
 	

 D  MM=tDDD4''MM" 	   --%%&GHHHHHr   c                 |   |                                  }t          j                            |d          }|                     |d           dd|}}}|||fg}|                     | j        t                     |                     |d          \  }}t          |          }	d|	_	        |	
                                 |	                                 t          | j        j        j                  }
|                     t#          |
d                   d	           |                     d
| j        j        j                   d S )NrP   zyy)contentrT   zlong description)rV   descriptionrW   rX   i|  s   long description)r[   r\   r]   r^   rE   rF   r_   r`   r   ra   rb   rc   rd   r4   r   re   rf   rg   rm   rl   )r   ro   r]   rp   rq   rr   rV   rs   rJ   rK   re   s              r   test_upload_correct_crz%uploadTestCase.test_upload_correct_cr   s#   llnnw||C''f---',eTH	845
!5666 ((!, ) 
 
 Tll			t~)122G,<$= > >EEE+T^-?-DEEEEEr   c                 b    d| _         d| _        |                     t          | j                   d S )Nz	Not Foundi  )r5   r6   assertRaisesr   rw   r#   s    r   test_upload_failsz uploadTestCase.test_upload_fails   s/    #.$*:;;;;;r   c           	         |                                  }t          j                            |d          }|                     |           dd|fg}|                     | j        t                     |                     |          \  }}t          d          dt          ft          dddi d           dt          fg}|D ]6\  }}}	|                     t          |          j        	          5  t          j        d
t          j        |                    5  |                     |	          5  t%          |          }
|
                                 |
                                 d d d            n# 1 swxY w Y   |                     t,                    }|                     ||d                    |                                  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   8d S )NrP   rT   rU   oserrorr   i  	httperrorzUpload failed (400): httperror)	exceptionz distutils.command.upload.urlopen)side_effect)newrZ   )r[   r\   r]   r^   rE   rF   r_   r`   OSErrorr   r   subTesttyper(   mockpatchMockr}   r   rb   rc   rn   r   rm   
clear_logs)r   ro   r]   rV   rs   rJ   testsr   expectedraised_exceptionrK   rv   s               r   test_wrong_exception_orderz)uploadTestCase.test_wrong_exception_order   s   llnnw||C''eT*+
!5666((J(??YG4uc;D99-~?

 6; 
	& 
	&1Ix!1Y(@AA 	& 	&Z B$(I)$D$D$DF F F & &**+;<< " "$Tll,,...			" " " " " " " " " " " " " " " #mmE22GMM(GBK888OO%%%& & & & & & & & & & & & & & &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
	& 
	&s[   ,*G(G,8E0	$G0E44G7E48AGG(GG(GG((G,	/G,	)r(   r)   r*   r/   r:   r3   rN   rR   rw   r{   r~   r   __classcell__)r8   s   @r   r,   r,   E   s            / / / / /  
9 
9 
9. . .",I ,I ,I`F F F0< < <
& & & & & & &r   r,   c                  X    t          j                                        t                    S r&   )unittest
TestLoaderloadTestsFromTestCaser,   r"   r   r   
test_suiter      s      66~FFFr   __main__)__doc__r\   r   unittest.mockr   urllib.errorr   test.supportr   distutils.commandr   r0   distutils.command.uploaddistutils.corer   distutils.errorsr   distutils.logr   r	   distutils.tests.test_configr
   r   r_   rQ   objectr   r,   r   r(   r"   r   r   <module>r      s|   ) ) 				        " " " " " " % % % % % % 2 2 2 2 2 2 + + + + + + ' ' ' ' ' ' + + + + + + % % % % % % % % I I I I I I I I &     v   .S& S& S& S& S&. S& S& S&lG G G zL r   