+
    ei  c                   sX    R t ^ RIt^ RIt^ RIt^ RIHt ^RIHt RtR t	 ! R R4      t
R# )z)
Common test functionality for backends.
N)errors)random_stringuH  זהכיףסתםלשמועאיךתנצחקרפדעץטובבגןξεσκεπάζωτηνψυχοφθόραβδελυγμίαСъешьжеещёэтихмягкихфранцузскихбулокдавыпейчаюЖълтатадюлябешещастливачепухъткойтоцъфназамръзнакатогьонc                 sj    \         ;QJ d    R  V  4       F  '       d   K   R# 	  R# ! R  V  4       4      # )c              3   s`   "   T F$  p^ \        V4      u;8*  ;'       d    ^8  Mu x  K&  	  R# 5i)i    N)Zord)Z.0Zc   & </usr/lib/python3.14/site-packages/keyring/testing/backend.pyZ	<genexpr>Z%is_ascii_printable.<locals>.<genexpr>   s$     -1arSV!!c!!1s   ,.FT)Zall)Zs   &r   is_ascii_printabler      s+    3-1-33-3-3-1---    c                   s<  a  ] tR t^ t o Rt]P                  ]P                  ,           t]	P                  ! RR7      R 4       tR tR tR tR tR	 tR
 tR tR tR tR tR tR tR tR t]	P4                  P7                  RRR7      R 4       tR tR tR tRt V t!R# )BackendBasicTestszETest for the keyring's basic functions. password_set and password_getT)Zautousec                s    V P                  4       V n        \        4       V n        VP	                  V P
                  4       R # N)Zinit_keyringkeyringZsetcredentials_createdZaddfinalizercleanup)selfZrequests   &&r   _init_propertiesZ"BackendBasicTests._init_properties%   s.    ((*#&5 T\\*r   c                s`    V P                    F  pV P                  P                  ! V!   K  	  R # r   )r
   r	   delete_password)r   Zitemr   r   r   ZBackendBasicTests.cleanup+   s$    ,,DLL(($/ -r   c                sv    V P                   P                  WV4       V P                  P                  W34       R # r   )r	   set_passwordr
   Zadd)r   serviceusernamepasswords   &&&&r   r   ZBackendBasicTests.set_password/   s/     	!!'X>  $$g%89r   c                sf    V P                   pV P                  WV4       V P                  WR 4       R# ) Nr	   r   )r   r   r   r   r	   s   &&&& r   check_set_getZBackendBasicTests.check_set_get5   s/    ,, 	'X6 	'R0r   c                sl    \        ^4      p\        ^4      p\        ^4      pV P                  W2V4       R#    N)r   r   r   r   r   r      &   r   test_password_set_getZ'BackendBasicTests.test_password_set_getC   s0     $ $#7h7r   c                s    \        ^4      p\        ^4      pV P                  P                  WR4       V P                  P                  WR4       R# )r   r   z	non-blankN)r   r	   r   )r   r   r      &  r   test_set_after_set_blankZ*BackendBasicTests.test_set_after_set_blankI   s>    # $!!'R8!!'[Ar   c                s    \        ^V P                  4      p\        ^V P                  4      p\        ^V P                  4      pV P                  W2V4       R# r   )r   DIFFICULT_CHARSr   r   r   r   test_difficult_charsZ&BackendBasicTests.test_difficult_charsO   sH     T%9%9: T%9%9:D$8$897h7r   c                s    \        ^V P                  4      p\        ^V P                  4      p\        ^V P                  4      pV P                  P                  W2V4       V P                  P	                  W24       R# r   r   r   r	   r   r   r   r   r   test_delete_presentZ%BackendBasicTests.test_delete_presentU   s^     T%9%9: T%9%9:D$8$89!!'X>$$W7r   c                s&   \        ^V P                  4      p\        ^V P                  4      p\        P                  ! \        P
                  4      ;_uu_ 4        V P                  P                  W!4       RRR4       R#   + '       g   i     R# ; ir   )r   r   pytestraisesr    ZPasswordDeleteErrorr	   r   )r   r   r   r   r   test_delete_not_presentZ)BackendBasicTests.test_delete_not_present]   s\     T%9%9:D$8$89]]65566LL((; 7666s   A??B	c                sH   \        ^V P                  4      p\        ^V P                  4      p\        ^V P                  4      p\        ^V P                  4      pV P                  P                  WAV4       V P                  WBV4       V P                  P	                  WA4       R# r   r   )r   Z	username1Z	username2r   r      &    r   test_delete_one_in_groupZ*BackendBasicTests.test_delete_one_in_groupc   s    !"d&:&:;	!"d&:&:;	 T%9%9:D$8$89!!'h?'h7$$W8r   c                s    R # r    r   r   r   test_name_propertyZ$BackendBasicTests.test_name_propertym   s    r   c                s    \        ^\        4      p\        ^\        4      p\        ^\        4      pV P                  W2V4       R# r   )r   UNICODE_CHARSr   r   r   r   test_unicode_charsZ$BackendBasicTests.test_unicode_charsp   s6     ]3 ]3M27h7r   c                s    \        ^
\        4      \        ^
4      ,           \        ^
V P                  4      ,           p\        ^V4      p\        ^V4      p\        ^V4      pV P                  WCV4       R# )i
   N)r   r)   r   r   )r   Zsourcer   r   r   r$   r   test_unicode_and_ascii_charsZ.BackendBasicTests.test_unicode_and_ascii_charsv   si    "m,B B 4 456 	
 !V, V,F+7h7r   c                s    V P                   pV P                  RRR4       V P                  RRR4       V P                  RRR4       R	# )
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	password3Nr   )r   r	   r   r   test_different_userZ%BackendBasicTests.test_different_user   sE     ,,*g{;*g{; 	*g{;r   c                s    V P                   pVP                  R R4      pV P                  RRR4       V P                  RRR4       VP                  RR4      pVP                  RR4      pR# )r   Nr,   r-   r.   r/   r0   r	   Zget_credentialr   )r   r	   credr   r   test_credentialZ!BackendBasicTests.test_credential   si    ,,%%i6 	*g{;*g{;%%j$7 %%j':r   zplatform.system() == 'Windows'z#668)Zreasonc                s    \         P                  ! 4       ;_uu_ 4        V P                  R RR4       RRR4       R#   + '       g   i     R# ; i)r,   r   r.   N)r!   Zdeprecated_callr   r'   r   r   test_empty_usernameZ%BackendBasicTests.test_empty_username   s2    ##%%j"k: &%%%s	   <A	c                s    \        R RR7      pVP                  \        RV4       V P                  P	                  4        R# )z	fizz buzzz	ignore me)ZKEYRING_PROPERTY_FOO_BARZOTHER_SETTINGZenvironN)ZdictZsetattrosr	   Zset_properties_from_env)r   ZmonkeypatchZenvs   && r   test_set_propertiesZ%BackendBasicTests.test_set_properties   s0    K{SB	3/,,.r   c                s    V P                   P                  R R7      p\        P                  ! \        4      ;_uu_ 4        V P                   P
                   RRR4       R#   + '       g   i     R# ; i)Zbar)fooN)r	   Zwith_propertiesr!   r"   ZAttributeErrorr8   )r   Zaltr   r   test_new_with_propertiesZ*BackendBasicTests.test_new_with_properties   sF    ll**u*5 ]]>**LL +***s   A  A1	c                s    V P                   pR pVP                  VR4      pRpRpV P                  VRV4       V P                  VRV4       R# ) test_wrong_username_returns_noneNr.   r0   r-   r/   r2   )r   r	   r   r3   Z
password_1Z
password_2s   &     r   r:   Z2BackendBasicTests.test_wrong_username_returns_none   sR    ,,4%%gt4 !
 
'7J7'7J7r   )r
   r	   N)"Z__name__Z
__module__Z__qualname__Z__firstlineno____doc__stringZ
whitespaceZpunctuationr   r!   Zfixturer   r   r   r   r   r   r   r    r#   r%   r(   r*   r+   r1   r4   ZmarkZxfailr5   r7   r9   r:   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r   r   r       s     O''&*<*<<O^^D!+ "+
0:=8B8D<I58	8H
, [[7GH HH
3B Br   r   )r;   r6   r<   r!   r	   r    Zutilr   r)   r   r   r&   r   r   <module>r=      s9    
    w .hB hBr   