
    .Ph                         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 eD                       dk    sJ d	 Z
 G d
 d          ZdS )z)
Common test functionality for backends.
    N)errors   )random_stringuH  זהכיףסתםלשמועאיךתנצחקרפדעץטובבגןξεσκεπάζωτηνψυχοφθόραβδελυγμίαСъешьжеещёэтихмягкихфранцузскихбулокдавыпейчаюЖълтатадюлябешещастливачепухъткойтоцъфназамръзнакатогьонc              #   4   K   | ]}t          |          V  d S Nord).0chars     W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/keyring/testing/backend.py	<genexpr>r      s(      
/
/3t99
/
/
/
/
/
/       c                 4    t          d | D                       S )Nc              3   P   K   | ]!}d t          |          cxk    odk     nc V  "dS )    r   Nr   )r
   cs     r   r   z%is_ascii_printable.<locals>.<genexpr>   sD      --arSVV!!!!c!!!!------r   )all)ss    r   is_ascii_printabler      s    --1------r   c                      e Zd ZdZej        ej        z   Z ej	        d          d             Z
d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dd          d             Zd Zd Zd ZdS )BackendBasicTestszETest for the keyring's basic functions. password_set and password_getT)autousec                     |                                  | _        t                      | _        |                    | j                   d S r   )init_keyringkeyringsetcredentials_createdaddfinalizercleanup)selfrequests     r   _init_propertiesz"BackendBasicTests._init_properties%   s=    ((**#&55 T\*****r   c                 8    | j         D ]} | j        j        |  d S r   )r   r   delete_password)r!   items     r   r    zBackendBasicTests.cleanup+   s3    , 	0 	0D(DL($///	0 	0r   c                 v    | j                             |||           | j                            ||f           d S r   )r   set_passwordr   add)r!   serviceusernamepasswords       r   r(   zBackendBasicTests.set_password/   s@     	!!'8X>>> $$gx%899999r   c                    | j         }|                    ||          J |                     |||           |                    ||          |k    sJ |                     ||d           |                    ||          dk    sJ d S )N )r   get_passwordr(   )r!   r*   r+   r,   r   s        r   check_set_getzBackendBasicTests.check_set_get5   s    , ##GX66>>> 	'8X666##GX66(BBBB 	'8R000##GX66"<<<<<<r   c                     t          d          }t          d          }t          d          }|                     |||           d S N   )r   r0   r!   r,   r+   r*   s       r   test_password_set_getz'BackendBasicTests.test_password_set_getC   sG     $$ $$##7Hh77777r   c                     t          d          }t          d          }| j                            ||d           | j                            ||d           d S )Nr3   r.   z	non-blank)r   r   r(   )r!   r*   r+   s      r   test_set_after_set_blankz*BackendBasicTests.test_set_after_set_blankI   sV    ## $$!!'8R888!!'8[AAAAAr   c                     t          d| j                  }t          d| j                  }t          d| j                  }|                     |||           d S r2   )r   DIFFICULT_CHARSr0   r4   s       r   test_difficult_charsz&BackendBasicTests.test_difficult_charsO   sV     T%9:: T%9::D$8997Hh77777r   c                 ,   t          d| j                  }t          d| j                  }t          d| j                  }| j                            |||           | j                            ||           | j                            ||          J d S r2   r   r9   r   r(   r%   r/   r4   s       r   test_delete_presentz%BackendBasicTests.test_delete_presentU   s     T%9:: T%9::D$899!!'8X>>>$$Wh777|(((;;CCCCCr   c                     t          d| j                  }t          d| j                  }t          j        t          j                  5  | j                            ||           d d d            d S # 1 swxY w Y   d S r2   )r   r9   pytestraisesr   PasswordDeleteErrorr   r%   )r!   r+   r*   s      r   test_delete_not_presentz)BackendBasicTests.test_delete_not_present]   s     T%9::D$899]6566 	< 	<L(((;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   	A22A69A6c                    t          d| j                  }t          d| j                  }t          d| j                  }t          d| j                  }| j                            |||           |                     |||           | j                            ||           | j                            ||          |k    sJ d S r2   r<   )r!   	username1	username2r,   r*   s        r   test_delete_one_in_groupz*BackendBasicTests.test_delete_one_in_groupc   s    !"d&:;;	!"d&:;;	 T%9::D$899!!'9h???'9h777$$Wi888|(()<<HHHHHHr   c                 <    t          | j        j                  sJ d S r   )r   r   namer!   s    r   test_name_propertyz$BackendBasicTests.test_name_propertym   s!    !$,"34444444r   c                     t          dt                    }t          dt                    }t          dt                    }|                     |||           d S r2   )r   UNICODE_CHARSr0   r4   s       r   test_unicode_charsz$BackendBasicTests.test_unicode_charsp   sM     ]33 ]33M227Hh77777r   c                 
   t          dt                    t          d          z   t          d| j                  z   }t          d|          }t          d|          }t          d|          }|                     |||           d S )N
   r3   )r   rL   r9   r0   )r!   sourcer,   r+   r*   s        r   test_unicode_and_ascii_charsz.BackendBasicTests.test_unicode_and_ascii_charsv   s    "m,,B B 4556 	
 !V,, V,,F++7Hh77777r   c                 F   | 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    sJ 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   s     r   test_different_userz%BackendBasicTests.test_different_user   s     ,*g{;;;*g{;;;##J88KGGGG##J88KGGGG*g{;;;##J88KGGGGGGr   c                 P   | j         }|                    dd           }|J |                     ddd           |                     ddd           |                    dd           }||j        |j        fdv sJ |                    dd          }|J |j        |j        fdv sJ d S )Nr*   rS   rT   rU   rV   rW   ))rT   rU   )rV   rW   )r   get_credentialr(   r+   r,   )r!   r   creds      r   test_credentialz!BackendBasicTests.test_credential   s    ,%%i66|||*g{;;;*g{;;;%%j$77|t}= B
  
  
  
  

 %%j'::t}- 2
 
 
 
 
 
 
r   zplatform.system() == 'Windows'z#668)reasonc                     t          j                    5  |                     ddd           d d d            n# 1 swxY w Y   | j                            dd          dk    sJ d S )NrS   r.   rU   )r?   deprecated_callr(   r   r/   rI   s    r   test_empty_usernamez%BackendBasicTests.test_empty_username   s    #%% 	; 	;j"k:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;|((R88KGGGGGGs   8<<c                     t          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envs      r   test_set_propertiesz%BackendBasicTests.test_set_properties   s\    K{SSSB	3///,,...|#{222222r   c                     | j                             d          }|| j         usJ |j        dk    sJ t          j        t
                    5  | j         j         d d d            d S # 1 swxY w Y   d S )Nbar)foo)r   with_propertiesrr   r?   r@   AttributeError)r!   alts     r   test_new_with_propertiesz*BackendBasicTests.test_new_with_properties   s    l**u*55$,&&&&w%]>** 	 	L	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A''A+.A+c                 d   | j         }d}|                    |d           }|J d}d}|                     |d|           |                     |d|           |                    |d          j        |k    sJ |                    |d          j        |k    sJ |                    |d          J d S )N test_wrong_username_returns_nonerU   rW   rT   rV   znobody!)r   r]   r(   r,   )r!   r   r*   r^   
password_1
password_2s         r   rx   z2BackendBasicTests.test_wrong_username_returns_none   s    ,4%%gt44||| 
 
'7J777'7J777%%gw77@JNNNN%%gw77@JNNNN %%gy99AAAAAr   N)__name__
__module____qualname____doc__string
whitespacepunctuationr9   r?   fixturer#   r    r(   r0   r5   r7   r:   r=   rB   rF   rJ   rM   rQ   r[   r_   markxfailrc   ro   rv   rx    r   r   r   r       s       OO'&*<<OV^D!!!+ + "!+
0 0 0: : := = =8 8 8B B B8 8 8D D D< < <I I I5 5 58 8 8	8 	8 	8H H H
 
 
, [7GGH H HGH
3 3 3  B B B B Br   r   )r~   rj   r   r?   r   r   utilr   rL   minr   r   r   r   r   <module>r      s     
			              w  s
/
/
/
/
///#5555. . .hB hB hB hB hB hB hB hB hB hBr   