
    k7i                         S r SSKrSSKrSSKrSSKJr  SSKJr  Sr\	" S \ 5       5      S:  d   eS	 r
 " S
 S5      rg)z)
Common test functionality for backends.
    N)errors   )random_stringuH  זהכיףסתםלשמועאיךתנצחקרפדעץטובבגןξεσκεπάζωτηνψυχοφθόραβδελυγμίαСъешьжеещёэтихмягкихфранцузскихбулокдавыпейчаюЖълтатадюлябешещастливачепухъткойтоцъфназамръзнакатогьонc              #   8   #    U  H  n[        U5      v   M     g 7fNord).0chars     Q/home/james-whalen/.local/lib/python3.13/site-packages/keyring/testing/backend.py	<genexpr>r      s     
/3t99s      c                 &    [        S U  5       5      $ )Nc              3   ^   #    U  H#  nS [        U5      s=:*  =(       a    S:  Os  v   M%     g7f)    r   Nr   )r
   cs     r   r   %is_ascii_printable.<locals>.<genexpr>   s$     -1arSV!!c!!1s   +-)all)ss    r   is_ascii_printabler      s    -1---    c                      \ rS rSrSr\R                  \R                  -   r\	R                  " SS9S 5       rS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS r\	R4                  R7                  SSS9S 5       rS rS rS rSr g)BackendBasicTestsr   zETest for the keyring's basic functions. password_set and password_getT)autousec                     U R                  5       U l        [        5       U l        UR	                  U R
                  5        g r   )init_keyringkeyringsetcredentials_createdaddfinalizercleanup)selfrequests     r   _init_properties"BackendBasicTests._init_properties%   s.    ((*#&5 T\\*r   c                 \    U R                    H  nU R                  R                  " U6   M     g r   )r   r   delete_password)r"   items     r   r!   BackendBasicTests.cleanup+   s$    ,,DLL(($/ -r   c                 t    U R                   R                  XU5        U R                  R                  X45        g r   )r   set_passwordr   add)r"   serviceusernamepasswords       r   r+   BackendBasicTests.set_password/   s/     	!!'X>  $$g%89r   c                     U R                   nUR                  X5      b   eU R                  XU5        UR                  X5      U:X  d   eU R                  XS5        UR                  X5      S:X  d   eg )N )r   get_passwordr+   )r"   r-   r.   r/   r   s        r   check_set_getBackendBasicTests.check_set_get5   sz    ,, ##G6>>> 	'X6##G6(BBB 	'R0##G6"<<<r   c                 j    [        S5      n[        S5      n[        S5      nU R                  X2U5        g N   )r   r4   r"   r/   r.   r-   s       r   test_password_set_get'BackendBasicTests.test_password_set_getC   s0     $ $#7h7r   c                     [        S5      n[        S5      nU R                  R                  XS5        U R                  R                  XS5        g )Nr8   r2   z	non-blank)r   r   r+   )r"   r-   r.   s      r   test_set_after_set_blank*BackendBasicTests.test_set_after_set_blankI   s>    # $!!'R8!!'[Ar   c                     [        SU R                  5      n[        SU R                  5      n[        SU R                  5      nU R                  X2U5        g r7   )r   DIFFICULT_CHARSr4   r9   s       r   test_difficult_chars&BackendBasicTests.test_difficult_charsO   sH     T%9%9: T%9%9:D$8$897h7r   c                 2   [        SU R                  5      n[        SU R                  5      n[        SU R                  5      nU R                  R                  X2U5        U R                  R	                  X25        U R                  R                  X25      b   eg r7   r   r@   r   r+   r'   r3   r9   s       r   test_delete_present%BackendBasicTests.test_delete_presentU   sy     T%9%9: T%9%9:D$8$89!!'X>$$W7||((;CCCr   c                    [        SU R                  5      n[        SU R                  5      n[        R                  " [        R
                  5         U R                  R                  X!5        S S S 5        g ! , (       d  f       g = fr7   )r   r@   pytestraisesr   PasswordDeleteErrorr   r'   )r"   r.   r-   s      r   test_delete_not_present)BackendBasicTests.test_delete_not_present]   sV     T%9%9:D$8$89]]6556LL((; 766s   A66
