o
    Vh                     @   sl   d Z ddlZddlZddlZddlmZ ddlmZ dZe	dd eD d	ks)J d
d Z
G dd dZdS )z)
Common test functionality for backends.
    N)errors   )random_stringuH  זהכיףסתםלשמועאיךתנצחקרפדעץטובבגןξεσκεπάζωτηνψυχοφθόραβδελυγμίαСъешьжеещёэтихмягкихфранцузскихбулокдавыпейчаюЖълтатадюлябешещастливачепухъткойтоцъфназамръзнакатогьонc                 c   s    | ]}t |V  qd S Nord).0char r
   k/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/keyring/testing/backend.py	<genexpr>   s    r      c                 C   s   t dd | D S )Nc                 s   s,    | ]}d t |  kodk n  V  qdS )    r   Nr   )r   cr
   r
   r   r      s   * z%is_ascii_printable.<locals>.<genexpr>)all)sr
   r
   r   is_ascii_printable   s   r   c                   @   s   e Zd ZdZejej Zej	dd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ejjd"d#d$d%d& Zd'd( Zd)d* Zd+d, Zd-S ).BackendBasicTestszETest for the keyring's basic functions. password_set and password_getT)autousec                 C   s"   |   | _t | _|| j d S r   )init_keyringkeyringsetcredentials_createdaddfinalizercleanup)selfrequestr
   r
   r   _init_properties%   s   
z"BackendBasicTests._init_propertiesc                 C   s   | j D ]}| jj|  qd S r   )r   r   delete_password)r   itemr
   r
   r   r   +   s   
zBackendBasicTests.cleanupc                 C   s$   | j ||| | j||f d S r   )r   set_passwordr   add)r   serviceusernamepasswordr
   r
   r   r    /   s   zBackendBasicTests.set_passwordc                 C   sb   | j }|||d u sJ | ||| ||||ksJ | ||d |||dks/J d S )N )r   get_passwordr    )r   r"   r#   r$   r   r
   r
   r   check_set_get5   s   zBackendBasicTests.check_set_getc                 C   s*   t d}t d}t d}| ||| d S N   )r   r'   r   r$   r#   r"   r
   r
   r   test_password_set_getC   s   z'BackendBasicTests.test_password_set_getc                 C   s4   t d}t d}| j||d | j||d d S )Nr)   r%   z	non-blank)r   r   r    )r   r"   r#   r
   r
   r   test_set_after_set_blankI   s   z*BackendBasicTests.test_set_after_set_blankc                 C   s6   t d| j}t d| j}t d| j}| ||| d S r(   )r   DIFFICULT_CHARSr'   r*   r
   r
   r   test_difficult_charsO   s   z&BackendBasicTests.test_difficult_charsc                 C   s\   t d| j}t d| j}t d| j}| j||| | j|| | j||d u s,J d S r(   r   r-   r   r    r   r&   r*   r
   r
   r   test_delete_presentU   s   z%BackendBasicTests.test_delete_presentc                 C   sX   t d| j}t d| j}ttj | j|| W d    d S 1 s%w   Y  d S r(   )r   r-   pytestraisesr   PasswordDeleteErrorr   r   )r   r#   r"   r
   r
   r   test_delete_not_present]   s
   "z)BackendBasicTests.test_delete_not_presentc                 C   sv   t d| j}t d| j}t d| j}t d| j}| j||| | ||| | j|| | j|||ks9J d S r(   r/   )r   	username1	username2r$   r"   r
   r
   r   test_delete_one_in_groupc   s   z*BackendBasicTests.test_delete_one_in_groupc                 C   s   t | jjsJ d S r   )r   r   namer   r
   r
   r   test_name_propertym   s   z$BackendBasicTests.test_name_propertyc                 C   s0   t dt}t dt}t dt}| ||| d S r(   )r   UNICODE_CHARSr'   r*   r
   r
   r   test_unicode_charsp   s   


z$BackendBasicTests.test_unicode_charsc                 C   sN   t dtt d t d| j }t d|}t d|}t d|}| ||| d S )N
   r)   )r   r;   r-   r'   )r   sourcer$   r#   r"   r
   r
   r   test_unicode_and_ascii_charsv   s   



z.BackendBasicTests.test_unicode_and_ascii_charsc                 C   sp   | j }| ddd | ddd |dddksJ |dddks%J | ddd |dddks6J d	S )
z
        Issue #47 reports that WinVault isn't storing passwords for
        multiple users. This test exercises that test for each of the
        backends.
        service1user1	password1user2	password2service2user3	password3N)r   r    r&   )r   r   r
   r
   r   test_different_user   s   z%BackendBasicTests.test_different_userc                 C   s   | j }|dd }|d u sJ | ddd | ddd |dd }|d u s1|j|jfdv s1J |dd}|d us=J |j|jfdv sGJ d S )Nr"   r@   rA   rB   rC   rD   ))rA   rB   )rC   rD   )r   get_credentialr    r#   r$   )r   r   credr
   r
   r   test_credential   s   z!BackendBasicTests.test_credentialzplatform.system() == 'Windows'z#668)reasonc                 C   sP   t   | ddd W d    n1 sw   Y  | jdddks&J d S )Nr@   r%   rB   )r1   deprecated_callr    r   r&   r9   r
   r
   r   test_empty_username   s   
z%BackendBasicTests.test_empty_usernamec                 C   s8   t ddd}|td| | j  | jjdksJ d S )Nz	fizz buzzz	ignore me)KEYRING_PROPERTY_FOO_BAROTHER_SETTINGenviron)dictsetattrosr   set_properties_from_envfoo_bar)r   monkeypatchenvr
   r
   r   test_set_properties   s   
z%BackendBasicTests.test_set_propertiesc                 C   sb   | j jdd}|| j usJ |jdksJ tt | j j W d    d S 1 s*w   Y  d S )Nbar)foo)r   with_propertiesr[   r1   r2   AttributeError)r   altr
   r
   r   test_new_with_properties   s   
"z*BackendBasicTests.test_new_with_propertiesc                 C   s   | j }d}||d }|d u sJ d}d}| |d| | |d| ||dj|ks.J ||dj|ks9J ||dd u sCJ d S )N test_wrong_username_returns_nonerB   rD   rA   rC   znobody!)r   rI   r    r$   )r   r   r"   rJ   
password_1
password_2r
   r
   r   r`      s   z2BackendBasicTests.test_wrong_username_returns_noneN)__name__
__module____qualname____doc__string
whitespacepunctuationr-   r1   fixturer   r   r    r'   r+   r,   r.   r0   r4   r7   r:   r<   r?   rH   rK   markxfailrN   rY   r_   r`   r
   r
   r
   r   r       s0    



r   )rf   rT   rg   r1   r   r   utilr   r;   minr   r   r
   r
   r
   r   <module>   s    