a *Na7@sfddlZddlZddlZddlmZddlmZddlZddlZddZ ddZ dd Z d d Z ej d d ddZej d d ddZej d d ddZej d d ddZej d d ddZej d d ddZej ddZej d d ddZej d d ddZej d d d d!Zej d"d d#d$Zej d"d d%d&Zej d'd d(d)Zej d"d d*d+Zej d'd d,d-Zej d"d d.d/Zej d"d d0d1Zej d"d d2d3Zej d"d d4d5Z ej d"d d6d7Z!ej d"d d8d9Z"ej d"d d:d;Z#ej d"d dd?Z%ej d d d@dAZ&ej d d dBdCZ'dS)DN)Path) check_outputcCs|jD]$}|jD] }|q|q |jD]$}|jD] }|qH|q:|jD] }|qj|jD]}|jdkr|jddqdS)NrootT)Z hard_delete)projectslist deploytokensdeletegroups variablesusersusername)glproject deploy_tokengroupvariableuserrt/private/var/folders/js/6pj4vh5d4zd0k6bxv74qrbhr0000gr/T/pip-target-22xwyzbs/lib/python/tests/functional/conftest.py reset_gitlab s      rcCsf|dd}t|d}|}Wdn1s80Ydd|dd|g}t|}|S)Nfixturesz set_token.rbrdockerexecz gitlab-railsrunner)openreadstriprdecode) containerrootdirZ set_token_rbfZset_token_commandZ rails_commandoutputrrr set_tokens  *r#cCsgdS)N)zStarting GitLab container.z"Waiting for GitLab to reconfigure.zThis may take a few minutes.r)configZstartdiritemsrrrpytest_report_collectionfinish0sr'cCs|jdddddS)N--keep-containers store_truez%Keep containers running after testing)actionhelp)Z addoption)parserrrrpytest_addoption9s r-session)ZscopecCs ttS)N)rtempfile gettempdirrrrrtemp_dirAsr1cCs|jddS)NtestsZ functionalr )Z pytestconfigrrrtest_dirFsr4cCs |ddS)Nrzdocker-compose.ymlr)r4rrrdocker_compose_fileKsr5cCsdS)zESet a consistent project name to enable optional reuse of containers.zpytest-python-gitlabrrrrrdocker_compose_project_namePsr6cCs|jdrdSdS)zGConditionally keep containers around by overriding the cleanup command.r(z-vzdown -v)r%Z getoption)requestrrrdocker_cleanupVs r8cCs dd}|S)zP Return a healthcheck function fixture for the GitLab container spinup. cSsdd|g}dt|vS)Nrlogszgitlab Reconfigured!rr)rr9rrr_checkes zcheck_is_alive.._checkr)r;rrrcheck_is_alive_sr<csdfdd }|S)z Return a helper function to wait until there are no busy sidekiq processes. Use this with asserts for slow tasks (group/project/user creation/deletion). ?csNt|D]@}t|d}jd}|D]}|dr,d}q,|sdSqdS)NF processesbusyT)rangetimesleepZsidekiqZprocess_metrics)timeoutstep_r@r?processr rr_waitts  zwait_for_sidekiq.._wait)r=r>r)r rIrrHrwait_for_sidekiqls rJc s|d}|dd}|jddfdddtd |d }d |d |d |d}t|d} | |Wdn1sz0Y|S)Nzpython-gitlab.cfggitlabPcsdS)N gitlab-testrrr<rrzgitlab_config..)rDpausecheckrOr3z<[global] default = local timeout = 60 [local] url = http://:z private_token = z api_version = 4w)Zport_forZwait_until_responsiver#rwrite) r<Z docker_ipZdocker_servicesr1r4 config_fileporttokenr%r!rrPr gitlab_configs    (r[cCstjd|g}t||S)zBHelper instance to make fixtures and asserts directly via the API.local)rKZGitlabZ from_configr)r[instancerrrr sr c csjd}d}d}d}dd|dg}dd d d |d |d |d|ddg }dd |g}t||Vt||dS)Nzgitlab-runner-testzpython-gitlab-runnerzregistration-tokenz http://gitlabrrz gitlab-runnerregisterz--run-untaggedz--non-interactivez--registration-tokenz--namez--urlz --clone-urlz --executorshell unregisterr:)r rZ runner_namerZurlZ docker_execr^r`rrr gitlab_runners,  rbmodulec csztj}d|d|d}|j|}|Vz |Wn6tjjyt}zt d|WYd}~n d}~00dS)z+Group fixture for group API resource tests.z test-group-zgroup-)namepathzGroup already deleted: N) uuiduuid4hexr createrrK exceptionsGitlabDeleteErrorprint)r _iddatarerrrrs   rc csptj}d|}|jj|d}|Vz |Wn6tjjyj}zt d|WYd}~n d}~00dS)z/Project fixture for project API resource tests.z test-project-)rdzProject already deleted: N) rfrgrhrrirrKrjrkrl)r rmrdrrorrrrs   rfunctionc #sfgtdfdd }|VD]<\}}j|zj|Wq$tjjy^Yq$0q$dS)aFixture used to create a merge_request. It will create a branch, add a commit to the branch, and then create a merge request against project.default_branch. The MR will be returned. When finished any created merge requests and branches will be deleted. NOTE: No attempt is made to restore project.default_branch to its previous state. So if the merge request is merged then its content will be in the project.default_branch branch. ) source_branchcsdd}|dusJdj|jdjd||ddd j|jd dd }dd}|dusJd|j}tdD](}j|}|j d krqt d q|j d ksJ |j|f|S)N<)rDTz2sidekiq process should have terminated but did not)branchrefzREADME.Initial contentzNew commit in new branch file_pathrscontentZcommit_messagezShould remove source branch)rqZ target_branchtitleZremove_source_branchZcheckingr>) refreshbranchesridefault_branchfiles mergerequestsZiidrAgetZ merge_statusrBrCappend)rqresultmrmr_iidrFrZ to_deleterJrr_merge_requests>       z%merge_request.._merge_requestN)strr~rr{rKrjrk)rrJrrrqrrr merge_requests,  rcCs|jddddd}|S)zCFile fixture for tests requiring a project with files and branches.ZREADMEZmasterruzInitial commitrv)r}ri)r project_filerrrr.s rcCs8tj}d|}||j||d|jd}|S)Nz test-release- description)rdZtag_namerrt)rfrgrhrzZreleasesrir|)rrrmrdreleaserrrr=s   rc cstj}d|d}d|}d|}d}|jj||||d}|Vz |Wn6tjjy}zt d|WYd}~n d}~00dS)z)User fixture for user API resource tests.rz @email.comzUser Z fakepassword)emailr rdpasswordzUser already deleted: N) rfrgrhr rirrKrjrkrl)r rmrr rdrrrorrrrOs     rcCs.tj}d|d|dd}|j|S)z+Issue fixture for issue API resource tests.zIssue description)ryr)rfrgrhZissuesrirrmrnrrrissuebs rcCs$tj}dd|i}|j|S)Nry milestone)rfrgrhZ milestonesrirrrrrks rcCs0tj}d|d|ddd}|j|S)z3Label fixture for project label API resource tests.Zprjlabelz prjlabel1 r#112233rdrcolorrfrgrhlabelsrirrrrlabelss   rcCs0tj}d|d|ddd}|j|S)z1Label fixture for group label API resource tests.Zgrplabelz grplabel1 rrrrrrmrnrrr group_labels   rcCs,tj}d|d|d}|j|S)z9Variable fixture for project variable API resource tests.varz Variable )keyvalue)rfrgrhr rirrrrrs rcCs*tj}d|dddd}|j|S)zADeploy token fixture for project deploy token API resource tests.ztoken-r 2021-09-09 read_registryrdr Z expires_atZscopesrfrgrhrrirrrrrs rcCs*tj}d|dddd}|j|S)z?Deploy token fixture for group deploy token API resource tests.z group-token-rrrrrrrrrgroup_deploy_tokens rcCsdS)Na-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFn5mzYBCADH6SDVPAp1zh/hxmTi0QplkOfExBACpuY6OhzNdIg+8/528b3g Y5YFR6T/HLv/PmeHskUj21end1C0PNG2T9dTx+2Vlh9ISsSG1kyF9T5fvMR3bE0x Dl6S489CXZrjPTS9SHk1kF+7dwjUxLJyxF9hPiSihFefDFu3NeOtG/u8vbC1mewQ ZyAYue+mqtqcCIFFoBz7wHKMWjIVSJSyTkXExu4OzpVvy3l2EikbvavI3qNz84b+ Mgkv/kiBlNoCy3CVuPk99RYKZ3lX1vVtqQ0OgNGQvb4DjcpyjmbKyibuZwhDjIOh au6d1OyEbayTntd+dQ4j9EMSnEvm/0MJ4eXPABEBAAG0G0dpdGxhYlRlc3QxIDxm YWtlQGZha2UudGxkPokBNwQTAQgAIQUCWfmbNgIbAwULCQgHAgYVCAkKCwIEFgID AQIeAQIXgAAKCRBgxELHf8f3hF3yB/wNJlWPKY65UsB4Lo0hs1OxdxCDqXogSi0u 6crDEIiyOte62pNZKzWy8TJcGZvznRTZ7t8hXgKFLz3PRMcl+vAiRC6quIDUj+2V eYfwaItd1lUfzvdCaC7Venf4TQ74f5vvNg/zoGwE6eRoSbjlLv9nqsxeA0rUBUQL LYikWhVMP3TrlfgfduYvh6mfgh57BDLJ9kJVpyfxxx9YLKZbaas9sPa6LgBtR555 JziUxHmbEv8XCsUU8uoFeP1pImbNBplqE3wzJwzOMSmmch7iZzrAwfN7N2j3Wj0H B5kQddJ9dmB4BbU0IXGhWczvdpxboI2wdY8a1JypxOdePoph/43iuQENBFn5mzYB CADnTPY0Zf3d9zLjBNgIb3yDl94uOcKCq0twNmyjMhHzGqw+UMe9BScy34GL94Al xFRQoaL+7P8hGsnsNku29A/VDZivcI+uxTx4WQ7OLcn7V0bnHV4d76iky2ufbUt/ GofthjDs1SonePO2N09sS4V4uK0d5N4BfCzzXgvg8etCLxNmC9BGt7AaKUUzKBO4 2QvNNaC2C/8XEnOgNWYvR36ylAXAmo0sGFXUsBCTiq1fugS9pwtaS2JmaVpZZ3YT pMZlS0+SjC5BZYFqSmKCsA58oBRzCxQz57nR4h5VEflgD+Hy0HdW0UHETwz83E6/ U0LL6YyvhwFr6KPq5GxinSvfABEBAAGJAR8EGAEIAAkFAln5mzYCGwwACgkQYMRC x3/H94SJgwgAlKQb10/xcL/epdDkR7vbiei7huGLBpRDb/L5fM8B5W77Qi8Xmuqj cCu1j99ZCA5hs/vwVn8j8iLSBGMC5gxcuaar/wtmiaEvT9fO/h6q4opG7NcuiJ8H wRj8ccJmRssNqDD913PLz7T40Ts62blhrEAlJozGVG/q7T3RAZcskOUHKeHfc2RI YzGsC/I9d7k6uxAv1L9Nm5F2HaAQDzhkdd16nKkGaPGR35cT1JLInkfl5cdm7ldN nxs4TLO3kZjUTgWKdhpgRNF5hwaz51ZjpebaRf/ZqRuNyX4lIRolDxzOn/+O1o8L qG2ZdhHHmSK2LaQLFiSprUkikStNU9BqSQ== =5OGa -----END PGP PUBLIC KEY BLOCK-----rrrrrGPG_KEYsrcCsdS)Nassh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZAjAX8vTiHD7Yi3/EzuVaDChtih79HyJZ6H9dEqxFfmGA1YnncE0xujQ64TCebhkYJKzmTJCImSVkOu9C4hZgsw6eE76n+Cg3VwEeDUFy+GXlEJWlHaEyc3HWioxgOALbUp3rOezNh+d8BDwwqvENGoePEBsz5la6WP5lTi/HJIjAl6Hu+zHgdj1XVExeH+S52EwpZf/ylTJub0Bl5gHwf/siVE48mLMIsqrukXTZ6Zg+8EHAIvIQwJ1dKcXe8P5IoLT7VKrbkgAnolS0I8J+uH7KtErZJb5oZhS4OEwsNpaXMAr+6/wWSpircV2/e7sFLlhlKBC4Iq1MpqlZ7G3p foo@barrrrrrSSH_KEYsrcCsdS)Nassh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFdRyjJQh+1niBpXqE2I8dzjGMXFHlRjX9yk/UfOn075IdaockdU58sw2Ai1XIWFpZpfJkW7z+P47ZNSqm1gzeXIrtKa9ZUp8A7SZe8vH4XVn7kh7bwWCUirqtn8El9XdqfkzOs/+FuViriUWoJVpA6WZsDNaqINFKIA5fj/q8XQw+BcS92L09QJg9oVUuH0VVwNYbU2M2IRmSpybgC/guuWTrnCDMmLItksATifLvRZwgdI8dr+q6tbxbZknNcgEPrI2jT0hYN9ZcjNeWuyvrke9IepE7SPBT41C+YtUX4dfDZDmczM1cE0YL/krdUCfuZHMa4ZS2YyNd6slufcvn bar@foorrrrr DEPLOY_KEYsr)(r/rBrfpathlibr subprocessrZpytestrKrr#r'r-Zfixturer1r4r5r6r8r<rJr[r rbrrrrrrrrrrrrrrrrrrrrs|                           F