
    _j0                         d dl 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
mZmZ d dlmZ dd	Zdd
ZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZdS )    N)patch)CloudClient)ChromaAuthErrorNotFoundError)UserIdentity)TenantDatabase)uuid4returnc            	      ^   t          d          5 } t          d          5 }t          d          5 }t          d          5 }t          dddg          | _        t          d	          |_        t	          t                      dd
          |_        d|_        t          dd          }|                                j        dk    sJ |                                j	        dk    sJ |                                j
        dgk    sJ |                                }|j        dk    sJ |j        dk    sJ |                                dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N.chromadb.api.fastapi.FastAPI.get_user_identity*chromadb.api.client.AdminClient.get_tenant,chromadb.api.client.AdminClient.get_databasez&chromadb.api.fastapi.FastAPI.heartbeat	test_userdefault_tenanttestdbuser_idtenant	databasesnameidr   r   iIvalid_tokendatabaseapi_keyz1chromadb.auth.token_authn.TokenAuthClientProvider)r   r   return_valuer   r	   r
   r   get_user_identityr   r   r   get_settingschroma_client_auth_credentialschroma_client_auth_provider	heartbeat)mock_get_user_identitymock_get_tenantmock_get_databasemock_heartbeatclientsettingss         c/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/chromadb/test/client/test_cloud_client.pytest_valid_keyr,   
   s   	8
 
 0	4" "0 
%6 	0 
E0 0 
.:(8XJ/
 /
 /
+ (.3C'D'D'D$)1wwX.>*
 *
 *
& '1#hFFF''))1[@@@@''))04DDDDD''))3zAAAA&&((6-GGGG0BC C C C !!Z/////?0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s|   F"F
E3 DE	E3E  E3#E $E3'F
3E77F
:E7;F
>F"
F	F"F	F""F&)F&c                     t          d          5 } t          d          | _        t          j        t                    5  t          dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   zAuthentication failedr   invalid_tokenr   r   r   side_effectpytestraisesr   r%   s    r+   test_invalid_keyr4   -   s%   	8
 
 D	-<=T-U-U*]?++ 	D 	D?CCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	DD D D D D D D D D D D D D D D D D Ds4   .A4AA4A 	 A4#A 	$A44A8;A8c                     t          d          5 } t          d          5 }t          d          5 }t          dddg          | _        t          d          |_        t	          t                      dd	          |_        t          d
          }|j        dk    sJ |j        dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   123-456-789right-dbr   r   r   r   r   )	r   r   r   r   r	   r
   r   r   r   r%   r&   r'   r)   s       r+   2test_scoped_api_key_to_single_db_with_api_key_onlyr:   8   s   	8
 
 .	4" ". 
%6 	. 
.:*/
 /
 /
+ (.='A'A'A$)1wwZ*
 *
 *
& ]333 *,,,,}-----). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .sX   C'CA;B8,C8B<<C?B< CC'C	C'C	C''C+.C+c                     t          d          5 } t          d          5 }t          d          5 }t          dddg          | _        t          d          |_        t	          t                      dd	          |_        t          dd
          }|j        dk    sJ |j        dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r6   r7   r   r   r   r   r   r   	r   r   r   r   r	   r
   r   r   r   r9   s       r+   4test_scoped_api_key_to_single_db_with_correct_tenantr>   P   s   	8
 
 -	4" "- 
%6 	- 
.:*/
 /
 /
+ (.='A'A'A$)1wwZ*
 *
 *
& M=III}----*,,,,,%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -X   C(CA<B9-C9B==C B=CC(C	C(C	C((C,/C,c                     t          d          5 } t          d          5 }t          d          5 }t          dddg          | _        t          d          |_        t	          t                      dd	          |_        t          dd
          }|j        dk    sJ |j        dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r6   r7   r   r   r   r   r   r=   r9   s       r+   0test_scoped_api_key_to_single_db_with_correct_dbrA   f   s   	8
 
 -	4" "- 
%6 	- 
.:*/
 /
 /
+ (.='A'A'A$)1wwZ*
 *
 *
& j-HHH}----*,,,,,%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -r?   c                     t          d          5 } t          d          5 }t          d          5 }t          dddg          | _        t          d          |_        t	          t                      dd	          |_        t          ddd
          }|j        dk    sJ |j        dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r6   r7   r   r   r   r   r   r   r   r=   r9   s       r+   ;test_scoped_api_key_to_single_db_with_correct_tenant_and_dbrD   |   s   	8
 
 -	4" "- 
%6 	- 
.:*/
 /
 /
+ (.='A'A'A$)1wwZ*
 *
 *
&  :}
 
 
 }----*,,,,,)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -sX   C)CA=B:.C:B>>CB>CC)C	C)C	C))C-0C-c                     t          d          5 } t          dddg          | _        t          j        t
          d          5  t          dd	
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r6   r7   r   cTenant wrong-tenant does not match 123-456-789 from the server. Are you sure the tenant is correct?matchwrong-tenantr   r<   r   r   r   r1   r2   r   r   r3   s    r+   2test_scoped_api_key_to_single_db_with_wrong_tenantrK      sE   	8
 
 F	.:*/
 /
 /
