o
    œ¨ÊhÈ  ã                   @   sr   d Z ddlm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eƒZdS )z)
Common test functionality for backends.
é    )Úunicode_literalsNé   )Úrandom_string)ÚerrorsuH  ×–×”×›×™×£×¡×ª×�×œ×©×ž×•×¢×�×™×š×ª× ×¦×—×§×¨×¤×“×¢×¥×˜×•×‘×‘×’×ŸÎ¾ÎµÏƒÎºÎµÏ€Î¬Î¶Ï‰Ï„Î·Î½ÏˆÏ…Ï‡Î¿Ï†Î¸ÏŒÏ�Î±Î²Î´ÎµÎ»Ï…Î³Î¼Î¯Î±Ð¡ÑŠÐµÑˆÑŒÐ¶ÐµÐµÑ‰Ñ‘Ñ�Ñ‚Ð¸Ñ…Ð¼Ñ�Ð³ÐºÐ¸Ñ…Ñ„Ñ€Ð°Ð½Ñ†ÑƒÐ·Ñ�ÐºÐ¸Ñ…Ð±ÑƒÐ»Ð¾ÐºÐ´Ð°Ð²Ñ‹Ð¿ÐµÐ¹Ñ‡Ð°ÑŽÐ–ÑŠÐ»Ñ‚Ð°Ñ‚Ð°Ð´ÑŽÐ»Ñ�Ð±ÐµÑˆÐµÑ‰Ð°Ñ�Ñ‚Ð»Ð¸Ð²Ð°Ñ‡ÐµÐ¿ÑƒÑ…ÑŠÑ‚ÐºÐ¾Ð¹Ñ‚Ð¾Ñ†ÑŠÑ„Ð½Ð°Ð·Ð°Ð¼Ñ€ÑŠÐ·Ð½Ð°ÐºÐ°Ñ‚Ð¾Ð³ÑŒÐ¾Ð½c                 c   s   � | ]}t |ƒV  qd S ©N©Úord)Ú.0Úchar© r   úL/var/www/html/env/lib/python3.10/site-packages/keyring/tests/test_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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 )ÚBackendBasicTestszJTest for the keyring's basic functions. password_set and password_get
    c                 C   s   |   ¡ | _tƒ | _d S r   )Úinit_keyringÚkeyringÚsetÚcredentials_created©Úselfr   r   r   ÚsetUp(   s   
zBackendBasicTests.setUpc                 C   s   | j D ]}| jj|Ž  qd S r   )r   r   Údelete_password)r   Úitemr   r   r   ÚtearDown,   s   
ÿzBackendBasicTests.tearDownc                 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 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_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 u s,J ‚d S r'   ©r   r+   r   r   r   r%   r)   r   r   r   Útest_delete_presentP   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_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s9J ‚d S r'   r-   )r   Ú	username1Ú	username2r#   r!   r   r   r   Útest_delete_one_in_group^   s   z*BackendBasicTests.test_delete_one_in_groupc                 C   s   t | jjƒsJ ‚d S r   )r   r   Únamer   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   r8   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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_usery   s   z%BackendBasicTests.test_different_userN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstringÚ
whitespaceÚpunctuationr+   r   r   r   r&   r*   r,   r.   r2   r5   r7   r9   r<   rE   r   r   r   r   r   "   s     
r   )rI   Ú
__future__r   rJ   r/   Úutilr   r   r   r8   Úminr   Úobjectr   r   r   r   r   Ú<module>   s   ÿ