U
    [e                     @   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sRt
d
d ZG dd dZdS )z)
Common test functionality for backends.
    N   )random_string)errorsuH  זהכיףסתםלשמועאיךתנצחקרפדעץטובבגןξεσκεπάζωτηνψυχοφθόραβδελυγμίαСъешьжеещёэтихмягкихфранцузскихбулокдавыпейчаюЖълтатадюлябешещастливачепухъткойтоцъфназамръзнакатогьонc                 c   s   | ]}t |V  qd S Nord).0char r
   Y/var/www/html/services/stratfitenv/lib/python3.8/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d"S )#BackendBasicTestszETest for the keyring's basic functions. password_set and password_getT)Zautousec                 C   s"   |   | _t | _|| j d S r   )Zinit_keyringkeyringsetcredentials_createdZ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   0   s    zBackendBasicTests.set_passwordc                 C   sb   | j }|||d kst| ||| ||||ks<t| ||d |||dks^td S )N )r   get_passwordAssertionErrorr   )r   r   r    r!   r   r
   r
   r   check_set_get6   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_getD   s    z'BackendBasicTests.test_password_set_getc                 C   s6   t d| j}t d| j}t d| j}| ||| d S r&   )r   DIFFICULT_CHARSr%   r(   r
   r
   r   test_difficult_charsJ   s    z&BackendBasicTests.test_difficult_charsc                 C   s\   t d| j}t d| j}t d| j}| j||| | j|| | j||d ksXtd S r&   r   r*   r   r   r   r#   r$   r(   r
   r
   r   test_delete_presentP   s    z%BackendBasicTests.test_delete_presentc              	   C   sB   t d| j}t d| j}ttj | j|| W 5 Q R X d S r&   )r   r*   pytestZraisesr   ZPasswordDeleteErrorr   r   )r   r    r   r
   r
   r   test_delete_not_presentX   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srtd S r&   r,   )r   Z	username1Z	username2r!   r   r
   r
   r   test_delete_one_in_group^   s    z*BackendBasicTests.test_delete_one_in_groupc                 C   s   t | jjstd S r   )r   r   namer$   )r   r
   r
   r   test_name_propertyh   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_charsk   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   r3   r*   r%   )r   sourcer!   r    r   r
   r
   r   test_unicode_and_ascii_charsq   s    



z.BackendBasicTests.test_unicode_and_ascii_charsc                 C   sp   | j }| ddd | ddd |dddks6t|dddksJt| ddd |dddkslt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	password2Zservice2Zuser3Z	password3N)r   r   r#   r$   )r   r   r
   r
   r   test_different_user|   s    z%BackendBasicTests.test_different_userc                 C   s   | j }|dd }|d kst| ddd | ddd |dd }|d ksb|j|jfdksbt|dd}|d k	szt|j|jfdkstd S )Nr   r8   r9   r:   r;   r<   ))r9   r:   )r;   r<   )r   get_credentialr$   r   r    r!   )r   r   credr
   r
   r   test_credential   s    z!BackendBasicTests.test_credentialc                 C   s8   t ddd}|td| | j  | jjdks4td S )Nz	fizz buzzz	ignore me)ZKEYRING_PROPERTY_FOO_BARZOTHER_SETTINGenviron)dictsetattrosr   Zset_properties_from_envZfoo_barr$   )r   Zmonkeypatchenvr
   r
   r   test_set_properties   s    
z%BackendBasicTests.test_set_propertiesN)__name__
__module____qualname____doc__string
whitespacepunctuationr*   r.   Zfixturer   r   r   r%   r)   r+   r-   r/   r0   r2   r4   r7   r=   r@   rF   r
   r
   r
   r   r   !   s$   


r   )rJ   rD   rK   r.   utilr   r   r   r3   minr$   r   r   r
   r
   r
   r   <module>   s   