
    e                        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	Z	d dl
Z
d dlZd dlmZmZ d dlmZ d dlmZ d	d
lmZ  ee          j        Z e j        e j                    e j        d          Ze                    e j                    ej                    Ze                     d          Z!e                     d          Z" e#edz            Z$	  e% e#e&                    d                    d          5 Z' ej(        e'ej)                  Z*e*d         d         Z+e*d         d         Z,e*d         d         Z-e*d         d         Z.ddd           n# 1 swxY w Y   n# e/$ r  e0d           Y nw xY wda1da2e	j3        d             Z4e	j3        d             Z+e	j3        d             Z5e	j3        d             Z6e	j3        d             Z7e	j3        d             Z8e	j3        d             Z9e	j3        d             Z:e	j3        d             Z;e	j3        d              Z<e	j3        d!             Z=e	j3        d"             Z>e	j3        d#             Z?e	j3        d$             Z@e	j3        d%             ZAe	j3        d&             ZBd' ZCd( ZDdS ))    N)Path)randint)findall)Mock)errorsmain)config)RepoApi   )
load_mocks)levelrepo_clidefault_siteurlz(data/numpy-1.15.4-py37hacdab7b_0.tar.bz2ztest_config.yamlruser1usernamepassworduser2a  Configuration file test_config.yaml not found. Cannot run integration tests without users information. Please create your configuration file in the following format:user1:  password: password  username: username1user2:  password: password  username: username2c                     | d         S )Nr    auth_configs    7lib/python3.11/site-packages/repo_cli/tests/conftest.pydefault_userr   7   s    w    c                     | d         d         S )Nr   r   r   r   s    r   default_usernamer   <   s    w
++r   c                      t           S N)_auth_configr   r   r   r   r   A   s    r   c                 f   t          j        d          5 }t          |           t          rt          cd d d            S t	          j        t                    }|s;t          j        dd| z  dt          z  g           t	          j        t                    }|a|cd d d            S # 1 swxY w Y   d S )NFassert_all_requests_are_firedlogin--username=%s--password=%s)		responsesRequestsMockr   TOKEN_USER_1r	   
load_token	test_siter   default_pwd)r   rspstokens      r   token_user_1r0   F   s    
	e	D	D	D 4 	        
 !),, 	1I#&66#k1   %i00E#                 s   B& AB&&B*-B*c                     t          j        d          5 } t          |            t          rt          cd d d            S t	          t
                    }t          j        dg           t          j        ddt          z  dt          z  g           t          j
        t
                    }t	          t
                    }t          j        |           t          j        t          |           |a|cd d d            S # 1 swxY w Y   d S )NFr#   )sitelogoutr%   r&   r'   )r(   r)   r   TOKEN_USER_2r   r,   r   
username_2
password_2r	   r+   remove_tokenstore_tokenr*   )r.   argsr/   s      r   token_user_2r:   ^   sM    
	e	D	D	D 4 	        
 ###	8*	7Oj8/J:VWXXX!),,###D!!! 	<...!                 s   C= B0C==DDc              #      K   d}t          j        d          5 }t          |           t          j        d| dd|g           |V  t          j        d| dd|g           d d d            d S # 1 swxY w Y   d S )Ntest_channel_1234Fr#   -tchannel--create--remover(   r)   r   r   )r0   channel_namer.   s      r   new_channelrC   u   s      &L		e	D	D	D M4	4y*lKLLL	4y*lKLLLM M M M M M M M M M M M M M M M M Ms   AA--A14A1c                 D    t          j         d| dd|t          g           |S Nr=   upload-cr   DEFAULT_PACKAGE_PATH)r0   rC   s     r   new_channel_with_packagerJ      s&    It\8T;@TUVVVr   c              #      K   g }t          d          D ]E}t          dd          }d| }t          j        d| dd|g           |                    |           F|V  |D ]}t          j        d| dd|g           d S )	N   r   '  test_channel_0r=   r>   r?   r@   )ranger   r   append)r0   channel_namesxjust_a_numberrB   s        r   many_channelsrT      s      M1XX + +4((777	4y*lKLLL\****
% M M	4y*lKLLLLM Mr   c           	   #     K   d}t          j        d          5 }t          |           t          j        d| dd|dz   |z   g           |dz   |z   V  t          j        d| dd|dz   |z   g           d d d            d S # 1 swxY w Y   d S )	Nr<   Fr#   r=   r>   r?   /r@   rA   )r0   rC   subchannel_namer.   s       r   new_subchannelrX      s
     )O		e	D	D	D 
