o
    g)                     @   s|  d dl mZ d dlmZ d dlZd dlmZmZ d dl	m
Z
 deje fddZg d	Zdeje fd
dZeejddde Ze Zdeje fddZdedefddZdeje fddZdeje fddZee e edgZeeeeeg dddedee dedee ddf
dd Zee eeeg dddedee dedee ddf
d!d"ZdS )#    )Optional)urlparseN)given
strategies)FastAPIreturnc                  C   s2   t jt jdddddd} t j| dddd	jS )
Na   z   min_codepointmax_codepoint   ?   alphabetmin_sizemax_size   r   r   -)sttext
characterslistsmapjoin)label r   ]/var/www/visachat/venv/lib/python3.10/site-packages/chromadb/test/property/test_client_url.pyhostname_strategy
   s   r   )comorgneteduc                  C   s8   t jt jdddddd} t t}t | |djS )Nr   r	   r
   r   r   r   .)r   r   r   sampled_fromtld_listtuplesr   r   )r   tldr   r   r   domain_strategy   s   
r)   r   i  )	min_value	max_valuec                  C   s8   t jt dddd} t j| ddddjdd	 S )
Nzabcdefghijklmnopqrstuvwxyz/-_r   
   r      r   /c                 S   s   d|  S )Nr.   r   )xr   r   r   <lambda>.   s    z#url_path_strategy.<locals>.<lambda>)r   r   r%   r   r   r   )path_segmentr   r   r   url_path_strategy%   s   
r2   urlc                 C   s0   zt | }t|j|jgW S  ty   Y dS w )NF)r   allschemenetloc	Exception)r3   parsedr   r   r   is_valid_url2   s   r9   c                   C   s$   t jdd t ddgt t dS )Nc                 S      |  | | S Nr   
url_schemehostnameurl_pathr   r   r   r0   <       z+generate_valid_domain_url.<locals>.<lambda>zhttp://zhttps://r<   )r   buildsr%   r)   r2   r   r   r   r   generate_valid_domain_url:   s   rB   c                	   C   s<   t jdd t jdd t jddt g ddt t dS )	Nc                 S   r:   r;   r   r<   r   r   r   r0   E   r@   z-generate_invalid_domain_url.<locals>.<lambda>c                 S   s   |  | S r;   r   r5   suffixr   r   r   r0   G   s    r,   )r   )z://z:///z://// rC   r<   )r   rA   r   r%   r)   r2   r   r   r   r   generate_invalid_domain_urlC   s   
rF   	localhost)z/api/v1z/api/v2N)r>   portssl_enableddefault_api_pathr>   rH   rI   rJ   c                 C   s   t j| |||d}t|sJ d| |r|ds+n|ds+J d| d| | dr@dt| |vs?J d| ndt| |v sOJ d| |r]||s_J d| d S d S )	Nchroma_server_hostchroma_server_http_portchroma_server_ssl_enabledrJ   zInvalid URL: httpshttpz - SSL Enabled: :zPort in URL not expected: zPort in URL expected: )r   resolve_urlr9   
startswithstrendswith)r>   rH   rI   rJ   _urlr   r   r   test_url_resolveU   s,   
 rW   c                 C   sR   t t}tj| |||d W d    n1 sw   Y  dt|jv s'J d S )NrK   zInvalid URL)pytestraises
ValueErrorr   rR   rT   value)r>   rH   rI   rJ   er   r   r   test_resolve_invalids   s   r]   ) typingr   urllib.parser   rX   
hypothesisr   r   r   chromadb.api.fastapir   SearchStrategyrT   r   r&   r)   one_ofintegersnoneport_strategybooleansssl_enabled_strategyr2   boolr9   rB   rF   r%   host_or_domain_strategyintrW   r]   r   r   r   r   <module>   sf    	
	