+
    Z4i"  ã                   óì   € R t ^ RIt^ RIt^ RIt^ RIHt ]]J d   ]t	M]t	^ RI
HtHt ^ RIHtHtHtHt  ! R R]P$                  4      t ! R R]P$                  4      t ! R	 R
]4      t ! R R]4      tR# )z'Tests for the credential store classes.N)Ú	b64decode)Úfake_keyringÚInMemoryKeyring)ÚAccessTokenÚCredentialsÚKeyringCredentialStoreÚUnencryptedFileCredentialStorec                   ó0   a € ] tR t^,t o RtR tR tRtV tR# )ÚTestAccessTokenz Tests for the AccessToken class.c                óØ   € \         P                  ! R 4      pV P                  RVP                  4       V P                  RVP                  4       V P                  VP                  4       R# )z;oauth_token_secret=secret%3Dpassword&oauth_token=lock%26keyúlock&keyúsecret=passwordN)r   Úfrom_stringÚassertEqualÚkeyÚsecretÚassertIsNoneÚcontext©ÚselfÚaccess_tokens   & ÚJ/usr/lib/python3/dist-packages/launchpadlib/tests/test_credential_store.pyÚtest_from_stringÚ TestAccessToken.test_from_string/   sX   € Ü"×.Ò.ØIó
ˆð 	×Ñ˜ \×%5Ñ%5Ô6Ø×ÑÐ*¨L×,?Ñ,?Ô@Ø×Ñ˜,×.Ñ.Ö/ó    c                óÚ   € \         P                  ! R 4      pV P                  RVP                  4       V P                  RVP                  4       V P                  RVP
                  4       R# )zNoauth_token_secret=secret%3Dpassword&oauth_token=lock%26key&lp.context=firefoxr   r   ÚfirefoxN)r   r   r   r   r   r   r   s   & r   Útest_from_string_with_contextÚ-TestAccessToken.test_from_string_with_context7   s\   € Ü"×.Ò.ð!ó
ˆð 	×Ñ˜ \×%5Ñ%5Ô6Ø×ÑÐ*¨L×,?Ñ,?Ô@Ø×Ñ˜ L×$8Ñ$8Ö9r   © N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r
   r
   ,   s   ø‡ € Ù*ò0÷:ð :r   r
   c                   ó&   a € ] tR t^At o R tRtV tR# )ÚCredentialStoreTestCasec                ó2   € \        RR\        VR4      R7      # )z(Helper method to make a fake credential.zapp namezconsumer_secret:42zaccess_secret:168)Úconsumer_secretr   )r   r   )r   Úconsumer_keys   &&r   Úmake_credentialÚ'CredentialStoreTestCase.make_credentialB   s    € äØØ0Ü$ \Ð3FÓGô
ð 	
r   r   N)r    r!   r"   r#   r.   r%   r&   r'   s   @r   r*   r*   A   s   ø‡ € ÷
ð 
r   r*   c                   óB   a € ] tR t^Kt o RtR tR tR tR tR t	Rt
V tR# )	Ú"TestUnencryptedFileCredentialStorez3Tests for the UnencryptedFileCredentialStore class.c                ór   € \         P                  ! 4       w  qn        \        V P                  4      V n        R # ©N)ÚtempfileÚmkstempÚfilenamer   Ústore)r   Úignores   & r   ÚsetUpÚ(TestUnencryptedFileCredentialStore.setUpN   s%   € Ü (× 0Ò 0Ó 2Ñˆ”Ü3°D·M±MÓBˆŽ
r   c                ó¨   € \         P                  P                  V P                  4      '       d#   \         P                  ! V P                  4       R # R # r3   )ÚosÚpathÚexistsr6   Úremove©r   s   &r   ÚtearDownÚ+TestUnencryptedFileCredentialStore.tearDownR   s.   € Ü�7‰7�>‰>˜$Ÿ-™-×(Ò(Ü�IŠI�d—m‘mÖ$ñ )r   c                ó
  € V P                  R 4      pV P                  P                  VR4       V P                  P                  R4      pV P	                  VP
                  P                  VP
                  P                  4       R# ©úconsumer keyú
