
    ei0                         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y)    N)patch)CloudClient)ChromaAuthErrorNotFoundError)UserIdentity)TenantDatabase)uuid4c            	         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                         j                  dk(  sJ |j                         j                  dk(  sJ |j                         j                  dgk(  sJ |j                         }|j                  dk(  sJ |j                  dk(  sJ |j                         dk(  sJ 	 d d d        d d d        d d d        d d d        y # 1 sw Y   "xY w# 1 sw Y   &xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)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         p/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/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$)1wX.>*
& '1#hF'')11[@@@'')004DDDD'')33zAAA&&(66-GGG00BC	
C !Z///?0 0 0 0 0 0 0 0 0 0 0 0sQ   E0E$EC:E	+E3E$;E0EEE!E$$E-	)E00E9c                      t        d      5 } t        d      | _        t        j                  t              5  t        dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   zAuthentication failedr   invalid_tokenr   r   r   side_effectpytestraisesr   r$   s    r*   test_invalid_keyr3   -   sm    	8
 D	-<=T-U*]]?+ 	D?C	DD D
	D 	DD Ds"   *A!AA!A	A!!A*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        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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_onlyr9   8   s    	8
 .	4". 
%6	. 
.:*/
+ (.='A$)1wZ*
& ]3 *,,,}}---). . . . . . . . .s:   CB9A/B-B9C-B62B99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        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   r   r5   r6   r   r   r   r   r   r   	r   r   r   r   r	   r
   r   r   r   r8   s       r*   4test_scoped_api_key_to_single_db_with_correct_tenantr=   P   s    	8
 -	4"- 
%6	- 
.:*/
+ (.='A$)1wZ*
& M=I}}---*,,,%- - - - - - - - -:   CB:A0B.B:C.B73B::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        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   r   r5   r6   r   r   r   r   r   r<   r8   s       r*   0test_scoped_api_key_to_single_db_with_correct_dbr@   f   s    	8
 -	4"- 
%6	- 
.:*/
+ (.='A$)1wZ*
& j-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        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   r   r5   r6   r   r   r   r   r   r   r   r<   r8   s       r*   ;test_scoped_api_key_to_single_db_with_correct_tenant_and_dbrC   |   s    	8
 -	4"- 
%6	- 
.:*/
+ (.='A$)1wZ*
&  :}
 }}---*,,,)- - - - - - - - -s:   CB;A1B/B;C/B84B;;C	 CCc                      t        d      5 } t        dddg      | _        t        j                  t
        d      5  t        dd	
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r5   r6   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   r0   r1   r   r   r2   s    r*   2test_scoped_api_key_to_single_db_with_wrong_tenantrJ      s    	8
 F	.:*/
+ ]]w
 	F ~}E		FF F	F 	FF F"   0A'A
A'A$	 A''A0c                      t        d      5 } t        dddg      | _        t        j                  t
        d      5  t        dd	
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r5   r6   r   z`Database wrong-db does not match right-db from the server. Are you sure the database is correct?rF   wrong-dbr   r   rI   r2   s    r*   4test_scoped_api_key_to_single_db_with_wrong_databaserN      s    	8
 D	.:*/
+ ]]t
 	D ]C		DD D	D 	DD DrK   c                      t        d      5 } t        d      | _        t        j                  t        d      5  t        dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   zPermission denied.rF   r6   zwrong-api-keyr   r.   r2   s    r*   3test_scoped_api_key_to_single_db_with_wrong_api_keyrP      sp    	8
 F	-<=Q-R*]]?2FG 	F_E	FF F
	F 	FF Fs"   ,A#AA#A 	A##A,c                      t        d      5 } t        ddddg      | _        t        j                  t
        d      5  t        d	dd
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r5   r6   
another-dbr   rE   rF   rH   r   rB   rI   r2   s    r*   5test_scoped_api_key_to_multiple_dbs_with_wrong_tenantrS      s    	8
 	.: !<0/
+ ]]w
 	 %
M		 	 	 s"   1A)AA)A&	"A))A2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        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   r   r5   r6   rR   r   r   r   r   rB   r<   r8   s       r*   >test_scoped_api_key_to_multiple_dbs_with_correct_tenant_and_dbrU      s    	8
 -	4"- 
%6	- 
.: !<0/
+
 (.='A$)1wZ*
&  :}
 }}---*,,,-- - - - - - - - -s:   CB<A2B0B<C0B95B<<C	C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        d d d        d d d        d d d        y # 1 sw Y   "xY w# 1 sw Y   &xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr   r   r   r   r5   r6   rR   r   r   z6Database [wrong-db] not found. Are you sure it exists?z8Database \[wrong-db\] not found. Are you sure it exists?rF   rM   r   r   )	r   r   r   r   r   r/   r0   r1   r   )r$   r%   r&   s      r*   =test_scoped_api_key_to_multiple_dbs_with_nonexistent_databaserW      s    	8
 D	4"D 
%6	D 
.: !<0/
+
 (.='A$(5D)
% ]]N
 	D ]C		D#D D D D"	D 	D#D D D D D DsR   C	B=AB16B%	B1B=C	%B.*B11B:6B==C	C		Cc                      t        d      5 } t        ddddg      | _        t        j                  t
        d      5  t        d	
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r5   r6   rR   r   kCould not determine a database name from the current authentication method. Please provide a database name.rF   r   r7   rI   r2   s    r*   5test_scoped_api_key_to_multiple_dbs_with_api_key_onlyrZ     sy    	8
 /	.: !<0/
+ ]]
 	/ .		// /	/ 	// /s"   1A'A
A'A$	 A''A0c                      t        d      5 } t        dddg      | _        t        j                  t
        d      5  t        d	       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nr   r   *r6   r   ]Could not determine a tenant from the current authentication method. Please provide a tenant.rF   r   r7   rI   r2   s    r*   !test_api_key_with_unscoped_tenantr^     st    	8
 /	.:
|/
+ ]]q
 	/ .		// /	/ 	// /"   0A&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 d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nr   r   r5   r\   r   rY   rF   r   r7   rI   r2   s    r*   test_api_key_with_unscoped_dbra   $  st    	8
 /	.:#/
+ ]]
 	/ .		// /	/ 	// /r_   c                      t        d      5 } t        ddg       | _        t        j                  t
        d      5  t        d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nr   r   r5   r   rY   rF   r   r7   rI   r2   s    r*   test_api_key_with_no_db_accessrc   3  sr    	8
 /	.:/
+ ]]
 	/ .		// /	/ 	// /s"   /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 d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nr   r   r6   r   r]   rF   r   r7   rI   r2   s    r*   "test_api_key_with_no_tenant_accessre   B  st    	8
 /	.:/
+ ]]q
 	/ .		// /	/ 	// /r_   )returnN) r0   unittest.mockr   chromadbr   chromadb.errorsr   r   chromadb.authr   chromadb.typesr   r	   uuidr
   r+   r3   r9   r=   r@   rC   rJ   rN   rP   rS   rU   rW   rZ   r^   ra   rc   re        r*   <module>ro      su        : & +  0FD.0-,-,-0FDF&-4D2/$////rn   