4	c!O3	
 	
 	
 C/1111	c!O3	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AA??BBc                 D    t          j         d| dd|t          g           |S rE   rH   )r0   rX   s     r   new_subchannel_with_packagerZ      s/    I	|Xt^=QR   r   c                      t           S r    )rI   r   r   r   package_pathr\      s    r   c                  B    t                               d          d         S )NrV   rI   splitr   r   r   package_filenamera      s    %%c**2..r   c                  t    t                               d          d                             d          d         S )NrV   r^   -r   r_   r   r   r   package_namerd      .    %%c**2.44S99!<<r   c                  t    t                               d          d                             d          d         S )NrV   r^   rc   r   r_   r   r   r   package_versionrg      re   r   c                 \    t          j         d|ddg           t          d| j                  S )Nr=   cvesz--listzCVE-\d{4}-\d{4})r   r   text)caplogr0   s     r   CVE_idsrl      s.    It\684555%v{333r   c              #   f    K   d fd	} |            }|V  t          j         d dd|g           d S )NFc                     t          dd          }d                    |          }t          j        ddd|g           | rt          j        ddd|t          g           |S )	Nr   rM   ztest_channel_0{}r=   r>   r?   rF   rG   )r   formatr   rI   )has_packagerS   rB   r0   s      r   rC   z-experimental_new_channel.<locals>.new_channel   su    4(()00??	4y*lKLLL 	I|Xt\CWX   r   r=   r>   r@   )F)r   )r0   rC   rB   s   `  r   experimental_new_channelrq      s_      
 
 
 
 
 
 ;==L
It\9j,GHHHHHr   c                    t           d         d         }t           d         d         }	 t          ||t                    }|| _        || _        | j        | j        _        || j        _        n# t          $ r Y nw xY w	 	 t          | j	        d          s| j
                            d           | j	                                        S # t          j        $ rU | j                            d           | j                                        | _        | j	                            |           cY S w xY w# t          j        $ r8 | j	        j                                         t,          rt/          d          Y dS w xY w)Nr   r   r   r   zWA sub command must be given. To show all available sub commands, run:

	 conda repo -h
zFThe action you are performing requires authentication, please sign in:r   )r!   get_token_patchedtest_urlr   _access_tokenapi_jwtAttributeErrorhasattrr9   parsererrorr   r   Unauthorizedloginfoauth_managerr%   ShowHelp
sub_parser
print_helpexit
SystemExit)selfr   r-   r/   s       r   run_patchedr      s   #G,Z8w'
3K	!"2KJJ("!%!3    	(49f-- !!U  
 9>>###" 	( 	( 	(HMM"   "&!2!8!8!:!:D9>>$'''''	( ?   	''))) 	Q--11s?   AA* *
A76A7<AC A!D(%D+ 'D((D+ +AE21E2c                 L    t          |          }|                    | |          S r    )r
   r%   )r   r-   rt   	token_apis       r   rs   rs     s$    !!I??+[999r   )Eloggingpathlibr   randomr   rer   unittest.mockr   pytestr(   yamlr   r   r   repo_cli.utilsr	   repo_cli.utils.apir
   integration.testcaser   __file__parentherebasicConfigINFO	getLoggerr}   setLevelDEBUG
get_configdefault_configgetr,   rt   strrI   openjoinpathfploadLoaderr!   r   r-   r5   r6   FileNotFoundErrorprintr*   r4   fixturer   r   r0   r:   rC   rJ   rT   rX   rZ   r\   ra   rd   rg   rl   rq   r   rs   r   r   r   <module>r      s                                  ! ! ! ! ! ! ! ! ! ! ! ! ! ! & & & & & & , , , , , ,tH~~  ', ' ' ' 'g
## W]   ""$$~..	e$$s4"LLMM 	cc$-- 23344c	:	: 7b tyT[11'0<"7+J7!'*:6
!'*:6
7 7 7 7 7 7 7 7 7 7 7 7 7 7 7  
 
 
	E	 	 	 	 	 	
        , , ,      .   , M M M    M M M 
 
 
6          / / / = = = = = = 4 4 4 I I I*' ' 'T: : : : :s7   (E* AEE* E""E* %E"&E* *E=<E=