unique keyN©r.   r7   ÚsaveÚloadr   Úconsumerr   ©r   Ú
credentialÚcredential2s   &  r   Útest_save_and_loadÚ5TestUnencryptedFileCredentialStore.test_save_and_loadV   s^   € à×)Ñ)¨.Ó9ˆ
Ø�
‰
�‰˜
 LÔ1Ø—j‘j—o‘o lÓ3ˆØ×Ñ˜×,Ñ,×0Ñ0°+×2FÑ2F×2JÑ2JÖKr   c                ó
  € V P                  R 4      pV P                  P                  VR4       V P                  P                  R4      pV P	                  VP
                  P                  VP
                  P                  4       R# )rE   zsome keyzsome other keyNrG   rK   s   &  r   Útest_unique_id_doesnt_matterÚ?TestUnencryptedFileCredentialStore.test_unique_id_doesnt_matter]   sa   € ð ×)Ñ)¨.Ó9ˆ
Ø�
‰
�‰˜
 JÔ/Ø—j‘j—o‘oÐ&6Ó7ˆØ×Ñ˜×,Ñ,×0Ñ0°+×2FÑ2F×2JÑ2JÖKr   c                ód  € V P                  R 4      pV P                  R4      pV P                  P                  VR4       V P                  P                  VR4       V P                  P                  R4      pV P	                  VP
                  P                  VP
                  P                  4       R# )rE   úconsumer key2zunique key 1zunique key 2NrG   ©r   Úcredential1rM   Úloadeds   &   r   Ú&test_file_only_contains_one_credentialÚITestUnencryptedFileCredentialStore.test_file_only_contains_one_credentiale   s€   € ð
 ×*Ñ*¨>Ó:ˆØ×*Ñ*¨?Ó;ˆØ�
