a  ze@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZddlmZddlmZmZdd lmZmZd Zd ZGd d d eZGdddeZddZedkreedS)z#Tests for distutils.command.upload.N) HTTPError) run_unittest)upload) Distribution)DistutilsError)ERRORINFO)PYPIRCBasePyPIRCCommandTestCasez[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@s0eZdZd ddZd ddZddZdd ZdS) FakeOpenNcCs6||_t|ts||_nd|_|p$d|_|p.d|_dS)NZOK)url isinstancestrreqmsgcode)selfr rrrO/opt/bitninja-python-dojo/embedded/lib/python3.9/distutils/tests/test_upload.py__init__0s   zFakeOpen.__init__cCsddi||S)Nz content-typeztext/plain; charset=utf-8)getlower)rnamedefaultrrr getheader9szFakeOpen.getheadercCsdS)Nsxyzzyrrrrrread>sz FakeOpen.readcCs|jSN)rrrrrgetcodeAszFakeOpen.getcode)NN)N)__name__ __module__ __qualname__rrrrrrrrr .s r cs`eZdZfddZfddZddZddZd d Zd d Zd dZ ddZ ddZ Z S)uploadTestCasecs4tt|tj|_|jt_d|_d|_d|_ dSr) superr#setUp upload_modurlopenold_open_urlopen last_opennext_msg next_coder __class__rrr%Gs zuploadTestCase.setUpcs|jt_tt|dSr)r(r&r'r$r#tearDownrr-rrr/OszuploadTestCase.tearDowncCst||j|jd|_|jS)N)rr)r r+r,r*)rr rrrr)SszuploadTestCase._urlopencCsH||jtt}t|}|dD]\}}|t|||q(dS)N))usernameme)passwordZsecret)ZrealmZpypi)Z repositoryhttps://upload.pypi.org/legacy/) write_filercr rrfinalize_options assertEqualgetattr)rdistcmdattrZwaitedrrrtest_finalize_optionsWs  z$uploadTestCase.test_finalize_optionscCsZ||jtt}t|}|||jdd|_t|}|||jddS)Nxxx)r4r5PYPIRC_NOPASSWORDrrr6r7r2)rr9r:rrrtest_saved_passwordcsz"uploadTestCase.test_saved_passwordcCsb|}tj|d}||dd|}}}|||fg}||jt|j|d\}}t|} d| _ | | t |j jj} |t| dd| d} || d||j jd d } ||j j| |j jj} |d | |d | |d | |d| d| vr.|d| d| vrD|d| |t}||dddS)Nr=2.6 dist_filesContent-lengthirz Content-typezmultipart/form-dataZPOSTr3sxxxsprotocol_versions sha256_digests@cd2eb0837c9b4c962c22d2ff8b5441b7b45805887f051d39bf133b583baf6860s md5_digests f561aaf6ef0bf14d4208bb46a4ccb3adsblake2_256_digestsb6f289a27d4fe90da63c503bfe0a9b761a8f76bb86148565065f040be6d1c3044cf7ded78ef800509bccb4b648e507d88dc6383d67642aadccce443f1534330az--------------------------------------------------------------------------- xyzzy ---------------------------------------------------------------------------)mkdtempospathjoinr4r5PYPIRC_LONG_PASSWORD create_distr show_responseensure_finalizedrundictr*rheadersassertGreaterEqualintZ assertTrue startswithr7Z get_methodZ get_full_urldataassertInget_logsr)rtmprHcommand pyversionfilenamerBpkg_dirr9r:rPZ content_typeZ expected_urlrTresultsrrr test_uploadtsF          zuploadTestCase.test_uploadc Cs|}tj|d}|j|dddd|}}}|||fg}||jt|j|dd\}}t|} d| _ | | t |j jj} |t| dd |d |j jjdS) Nr=zyy )Zcontentr@zlong description )rB descriptionrCrDi|slong description )rFrGrHrIr4r5rJrKrrLrMrNrOr*rrPrQrRrUrT) rrWrHrXrYrZrBr[r9r:rPrrrtest_upload_correct_crs"  z%uploadTestCase.test_upload_correct_crcCsd|_d|_|t|jdS)Nz Not Foundi)r+r, assertRaisesrr]rrrrtest_upload_failssz uploadTestCase.test_upload_failsc CsR|}tj|d}||dd|fg}||jt|j|d\}}tddtft dddiddt fg}|D]\}}} |j t |j d tjd tj|d d t|| (t|} | | Wdn1s0Y|t} ||| d |Wdn1s"0YWdqr1sB0YqrdS)Nr=r@rAZoserrorr iZ httperrorzUpload failed (400): httperror) exceptionz distutils.command.upload.urlopen)Z side_effect)newrE)rFrGrHrIr4r5rJrKOSErrorrrZsubTesttyper mockZpatchZMockr`rrMrNrVrrUZ clear_logs) rrWrHrBr[r9ZtestsrbZexpectedZraised_exceptionr:r\rrrtest_wrong_exception_orders.     & z)uploadTestCase.test_wrong_exception_order) r r!r"r%r/r)r<r?r]r_rarg __classcell__rrr-rr#Es   0r#cCs ttSr)unittestZ makeSuiter#rrrr test_suitesrj__main__)__doc__rGriZ unittest.mockrfZ urllib.errorrZ test.supportrZdistutils.commandrr&Zdistutils.command.uploadZdistutils.corerZdistutils.errorsrZ distutils.logrrZdistutils.tests.test_configr r rJr>objectr r#rjr rrrrs&