
    3i0                        S SK r S SKJr  S SKJr  S SKJrJr  S SKJ	r	  S SK
JrJr  S SKJr  SS jrSS	 jrSS
 jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrg)    N)patch)CloudClient)ChromaAuthErrorNotFoundError)UserIdentity)TenantDatabase)uuid4c            
         [        S5       n [        S5       n[        S5       n[        S5       n[        SSS/S9U l        [        SS	9Ul        [	        [        5       SSS
9Ul        SUl        [        SSS9nUR                  5       R                  S:X  d   eUR                  5       R                  S:X  d   eUR                  5       R                  S/:X  d   eUR                  5       nUR                  S:X  d   eUR                  S:X  d   eUR                  5       S:X  d   e S S S 5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N'= f! , (       d  f       N0= f! , (       d  f       N9= f! , (       d  f       g = f)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         `/home/james-whalen/.local/lib/python3.13/site-packages/chromadb/test/client/test_cloud_client.pytest_valid_keyr+   
   s   	8
	4"	%6	E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///3"
 
  " "
 
sQ   E9E(EC4E	%E-E(5E9
EE
E%!E((
E6	2E99
Fc                      [        S5       n [        S5      U l        [        R                  " [        5         [        SSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   zAuthentication failedr   invalid_tokenr   r   r   side_effectpytestraisesr   r$   s    r*   test_invalid_keyr3   -   sX    	8
	-<=T-U*]]?+?C ,
 

 ,+
 
"   +A$AA$
A!	A$$
A2c            	         [        S5       n [        S5       n[        S5       n[        SSS/S9U l        [        SS9Ul        [	        [        5       SSS	9Ul        [        S
S9nUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)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$)1wZ*
& ]3 *,,,}}---!"
 
 " "
 
s:   CB4A%B#
B4C#
B1-B44
C	>C
Cc            	         [        S5       n [        S5       n[        S5       n[        SSS/S9U l        [        SS9Ul        [	        [        5       SSS	9Ul        [        SS
S9nUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)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$)1wZ*
& M=I}}---*,,,"
 
 " "
 
:   CB5A&B$B5C$
B2.B55
C	?C
Cc            	         [        S5       n [        S5       n[        S5       n[        SSS/S9U l        [        SS9Ul        [	        [        5       SSS	9Ul        [        SS
S9nUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)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$)1wZ*
& j-H}}---*,,,"
 
 " "
 
r?   c            	         [        S5       n [        S5       n[        S5       n[        SSS/S9U l        [        SS9Ul        [	        [        5       SSS	9Ul        [        SSS
S9nUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)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$)1wZ*
&  :}
 }}---*,,,!"
 
 " "
 
s:   CB6A'B%B6C%
B3/B66
C	 C
Cc                      [        S5       n [        SSS/S9U l        [        R                  " [
        SS9   [        SS	S
9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)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   r0   r1   r   r   r2   s    r*   2test_scoped_api_key_to_single_db_with_wrong_tenantrK      sl    	8
	.:*/
+ ]]w
 ~}E	

 

 

 
r4   c                      [        S5       n [        SSS/S9U l        [        R                  " [
        SS9   [        SS	S
9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)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   r2   s    r*   4test_scoped_api_key_to_single_db_with_wrong_databaserN      sl    	8
	.:*/
+ ]]t
 ]C	

 

 

 
r4   c                      [        S5       n [        S5      U l        [        R                  " [        SS9   [        SSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   zPermission denied.rG   r7   zwrong-api-keyr   r.   r2   s    r*   3test_scoped_api_key_to_single_db_with_wrong_api_keyrP      s]    	8
	-<=Q-R*]]?2FG_E H
 

 HG
 
s"   *A#AA#
A 	A##
A1c                      [        S5       n [        SSSS/S9U l        [        R                  " [
        SS9   [        S	SS
S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r6   r7   
another-dbr   rF   rG   rI   r   rC   rJ   r2   s    r*   5test_scoped_api_key_to_multiple_dbs_with_wrong_tenantrS      sv    	8
	.: !<0/
+ ]]w
 %
M	

 

 

 
s"   ,A&AA&
A#	A&&
A4c            	         [        S5       n [        S5       n[        S5       n[        SSSS/S9U l        [        SS	9Ul        [	        [        5       SSS
9Ul        [        SSSS9nUR                  S:X  d   eUR                  S:X  d   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   r   r   r   r6   r7   rR   r   r   r   r   rC   r=   r9   s       r*   >test_scoped_api_key_to_multiple_dbs_with_correct_tenant_and_dbrU      s    	8
	4"	%6	.: !<0/
+
 (.='A$)1wZ*
&  :}
 }}---*,,,%"
 
 " "
 
s:   CB7A(B&B7C&
B40B77
C	C
Cc            	         [        S5       n [        S5       n[        S5       n[        SSSS/S9U l        [        SS	9Ul        [	        S
5      Ul        [        R                  " [        SS9   [        SSS9  S S S 5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N'= f! , (       d  f       N0= f! , (       d  f       N9= f! , (       d  f       g = f)Nr   r   r   r   r6   r7   rR   r   r   z6Database [wrong-db] not found. Are you sure it exists?z8Database \[wrong-db\] not found. Are you sure it exists?rG   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
	4"	%6	.: !<0/
+
 (.='A$(5D)
% ]]N
 ]C	
"
 
"
 
 " "
 
sR   CB<A
B+.B	9B+B<	C
B($B++
B95B<<
C
	C
Cc                      [        S5       n [        SSSS/S9U l        [        R                  " [
        SS9   [        S	S
9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r6   r7   rR   r   kCould not determine a database name from the current authentication method. Please provide a database name.rG   r   r8   rJ   r2   s    r*   5test_scoped_api_key_to_multiple_dbs_with_api_key_onlyrZ     so    	8
	.: !<0/
+ ]]
 .	

 

 

 
s"   ,A$
AA$
A!	A$$
A2c                      [        S5       n [        SSS/S9U l        [        R                  " [
        SS9   [        SS	9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
Nr   r   *r7   r   ]Could not determine a tenant from the current authentication method. Please provide a tenant.rG   r   r8   rJ   r2   s    r*   !test_api_key_with_unscoped_tenantr^     sj    	8
	.:
|/
+ ]]q
 .	

 

 

 
"   +A#
AA#
A 	A##
A1c                      [        S5       n [        SSS/S9U l        [        R                  " [
        SS9   [        SS	9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
Nr   r   r6   r\   r   rY   rG   r   r8   rJ   r2   s    r*   test_api_key_with_unscoped_dbra   $  sj    	8
	.:#/
+ ]]
 .	

 

 

 
r_   c                      [        S5       n [        SS/ S9U l        [        R                  " [
        SS9   [        SS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nr   r   r6   r   rY   rG   r   r8   rJ   r2   s    r*   test_api_key_with_no_db_accessrc   3  sh    	8
	.:/
+ ]]
 .	

 

 

 
s"   *A"
A A"
A	A""
A0c                      [        S5       n [        SS S/S9U l        [        R                  " [
        SS9   [        SS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nr   r   r7   r   r]   rG   r   r8   rJ   r2   s    r*   "test_api_key_with_no_tenant_accessre   B  sj    	8
	.:/
+ ]]q
 .	

 

 

 
r_   )returnN) r0   unittest.mockr   chromadbr   chromadb.errorsr   r   chromadb.authr   chromadb.typesr   r	   uuidr
   r+   r3   r:   r>   rA   rD   rK   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   