‰
�‰˜ ^Ô4Ø�
‰
�‰˜ ^Ô4Ø—‘—‘ Ó0ˆØ×Ñ˜Ÿ™×,Ñ,¨k×.BÑ.B×.FÑ.FÖGr   )r6   r7   N)r    r!   r"   r#   r$   r9   rA   rN   rQ   rX   r%   r&   r'   s   @r   r1   r1   K   s+   ø‡ € Ù=òCò%òLòL÷
Hð 
Hr   r1   c                   óT   a € ] tR t^rt o RtR tR tR tR tR t	R t
R tR	 tR
tV tR# )ÚTestKeyringCredentialStorez+Tests for the KeyringCredentialStore class.c                óB   € \        4       V n        \        4       V n        R # r3   )r   Úkeyringr   r7   r@   s   &r   r9   Ú TestKeyringCredentialStore.setUpu   s   € Ü&Ó(ˆŒÜ+Ó-ˆŽ
r   c                ó~  € \        V P                  4      ;_uu_ 4        V P                  R 4      pV P                  P	                  VR4       V P                  P                  R4      pV P                  VP                  P                  VP                  P                  4       RRR4       R#   + '       g   i     R# ; irD   ©	r   r]   r.   r7   rH   rI   r   rJ   r   rK   s   &  r   rN   Ú-TestKeyringCredentialStore.test_save_and_loady   s|   € ä˜$Ÿ,™,×'Õ'Ø×-Ñ-¨nÓ=ˆJØ�J‰J�O‰O˜J¨Ô5ØŸ*™*Ÿ/™/¨,Ó7ˆKØ×Ñ˜Z×0Ñ0×4Ñ4°k×6JÑ6J×6NÑ6NÔO÷	 (×'×'Ò'ús   žBB+Â+B<	c                ó¤  € \        V P                  4      ;_uu_ 4        V P                  R 4      pV P                  P	                  VR4       V P                  R4      pV P                  P	                  VR4       V P                  P                  R4      pV P                  V4       V P                  VP                  P                  VP                  P                  4       V P                  P                  R4      pV P                  VP                  P                  VP                  P                  4       RRR4       R#   + '       g   i     R# ; i)úconsumer key1zkey 1rT   zkey 2N)
r   r]   r.   r7   rH   rI   Ú
assertTruer   rJ   r   )r   rV   rM   Úloaded1Úloaded2s   &    r   Útest_lookup_by_unique_keyÚ4TestKeyringCredentialStore.test_lookup_by_unique_key�   sæ   € ô ˜$Ÿ,™,×'Õ'Ø×.Ñ.¨Ó?ˆKØ�J‰J�O‰O˜K¨Ô1à×.Ñ.¨Ó?ˆKØ�J‰J�O‰O˜K¨Ô1à—j‘j—o‘o gÓ.ˆGØ�O‰O˜GÔ$Ø×Ñ˜[×1Ñ1×5Ñ5°w×7GÑ7G×7KÑ7KÔLà—j‘j—o‘o gÓ.ˆGØ×Ñ˜[×1Ñ1×5Ñ5°w×7GÑ7G×7KÑ7KÔL÷ (×'×'Ò'ús   žDD>Ä>E	c                óØ  € \        V P                  4      ;_uu_ 4        V P                  R 4      pV P                  P	                  VR4       V P                  R4      pV P                  P	                  VR4       V P                  P                  R4      pV P                  VP                  P                  VP                  P                  4       RRR4       R#   + '       g   i     R# ; i)rc   zthe only keyrT   Nr`   rU   s   &   r   Ú/test_reused_unique_id_overwrites_old_credentialÚJTestKeyringCredentialStore.test_reused_unique_id_overwrites_old_credential’   sž   € ô ˜$Ÿ,™,×'Õ'Ø×.Ñ.¨Ó?ˆKØ�J‰J�O‰O˜K¨Ô8à×.Ñ.¨Ó?ˆKØ�J‰J�O‰O˜K¨Ô8à—Z‘Z—_‘_ ^Ó4ˆFØ×Ñ˜[×1Ñ1×5Ñ5°v·±×7JÑ7JÔK÷ (×'×'Ò'ús   žB0CÃC)	c                óÎ   € \        V P                  4      ;_uu_ 4        V P                  V P                  P	                  R 4      4       RRR4       R#   + '       g   i     R# ; i)zno such keyN)r   r]   r   r7   rI   r@   s   &r   Útest_bad_unique_id_returns_noneÚ:TestKeyringCredentialStore.test_bad_unique_id_returns_none    s=   € ô ˜$Ÿ,™,×'Õ'Ø×Ñ˜dŸj™jŸo™o¨mÓ<Ô=÷ (×'×'Ò'ús   ž+AÁA$	c                ól  €  ! R  R\         4      pV! 4       V n        \        V P                  4      ;_uu_ 4        V P                  R4      pV P	                  V4       V P
                  P                  VR4       V P
                  P                  R4      pV P	                  V4       V P                  VP                  P                  VP                  P                  4       V P                  VP                  P                  VP                  P                  4       RRR4       R#   + '       g   i     R# ; i)c                   ó2   a a€ ] tR t^ªt oV 3R ltRtVtV ;t# )ÚWTestKeyringCredentialStore.test_keyring_returns_unicode.<locals>.UnicodeInMemoryKeyringc                ót   <€ \         SV `  W4      p\        V\        4      '       d   VP	                  R 4      pV# )zutf-8)ÚsuperÚget_passwordÚ
isinstanceÚunicode_typeÚencode)r   ÚserviceÚusernameÚpasswordÚ	__class__s   &&& €r   rt   ÚdTestKeyringCredentialStore.test_keyring_returns_unicode.<locals>.UnicodeInMemoryKeyring.get_password«   s2   ø€ Ü ™7Ñ/°ÓB�Ü˜h¬×5Ò5Ø'Ÿ™¨wÓ7�HØ�r   r   ©r    r!   r"   r#   rt   r%   r&   Ú__classcell__©r{   r(   s   @@r   ÚUnicodeInMemoryKeyringrq   ª   s   ù‡ € ÷ õ  r   r€   rE   rF   N)r   r]   r   r.   rd   r7   rH   rI   r   rJ   r   r   )r   r€   rL   rM   s   &   r   Útest_keyring_returns_unicodeÚ7TestKeyringCredentialStore.test_keyring_returns_unicode¦   s×   € ô	 ¤_ô 	 ñ .Ó/ˆŒÜ˜$Ÿ,™,×'Õ'Ø×-Ñ-¨nÓ=ˆJØ�O‰O˜JÔ'à�J‰J�O‰O˜J¨Ô5ØŸ*™*Ÿ/™/¨,Ó7ˆKØ�O‰O˜KÔ(Ø×Ñ˜Z×0Ñ0×4Ñ4°k×6JÑ6J×6NÑ6NÔOØ×ÑØ×#Ñ#×*Ñ*¨K×,@Ñ,@×,GÑ,Gô÷ (×'×'Ò'ús   ¹CD"Ä"D3	c                ó(  €  ! R  R\         4      pV! 4       V n        \        V P                  4      ;_uu_ 4        V P                  R4      pV P                  P                  VR4       V P                  P                  R4      pV P                  VP                  P                  VP                  P                  4       V P                  VP                  P                  VP                  P                  4       RRR4       R#   + '       g   i     R# ; i)c                   ó2   a a€ ] tR t^Át oV 3R ltRtVtV ;t# )ÚXTestKeyringCredentialStore.test_nonencoded_key_handled.<locals>.UnencodedInMemoryKeyringc                óF   <€ \         SV `  W4      p\        VR ,          4      # ):é   NN)rs   rt   r   )r   rx   ry   Úpwr{   s   &&& €r   rt   ÚeTestKeyringCredentialStore.test_nonencoded_key_handled.<locals>.UnencodedInMemoryKeyring.get_passwordÂ   s!   ø€ Ü‘WÑ)¨'Ó<�Ü   B¥Ó(Ð(r   r   r}   r   s   @@r   ÚUnencodedInMemoryKeyringr…   Á   s   ù‡ € ÷)õ )r   rŠ   rE   rF   N)r   r]   r   r.   r7   rH   rI   r   rJ   r   r   )r   rŠ   rL   rM   s   &   r   Útest_nonencoded_key_handledÚ6TestKeyringCredentialStore.test_nonencoded_key_handled¾   s¿   € ô	)¤ô 	)ñ
 0Ó1ˆŒÜ˜$Ÿ,™,×'Õ'Ø×-Ñ-¨nÓ=ˆJØ�J‰J�O‰O˜J¨Ô5ØŸ*™*Ÿ/™/¨,Ó7ˆKØ×Ñ˜Z×0Ñ0×4Ñ4°k×6JÑ6J×6NÑ6NÔOØ×ÑØ×#Ñ#×*Ñ*¨K×,@Ñ,@×,GÑ,Gô÷ (×'×'Ò'ús   ¹B=D Ä D	c                ób  €  ! R  R\         4      pV! 4       V n        \        V P                  4      ;_uu_ 4        V P                  R4      pV P                  P                  VR4       V P                  P                  R4      pV P                  V4       RRR4       R#   + '       g   i     R# ; i)c                   ó&   a € ] tR t^Ót o R tRtV tR# )ÚWTestKeyringCredentialStore.test_corrupted_key_handled.<locals>.CorruptedInMemoryKeyringc                ó   € R # )Úbadr   )r   rx   ry   s   &&&r   rt   ÚdTestKeyringCredentialStore.test_corrupted_key_handled.<locals>.CorruptedInMemoryKeyring.get_passwordÔ   s   € Ùr   r   N)r    r!   r"   r#   rt   r%   r&   r'   s   @r   ÚCorruptedInMemoryKeyringr�   Ó   s   ø‡ € ÷ð r   r“   rE   rF   N)r   r]   r   r.   r7   rH   rI   r   )r   r“   rL   rM   s   &   r   Útest_corrupted_key_handledÚ5TestKeyringCredentialStore.test_corrupted_key_handledÐ   sz   € ô	¤ô 	ñ 0Ó1ˆŒÜ˜$Ÿ,™,×'Õ'Ø×-Ñ-¨nÓ=ˆJØ�J‰J�O‰O˜J¨Ô5ØŸ*™*Ÿ/™/¨,Ó7ˆKØ×Ñ˜kÔ*÷	 (×'×'Ò'ús   ¹ABÂB.	)r]   r7   N)r    r!   r"   r#   r$   r9   rN   rg   rj   rm   r�   r‹   r”   r%   r&   r'   s   @r   r[   r[   r   s8   ø‡ € Ù5ò.òPòMò"Lò>òò0÷$+ð +r   r[   )r$   r<   r4   ÚunittestÚbase64r   ÚbytesÚstrÚunicoderv   Úlaunchpadlib.testing.helpersr   r   Úlaunchpadlib.credentialsr   r   r   r   ÚTestCaser
   r*   r1   r[   r   r   r   Ú<module>rž      sy   ðñ" .ã 	Û Û å àˆCƒ<à�Là€L÷÷
ó ô:�h×'Ñ'ô :ô*
˜h×/Ñ/ô 
ô$HÐ)@ô $HôNj+Ð!8ö j+r   