+ ]w
 
 
 	F 	F ~}EEEE		F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	FF F F F F F F F F F F F F F F F F F5   4A:A"A:"A&	&A:)A&	*A::A>A>c                     t          d          5 } t          dddg          | _        t          j        t
          d          5  t          dd	
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r6   r7   r   z`Database wrong-db does not match right-db from the server. Are you sure the database is correct?rG   wrong-dbr   r   rJ   r3   s    r+   4test_scoped_api_key_to_single_db_with_wrong_databaserO      sE   	8
 
 D	.:*/
 /
 /
+ ]t
 
 
 	D 	D ]CCCC		D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	DD D D D D D D D D D D D D D D D D DrL   c                     t          d          5 } t          d          | _        t          j        t          d          5  t          dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   zPermission denied.rG   r7   zwrong-api-keyr   r/   r3   s    r+   3test_scoped_api_key_to_single_db_with_wrong_api_keyrQ      s+   	8
 
 F	-<=Q-R-R*]?2FGGG 	F 	F_EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	FF F F F F F F F F F F F F F F F F Fs5   0A6 AA6A"	"A6%A"	&A66A:=A:c                     t          d          5 } t          ddddg          | _        t          j        t
          d          5  t          d	dd
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r6   r7   
another-dbr   rF   rG   rI   r   rC   rJ   r3   s    r+   5test_scoped_api_key_to_multiple_dbs_with_wrong_tenantrT      s1   	8
 
 	.: !<0/
 /
 /
+ ]w
 
 
 	 	 %
M   		 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s5   5A<A$A<$A(	(A<+A(	,A<<B B c            	         t          d          5 } t          d          5 }t          d          5 }t          ddddg          | _        t          d	          |_        t	          t                      dd
          |_        t          ddd          }|j        dk    sJ |j        dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r6   r7   rS   r   r   r   r   rC   r=   r9   s       r+   >test_scoped_api_key_to_multiple_dbs_with_correct_tenant_and_dbrV      s   	8
 
 -	4" "- 
%6 	- 
.: !<0/
 /
 /
+
 (.='A'A'A$)1wwZ*
 *
 *
&  :}
 
 
 }----*,,,,,-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -sX   C*CA>B;/C;B??CB?CC*C	C*C	C**C.1C.c            	         t          d          5 } t          d          5 }t          d          5 }t          ddddg          | _        t          d	          |_        t	          d
          |_        t          j        t          d          5  t          dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r6   r7   rS   r   r   z6Database [wrong-db] not found. Are you sure it exists?z8Database \[wrong-db\] not found. Are you sure it exists?rG   rN   r   r   )	r   r   r   r   r   r0   r1   r2   r   )r%   r&   r'   s      r+   =test_scoped_api_key_to_multiple_dbs_with_nonexistent_databaserX      sc   	8
 
 D	4" "D 
%6 	D 
.: !<0/
 /
 /
+
 (.='A'A'A$(5D)
 )
% ]N
 
 
 	D 	D ]CCCC		D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D#D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D Ds|   C2CACB,	 C,B00C3B04C7CCC
CCC2C	C2!C	"C22C69C6c                     t          d          5 } t          ddddg          | _        t          j        t
          d          5  t          d	
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r6   r7   rS   r   kCould not determine a database name from the current authentication method. Please provide a database name.rG   r   r8   rJ   r3   s    r+   5test_scoped_api_key_to_multiple_dbs_with_api_key_onlyr[     s$   	8
 
 /	.: !<0/
 /
 /
+ ]
 
 
 	/ 	/ ....		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	// / / / / / / / / / / / / / / / / /s5   5A:A"A:"A&	&A:)A&	*A::A>A>c                     t          d          5 } t          dddg          | _        t          j        t
          d          5  t          d	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr   r   *r7   r   ]Could not determine a tenant from the current authentication method. Please provide a tenant.rG   r   r8   rJ   r3   s    r+   !test_api_key_with_unscoped_tenantr_     s   	8
 
 /	.:
|/
 /
 /
+ ]q
 
 
 	/ 	/ ....		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	// / / / / / / / / / / / / / / / / /5   4A9A!A9!A%	%A9(A%	)A99A= A=c                     t          d          5 } t          dddg          | _        t          j        t
          d          5  t          d	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr   r   r6   r]   r   rZ   rG   r   r8   rJ   r3   s    r+   test_api_key_with_unscoped_dbrb   $  s   	8
 
 /	.:#/
 /
 /
+ ]
 
 
 	/ 	/ ....		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	// / / / / / / / / / / / / / / / / /r`   c                  
   t          d          5 } t          ddg           | _        t          j        t
          d          5  t          d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr   r   r6   r   rZ   rG   r   r8   rJ   r3   s    r+   test_api_key_with_no_db_accessrd   3  s   	8
 
 /	.:/
 /
 /
+ ]
 
 
 	/ 	/ ....		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	// / / / / / / / / / / / / / / / / /s5   3A8A A8 A$	$A8'A$	(A88A<?A<c                     t          d          5 } t          dd dg          | _        t          j        t
          d          5  t          d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr   r   r7   r   r^   rG   r   r8   rJ   r3   s    r+   "test_api_key_with_no_tenant_accessrf   B  s   	8
 
 /	.:/
 /
 /
+ ]q
 
 
 	/ 	/ ....		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	// / / / / / / / / / / / / / / / / /r`   )r   N) r1   unittest.mockr   chromadbr   chromadb.errorsr   r   chromadb.authr   chromadb.typesr   r	   uuidr
   r,   r4   r:   r>   rA   rD   rK   rO   rQ   rT   rV   rX   r[   r_   rb   rd   rf        r+   <module>ro      s                      : : : : : : : : & & & & & & + + + + + + + +       0  0  0  0FD D D D. . . .0- - - -,- - - -,- - - -0F F F FD D D DF F F F   &- - - -4D D D D2/ / / /$/ / / // / / // / / // / / / / /rn   