
    ]f                         d 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mZ ddlmZ ddlZdZd	Z G d
 d          Z ej        d          d             Z G d de          ZdS )z#Tests for distutils.command.upload.    N)upload)Distribution)DistutilsError)PYPIRCBasePyPIRCCommandTestCase)	HTTPErrorz[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       d/var/www/html/software/conda/lib/python3.11/site-packages/setuptools/_distutils/tests/test_upload.py__init__zFakeOpen.__init__-   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.getheader6   s)    7

#djjllG
$
$	%r   c                     dS )Ns   xyzzy r   s    r   readzFakeOpen.read;   s    xr   c                     | j         S N)r   r    s    r   getcodezFakeOpen.getcode>   s
    yr   )NNr#   )__name__
__module____qualname__r   r   r!   r$   r   r   r   r
   r
   ,   sZ               % % % %
      r   r
   T)autousec                 r    | j         }|                    t          d|j                   d x|_        |_        d S )Nurlopen)instancesetattr
upload_mod_urlopennext_msg	next_code)requestmonkeypatchr   s      r   r*   r*   B   s6    D
It}===%))DMDNNNr   c                       e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            d ed          def e	j         ed	d
di d          ded          g          d             ZdS )
TestUploadc                 R    t          || j        | j                  | _        | j        S )N)r   r   )r
   r/   r0   	last_open)r   r   s     r   r.   zTestUpload._urlopenJ   s$    !#4=t~NNN~r   c                     |                      | j        t                     t                      }t	          |          }|                                 dD ]\  }}t          ||          |k    sJ d S )N))usernameme)passwordsecret)realmpypi)
repositoryhttps://upload.pypi.org/legacy/)
write_filercr   r   r   finalize_optionsgetattr)r   distcmdattrwaiteds        r   test_finalize_optionsz TestUpload.test_finalize_optionsN   s}    (((~~Tll
 	0 	0LD& 3%%/////	0 	0r   c                 (   |                      | j        t                     t                      }t	          |          }|                                 |j        J d|_        t	          |          }|                                 |j        dk    sJ d S )Nxxx)r@   rA   PYPIRC_NOPASSWORDr   r   rB   r:   )r   rD   rE   s      r   test_saved_passwordzTestUpload.test_saved_password\   s    !2333 ~~Tll|### Tll|u$$$$$$r   c                    |                                  }t          j                            |d          }|                     |           dd|}}}|||fg}|                     | j        t                     |                     |          \  }}	t          |	          }
d|
_	        |

                                 |
                                 t          | j        j        j                  }t!          |d                   dk    sJ |d         }|                    d          sJ | j        j                                        d	k    sJ d
}| j        j                                        |k    sJ | j        j        j        }d|v sJ d|v sJ d|v sJ d|v sJ d|v rd|v sJ d|v rd|v sJ |j        }|d         dk    sJ d S )NrJ   2.6
dist_filesTContent-lengthir  zContent-typezmultipart/form-dataPOSTr?   s   xxxs   protocol_versions   sha256_digests@   cd2eb0837c9b4c962c22d2ff8b5441b7b45805887f051d39bf133b583baf6860s
   md5_digests    f561aaf6ef0bf14d4208bb46a4ccb3ads   blake2_256_digests   b6f289a27d4fe90da63c503bfe0a9b761a8f76bb86148565065f040be6d1c3044cf7ded78ef800509bccb4b648e507d88dc6383d67642aadccce443f1534330az---------------------------------------------------------------------------
xyzzy
---------------------------------------------------------------------------)mkdtempospathjoinr@   rA   PYPIRC_LONG_PASSWORDcreate_distr   show_responseensure_finalizedrundictr6   r   headersint
startswith
get_methodget_full_urldatamessages)r   caplogtmprV   command	pyversionfilenamerP   pkg_dirrD   rE   r^   content_typeexpected_urlrc   resultss                   r   test_uploadzTestUpload.test_uploadm   s   llnnw||C''',eTH	845
!5666 ((J(??Tll 			 t~)1227+,--5555~.&&'<=====~!,,..&88888~!..00L@@@@~!&~~~~"d****4''''    D  6$>>>>4''"%)* * * * /r{???????r   c                 @   |                                  }t          j                            |d          }|                     |d           dd|}}}|||fg}|                     | j        t                     |                     |d          \  }}t          |          }	d|	_	        |	
                                 |	                                 t          | j        j        j                  }
t!          |
d                   d	k    sJ d
| j        j        j        v sJ d S )NrJ   zyy)contentrN   zlong description)rP   descriptionTrQ   i|  s   long description)rT   rU   rV   rW   r@   rA   rX   rY   r   rZ   r[   r\   r]   r6   r   r^   r_   rc   )r   rf   rV   rg   rh   ri   rP   rj   rD   rE   r^   s              r   test_upload_correct_crz!TestUpload.test_upload_correct_cr   s   llnnw||C''f---',eTH	845
!5666 ((!/C ) 
 
 Tll 			t~)1227+,--5555$(:(???????r   c                     d| _         d| _        t          j        t                    5  |                     |           d d d            d S # 1 swxY w Y   d S )Nz	Not Foundi  )r/   r0   pytestraisesr   rn   )r   re   s     r   test_upload_failszTestUpload.test_upload_fails   s    #]>** 	% 	%V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   AAAz#exception,expected,raised_exceptionoserrorr   i  	httperrorNzUpload failed (400): httperrorzHTTP 400)idc                    |                                  }t          j                            |d          }|                     |           dd|fg}|                     | j        t                     |                     |          \  }}	t          j	        dt          j
        |                    5  t          j        |          5  t          |	          }
|
                                 |
                                 d d d            n# 1 swxY w Y   |j        }||d         v sJ |                                 d d d            d S # 1 swxY w Y   d S )NrJ   rN   rO   z distutils.command.upload.urlopen)side_effect)newrS   )rT   rU   rV   rW   r@   rA   rX   rY   mockpatchMockrt   ru   r   r[   r\   rd   clear)r   	exceptionexpectedraised_exceptionre   rf   rV   rP   rj   rD   rE   rm   s               r   test_wrong_exception_orderz%TestUpload.test_wrong_exception_order   s    llnnw||C''eT*+
!5666((J(??Z.	i000
 
 
 
	 
	 /00  Tll$$&&&			               oGwr{****LLNNN
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s6   2E
8D?E
D	E
D	*E

EE)r%   r&   r'   r.   rH   rL   rn   rr   rv   rt   markparametrizeOSErrorparamr   r   r   r   r   r   r4   r4   I   s          0 0 0% % %"*@ *@ *@\@ @ @.% % % [-WYG4FL	%k2t<<0	  	
     r   r4   )__doc__rU   unittest.mockr}   distutils.commandr   r-   distutils.command.uploaddistutils.corer   distutils.errorsr   distutils.tests.test_configr   r   urllib.requestr   rt   rX   rK   r
   fixturer*   r4   r   r   r   <module>r      sC   ) ) 				       2 2 2 2 2 2 + + + + + + ' ' ' ' ' ' + + + + + + I I I I I I I I $ $ $ $ $ $  &        , * * *N N N N N* N N N N Nr   