o
    Yi                      @   sz  d Z ddlZddlmZ ddlm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 G dd dejZejje	jddddd Zejje	jddddd Zejje	jddddd Zejje	jddddd Zejjejje	jddddd Zejjejje	jddddd Zejjejje	jddddd Zejjejje	jddddd  ZdS )!zTest files register method.    N)mock)credentials   )_api_client)Client)types   )pytest_helperc                       s>   e Zd Zd fdd	Zedd Zedd	 Zd
d Z  ZS )FakeCredentials
fake_tokenFNc                    s&   t    || _|| _|| _d| _d S )Nr   )super__init__token_expired_quota_project_idrefresh_count)selfr   expiredquota_project_id	__class__ `/home/kim/smarthome/.venv/lib/python3.10/site-packages/google/genai/tests/files/test_register.pyr   "   s
   

zFakeCredentials.__init__c                 C      | j S N)r   r   r   r   r   r   )      zFakeCredentials.expiredc                 C   r   r   )r   r   r   r   r   r   -   r   z FakeCredentials.quota_project_idc                 C   s   |  j d7  _ d| _d| _d S )N   Zrefreshed_tokenF)r   r   r   )r   requestr   r   r   refresh1   s   
zFakeCredentials.refresh)r   FN)	__name__
__module____qualname__r   propertyr   r   r   __classcell__r   r   r   r   r
       s    

r
   Z_request_onceT)Zautospecc                    s   t dd}d  d fdd	}|| _t|t1 |jjtdddgd	}t|jd
ks-J |jd j	dks7J  j
d dks@J W d    d S 1 sKw   Y  d S )N	dummy_keyZapi_keyFc                    $   | t ji tdddigigdS Nfilesuri	files/abcheadersZresponse_streamr   ZHttpResponsejsondumpsr   http_requeststreamZcaptured_requestr   r   side_effect<   
   z&test_simple_token.<locals>.side_effectZ
test_token)r    gs://test-bucket/test-file-1.txtauthurisr   r   r+   authorizationzBearer test_tokenF)r   r5   r	   exception_if_vertex
ValueErrorr)   register_filesr
   lenr*   r-   mock_requestclientr5   responser   r4   r   test_simple_token7   s   
"rE   c                    s   t dd}d  d fdd	}|| _t|t: tdd}|jj|dgd	}|jd
ks-J t	|jd
ks6J |jd j
dks@J  jd dksIJ W d    d S 1 sTw   Y  d S )Nr%   r&   Fc                    r'   r(   r.   r1   r4   r   r   r5   V   r6   z'test_token_refresh.<locals>.side_effectTr   r7   r8   r   r   r+   r;   Bearer refreshed_tokenr<   )r   r5   r	   r=   r>   r
   r)   r?   r   r@   r*   r-   rB   rC   r5   credsrD   r   r4   r   test_token_refreshQ   s   

"rJ   c                    s   t dd}d  d fdd	}|| _t|t3 tdd}|jj|dgd	}t|jd
ks/J |jd j	dks9J  j
d dksBJ W d    d S 1 sMw   Y  d S )Nr%   r&   Fc                    r'   r(   r.   r1   r4   r   r   r5   q   r6   z'test_quota_project.<locals>.side_effecttest_projectr   r7   r8   r   r   r+   x-goog-user-projectr<   )r   r5   r	   r=   r>   r
   r)   r?   r@   r*   r-   rH   r   r4   r   test_quota_projectl   s   

"rN   c                 C   s   t dd}ddd}|| _t|t1 |jjt ddgd}t|jd	ks(J |jd
 j	dks2J |jd j	dks<J W d    d S 1 sGw   Y  d S )Nr%   r&   Fc                 S   s&   t ji tdddiddigigdS Nr)   r*   r+   	files/defr,   r.   r1   r   r   r   r5      s
   z'test_multiple_uris.<locals>.side_effectr7    gs://test-bucket/test-file-2.txtr8   r   r   r+   r   rP   r<   )
r   r5   r	   r=   r>   r)   r?   r
   r@   r*   rA   r   r   r   test_multiple_uris   s   

"rR   Z_async_request_oncec                    s   t dd}ddd}|| _t|t* |jjjt dgdI d H }t	|jdks,J |jd	 j
d
ks6J W d    d S 1 sAw   Y  d S )Nr%   r&   Fc                    s"   t ji tdddigigdS r(   r.   r1   r   r   r   r5      s
   z&test_async_single.<locals>.side_effectr7   r8   r   r   r+   r<   r   r5   r	   r=   r>   aior)   r?   r
   r@   r*   rA   r   r   r   test_async_single   s   

"rU   c                    s   t dd}d  d fdd	}|| _t|t> tdd}|jjj|dgd	I d H }|j	d
ks2J t
|jd
ks;J |jd jdksEJ  jd dksNJ W d    d S 1 sYw   Y  d S )Nr%   r&   Fc                    &   | t ji tdddigigdS r(   r.   r1   r4   r   r   r5         z-test_async_token_refresh.<locals>.side_effectTrF   r7   r8   r   r   r+   r;   rG   r<   )r   r5   r	   r=   r>   r
   rT   r)   r?   r   r@   r*   r-   rH   r   r4   r   test_async_token_refresh   s    

"rX   c                    s   t dd}d  d fdd	}|| _t|t7 tdd}|jjj|dgd	I d H }t	|jd
ks4J |jd j
dks>J  jd dksGJ W d    d S 1 sRw   Y  d S )Nr%   r&   Fc                    rV   r(   r.   r1   r4   r   r   r5      rW   z-test_async_quota_project.<locals>.side_effectrK   rL   r7   r8   r   r   r+   rM   r<   )r   r5   r	   r=   r>   r
   rT   r)   r?   r@   r*   r-   rH   r   r4   r   test_async_quota_project   s   

"rY   c                    s   t dd}ddd}|| _t|t5 |jjjt ddgdI d H }t	|jd	ks-J |jd
 j
dks7J |jd j
dksAJ W d    d S 1 sLw   Y  d S )Nr%   r&   Fc                    s(   t ji tdddiddigigdS rO   r.   r1   r   r   r   r5      s   z-test_async_multiple_uris.<locals>.side_effectr7   rQ   r8   r   r   r+   r   rP   r<   rS   rA   r   r   r   test_async_multiple_uris   s   

"rZ   )__doc__r/   Zunittestr   Zgoogle.authr   ZhttpxZpytest r   r   r   r	   Credentialsr
   patchobjectZBaseApiClientrE   rJ   rN   rR   markZasynciorU   rX   rY   rZ   r   r   r   r   <module>   sN   



