o
    g
                     @   s   d dl mZmZ d dlmZmZ d dlm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mZmZ edd	ee e e d
eeef dededdfddZedd	ee e e e d
eeef dedededdf
ddZdS )    )givensettings)AnyDictN)	ServerAPI)System)_fastapi_fixture)random_tokenrandom_token_transport_headertoken_test_conf
   )max_examplestconftransport_headerpersistencereturnc              
   C   sj   | d D ].}|d D ]'}t ||d| d d|d}t|}|  |t}|  | g ks1J q
qd S )Nuserstokens;chromadb.auth.token_authn.TokenAuthenticationServerProviderfilename1chromadb.auth.token_authn.TokenAuthClientProvideris_persistent"chroma_auth_token_transport_headerchroma_server_authn_provider$chroma_server_authn_credentials_filechroma_client_auth_providerchroma_client_auth_credentials)r   nextreset_stateinstancer   	heartbeatlist_collections)r   r   r   usertokenapi_sys_api r(   Z/var/www/visachat/venv/lib/python3.10/site-packages/chromadb/test/auth/test_token_authn.py;test_fastapi_server_token_authn_allows_when_it_should_allow   s"   
r*   unauthorized_tokenc           
   
   C   s   | d D ]}|d D ]
}||kr  d S q
q| d D ]G}|d D ]@}t ||d| d d|d}t|}|  |t}|  tt}	|	  W d    n1 sSw   Y  dt
|	v s`J q qd S )Nr   r   r   r   r   r   	Forbidden)r   r   r   r    r   r!   pytestraises	Exceptionr"   str)
r   r+   r   r   r#   tr'   r&   r%   er(   r(   r)   =test_fastapi_server_token_authn_rejects_when_it_should_reject'   s4   

r3   )
hypothesisr   r   typingr   r   hypothesis.strategies
strategiesstr-   chromadb.apir   chromadb.configr   chromadb.test.conftestr   chromadb.test.auth.strategiesr	   r
   r   booleansr0   boolr*   r3   r(   r(   r(   r)   <module>   sD    

