Ë
    lQêj³0  ã                   óä   — 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         úk/home/oem/CyberBrain26-unified/.venv/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ð 
Ü.:ØÐ(8ÀXÀJô/
ÐÔ+ô (.Ð3CÔ'DˆÔ$Ü)1Ü‹w˜XÐ.>ô*
ÐÔ&ð '1ˆÔ#ä h¸ÔFˆà×'Ñ'Ó)×1Ñ1°[Ò@Ð@Ð@Ø×'Ñ'Ó)×0Ñ0Ð4DÒ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ð 0úsQ   Œ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Ü‹w˜Z°ô*
ÐÔ&ô  ]Ô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Ü‹w˜Z°ô*
ÐÔ&ô  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Ü‹w˜Z°ô*
ÐÔ&ô  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Ü‹w˜Z°ô*
ÐÔ&ô Ø ¨:¸}ô
ˆð �}‰} Ò-Ð-Ð-Ø�‰ *Ò,Ð,Ñ,÷)-÷ -÷ -÷ -ñ -ú÷ -ð -ú÷ -ð -ú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Ü‹w˜Z°ô*
ÐÔ&ô Ø ¨:¸}ô
ˆð �}‰} Ò-Ð-Ð-Ø�‰ *Ò,Ð,Ñ,÷--÷ -÷ -÷ -ñ -ú÷ -ð -ú÷ -ð -ú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   ðÛ Ý Ý  ß :Ý &ß +Ý ó 0óFDó.ó0-ó,-ó,-ó0FóDóFóó&-ó4Dó2/ó$/ó/ó/ô/rn   