
    ug                     4   d dl mZ d dlZd dlmZmZmZmZ d dl	Z	d dl
Z
d dlmZ d dlmZ ej                  dej                   dee   fd       Zej                  dej                   defd       Zej                  dej                   dee   fd	       Zej                  dej                   defd
       Zej                  dej                   deeeef      fd       Zej                  dej                   deeef   fd       Zg dZdee   dee   fdZej                  dej                   defd       Zej                  dej                   defd       Zej                  dej                   dee   fd       Zej                  dej                   deeeef      fd       Zdeeeef      deeef   fdZej                  dej                   deeef   fd       Zdeeef   fdZ ej                  dej                   deeef   fd       Z!dedefdZ"y)    N)AnyDictListOptional)TokenTransportHeader)collection_namedrawreturnc                     t        t              dz  dz  dz  dz  } | t        j                  t	               ||            }t               }g }|D ])  }||v r|j                  |       |j                  |       + |S )N
      min_sizemax_size)lenvalid_action_spacestlistsr   setaddappend)r	   lengthnamesseenunseennames         R/var/www/openai/venv/lib/python3.12/site-packages/chromadb/test/auth/strategies.pymany_unique_namesr      s     #$r)B.2Q6F
	
E 5DF4<d	 
 M    c                 |     | t        j                  t        j                  t        j                  z   dd            S )N   2   alphabetr   r   )r   textstringascii_lettersdigitsr	   s    r   random_tokenr*   $   s/    
--=TVW r   c                 v     | t        j                  t        j                  t        j                  d g            S N)r   sampled_fromr   AUTHORIZATIONX_CHROMA_TOKENr)   s    r   random_token_transport_headerr0   +   s5    
$22$33	
 r   c                 Z     | t        j                  t        j                  dd            S Nr!      r#   r   r%   r&   r'   r)   s    r   random_user_namer5   8        !5!5BOPPr   c                     | t        j                  t        j                  t               t        j                  t	               dd      d      dd            }g }t               }t               }|D ]  }|d   |v r |S |d   D ]  }||v s   |j                  d          |d   D ]  }|j                  |        |j                  |       |S )N   r   r   )idtokensr!   r9   r:   )r   r   fixed_dictionariesr5   r*   r   r   r   )r	   usersunseen_users
seen_usersseen_tokensusertokens          r   random_users_with_tokensrB   =   s    
!!*, hh|~BO 		
E LJ%K:#  (^E# $  	tDz"(^EOOE" $ 	D!r   c                 F     | t                     }t        d|i      }||dS )Nr<   )r<   filename)rB   _dump_to_tmpfile)r	   r<   rD   s      r   token_test_confrF   ]   s*    )+,E% 01H11r   )zsystem:resetztenant:create_tenanttenant:get_tenantzdb:create_databasedb:get_databasezdb:list_collectionszdb:create_collectionzdb:get_or_create_collectioncollection:get_collectioncollection:delete_collectioncollection:update_collectioncollection:addcollection:deletecollection:getcollection:querycollection:peekcollection:countcollection:updatecollection:upsertauthorized_actionsc                 >    t         D cg c]	  }|| vs| c}S c c}w r,   r   )rT   actions     r   unauthorized_actionsrX   {   s$    !3X!3vvEW7WF!3XXXs   	c                 Z     | t        j                  t        j                  dd            S r2   r4   r)   s    r   random_role_namerZ      r6   r   c                 @     | t        j                  t                    S r,   )r   r-   r   r)   s    r   random_actionr\      s     2344r   c                     | t        j                  t               dd            t        fddD              rj	                  d       dv rj	                  d       j	                  d	       j	                  d
       t              S )Nr!   r   r   c              3   &   K   | ]  }|v  
 y wr,    ).0rW   actionss     r   	<genexpr>z2random_allowed_actions_for_role.<locals>.<genexpr>   s"      
F 	'
s   )
rL   rM   rN   rO   rP   rR   rS   rQ   rK   rJ   rI   rP   rN   rG   rH   )r   setsr\   anyr   list)r	   ra   s    @r   random_allowed_actions_for_rolerf      s{    277=?QDEG
 
  	/0G#$%KK#$KK!"=r   c           	          | t        j                  t        j                  t               t	               d      dd            }g }t               }|D ]/  }|d   |v r|j                  |d          |j                  |       1 |S )Nr9   ra   r!   r   r   r9   )r   r   r;   rZ   rf   r   r   r   )r	   rolesunseen_rolesr   roles        r   random_rolesrl      s    
!!')6U6WX 	
E L5D:dD!	 
 r   ri   c                 N    i }| D ]  }|j                  |d   d|d   ii        |S )Nr9   ra   )update)ri   roles_mappingrk   s      r   _transform_roles_for_flushrp      s7    Md4j9d9o*FGH r   c           	           | t                     } | t                     }|D ]6  } | t        j                  dt	        |      dz
              }||   d   |d<   8 ||dS )Nr   r!   )	min_value	max_valuer9   rk   r<   ri   )rB   rl   r   integersr   )r	   r<   ri   r@   
role_indexs        r   random_users_and_rolesrw      sc    )+,E E"++SZ!^LM
Z(.V  U++r   c                  (    ddgddgdt         dgdS )N__root__)r9   r:   rk   rh   rt   rV   r_   r   r   _root_user_and_rolerz      s'    #
|ZPQ#0BCD r   c                      | t                     }t               }|d   j                  |d          |d   j                  |d          t        |d   t	        |d         d      }|d   |d   |dS )Nr<   ri   )r<   ro   )r<   ri   rD   )rw   rz   extendrE   rp   )r	   users_and_rolesroot_user_and_rolerD   s       r   rbac_test_confr      s    134O,.G##$6w$?@G##$6w$?@$W-78PQ	
H !) ) r   datac                     t        j                  d      }t        |j                  d      5 }t	        j
                  | |       d d d        |j                  S # 1 sw Y   |j                  S xY w)NF)deletew)tempfileNamedTemporaryFileopenr   yamldump)r   tmpfs      r   rE   rE      sM    

%
%U
3C	chh			$ 
88O 
88Os   AA,)#hypothesis.strategies
strategiesr   r   typingr   r   r   r   r   r&   chromadbr   !chromadb.test.property.strategiesr   	compositeDrawFnstrr   r*   r0   r5   rB   rF   r   rX   rZ   r\   rf   rl   rp   rw   rz   r   rE   r_   r   r   <module>r      s   "  , ,   ) = BII $s)  . ryy S   			 	hsm 	 	 Q299 Q Q Q 299 d38n1E  > 2")) 2S#X 2 2 .YT#Y Y49 Y Q299 Q Q Q 5		 5c 5 5 ")) S	  8 ryy T$sCx.%9  (d4S>&: tCH~  , ,tCH~ , ,T#s(^   tCH~  &3 3 r   