Bc                    [        SU R                  5      n[        SU R                  5      n[        SU R                  5      n[        SU R                  5      nU R                  R                  XAU5        U R                  XBU5        U R                  R	                  XA5        U R                  R                  XB5      U:X  d   eg r7   rD   )r"   	username1	username2r/   r-   s        r   test_delete_one_in_group*BackendBasicTests.test_delete_one_in_groupc   s    !"d&:&:;	!"d&:&:;	 T%9%9:D$8$89!!'h?'h7$$W8||((<HHHr   c                 P    [        U R                  R                  5      (       d   eg r   )r   r   namer"   s    r   test_name_property$BackendBasicTests.test_name_propertym   s    !$,,"3"34444r   c                     [        S[        5      n[        S[        5      n[        S[        5      nU R                  X2U5        g r7   )r   UNICODE_CHARSr4   r9   s       r   test_unicode_chars$BackendBasicTests.test_unicode_charsp   s6     ]3 ]3M27h7r   c                     [        S[        5      [        S5      -   [        SU R                  5      -   n[        SU5      n[        SU5      n[        SU5      nU R                  XCU5        g )N
   r8   )r   rX   r@   r4   )r"   sourcer/   r.   r-   s        r   test_unicode_and_ascii_chars.BackendBasicTests.test_unicode_and_ascii_charsv   si    "m,B B 4 456 	
 !V, V,F+7h7r   c                    U R                   nU R                  SSS5        U R                  SSS5        UR                  SS5      S:X  d   eUR                  SS5      S:X  d   eU R                  SSS5        UR                  SS5      S:X  d   eg	)
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+   r3   )r"   r   s     r   test_different_user%BackendBasicTests.test_different_user   s     ,,*g{;*g{;##J8KGGG##J8KGGG*g{;##J8KGGGr   c                 f   U R                   nUR                  SS 5      nUb   eU R                  SSS5        U R                  SSS5        UR                  SS 5      nUb  UR                  UR                  4S;   d   eUR                  SS5      nUc   eUR                  UR                  4S;   d   eg )Nr-   ra   rb   rc   rd   re   ))rb   rc   )rd   re   )r   get_credentialr+   r.   r/   )r"   r   creds      r   test_credential!BackendBasicTests.test_credential   s    ,,%%i6||*g{;*g{;%%j$7|t}}= B
  
 	
 

 %%j':t}}- 2
 
 	
 
r   zplatform.system() == 'Windows'z#668)reasonc                     [         R                  " 5          U R                  SSS5        S S S 5        U R                  R	                  SS5      S:X  d   eg ! , (       d  f       N1= f)Nra   r2   rc   )rH   deprecated_callr+   r   r3   rT   s    r   test_empty_username%BackendBasicTests.test_empty_username   sM    ##%j"k: &||((R8KGGG &%s   A
A#c                     [        SSS9nUR                  [        SU5        U R                  R	                  5         U R                  R
                  S:X  d   eg )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_properties%BackendBasicTests.test_set_properties   sH    K{SB	3/,,.||##{222r   c                    U R                   R                  SS9nXR                   Ld   eUR                  S:X  d   e[        R                  " [
        5         U R                   R                    S S S 5        g ! , (       d  f       g = f)Nbar)foo)r   with_propertiesr   rH   rI   AttributeError)r"   alts     r   test_new_with_properties*BackendBasicTests.test_new_with_properties   s`    ll**u*5,,&&&ww%]]>*LL +**s   A66
Bc                 T   U R                   nSnUR                  US 5      nUb   eSnSnU R                  USU5        U R                  USU5        UR                  US5      R                  U:X  d   eUR                  US5      R                  U:X  d   eUR                  US5      b   eg )N test_wrong_username_returns_nonerc   re   rb   rd   znobody!)r   rl   r+   r/   )r"   r   r-   rm   
password_1
password_2s         r   r   2BackendBasicTests.test_wrong_username_returns_none   s    ,,4%%gt4|| 
 
'7J7'7J7%%gw7@@JNNN%%gw7@@JNNN %%gy9AAAr   )r   r   N)!__name__
__module____qualname____firstlineno____doc__string
whitespacepunctuationr@   rH   fixturer$   r!   r+   r4   r:   r=   rA   rE   rK   rP   rU   rY   r^   ri   rn   markxfailrs   r   r   r   __static_attributes__ r   r   r   r       s    O''&*<*<<O^^D!+ "+
0:=8B8D<I58	8H
, [[7GH HH
3Br   r   )r   r{   r   rH   r   r   utilr   rX   minr   r   r   r   r   <module>r      sT    
    w  
/
//#5 55.hB hBr   