ó
    Ö›‘hød  ã                   óâ  • S r SSKrSSKJr  SSKJrJr  SSKJr  SSK	J
r
  SSKJr  SSKJrJrJrJr  SS	KJrJrJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  \" S5      r \" S5      r!\" S5      r"S r# " S S\5      r$ " S S\5      r% " S S\5      r& " S S\5      r'\" \!(       + S5      \" \ (       + S5      \" \"(       + S5       " S S\5      5       5       5       r(\" \ (       + S 5       " S! S"\5      5       r) " S# S$\5      r*\" \!(       + S5      \" \" S%5      (       + S&5       " S' S(\5      5       5       r+ " S) S*\RX                  \RZ                  5      r. " S+ S,\5      r/ " S- S.\RX                  \RZ                  5      r0 " S/ S0\RX                  \RZ                  5      r1 " S1 S2\RX                  \RZ                  5      r2 " S3 S4\RX                  \RZ                  5      r3 " S5 S6\5      r4g)7z
L{twisted.cred.strcred}.
é    N)ÚStringIO)ÚSequenceÚType)ÚskipIf)Ú	Interface)Úplugin)ÚcheckersÚcredentialsÚerrorÚstrcred)Úcred_anonymousÚ	cred_fileÚ	cred_unix)Úusage)ÚUserDatabase)ÚFilePath)ÚrequireModule)ÚTestCaseÚcryptÚpwdÚspwdc                  óø   • Sn U [         R                  " 5        Vs/ s H  oR                  PM     sn;   a:  U S-  n U [         R                  " 5        Vs/ s H  oR                  PM     sn;   a  M:  U $ s  snf s  snf )z;
Helper method to produce an auth type that doesn't exist.
ÚThisPluginDoesNotExistÚ_)r   ÚfindCheckerFactoriesÚauthType)ÚinvalidAuthTypeÚfactorys     ÚbC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/cred/test/test_strcred.pyÚgetInvalidAuthTyper       sƒ   € ð /€OØ
Ü(/×(DÒ(DÔ(FóÚ(F˜W×ÔÑ(Fñó ð 	˜3Ñˆð Ü(/×(DÒ(DÔ(FóÚ(F˜W×ÔÑ(Fñõ ð Ðùò	ùò s   ›A2ÁA7c                   ó    • \ rS rSrS rS rSrg)ÚPublicAPITestsé*   c                 óÔ   • [        5       nU R                  [        R                  [        R                  U5        U R                  [        R                  [        R
                  U5        g)z)
The description string cannot be empty.
N©r    ÚassertRaisesr   ÚInvalidAuthTypeÚmakeCheckerÚfindCheckerFactory©ÚselfÚiats     r   Útest_emptyDescriptionÚ$PublicAPITests.test_emptyDescription+   óH   € ô !Ó"ˆØ×Ñœ'×1Ñ1´7×3FÑ3FÈÔLØ×Ñœ'×1Ñ1´7×3MÑ3MÈsÕSó    c                 óÔ   • [        5       nU R                  [        R                  [        R                  U5        U R                  [        R                  [        R
                  U5        g)z0
An unrecognized auth type raises an exception.
Nr%   r*   s     r   Útest_invalidAuthTypeÚ#PublicAPITests.test_invalidAuthType3   r/   r0   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r-   r2   Ú__static_attributes__r4   r0   r   r"   r"   *   s   † òTõTr0   r"   c                   ó    • \ rS rSrS rS rSrg)ÚStrcredFunctionsTestsé<   c                 ó¸   • [        [        R                  " 5       5      n[        R                  " [        R
                  5       H  nU R                  X!5        M     g)z@
L{strcred.findCheckerFactories} returns all available plugins.
N)Úlistr   r   r   Ú
getPluginsÚICheckerFactoryÚassertIn)r+   ÚavailablePluginsÚplgs      r   Útest_findCheckerFactoriesÚ/StrcredFunctionsTests.test_findCheckerFactories=   s?   € ô  ¤× <Ò <Ó >Ó?ÐÜ×$Ò$¤W×%<Ñ%<Ö=ˆCØ�M‰M˜#Ö0ò >r0   c                 ól   • U R                  [        R                  " S5      [        R                  5        g)zc
L{strcred.findCheckerFactory} returns the first plugin
available for a given authentication type.
ÚfileN)ÚassertIdenticalr   r)   r   ÚtheFileCheckerFactory©r+   s    r   Útest_findCheckerFactoryÚ-StrcredFunctionsTests.test_findCheckerFactoryE   s(   € ð
 	×ÑÜ×&Ò& vÓ.´	×0OÑ0Oõ	
r0   r4   N)r5   r6   r7   r8   rD   rK   r9   r4   r0   r   r;   r;   <   s   † ò1õ
r0   r;   c                   ó8   • \ rS rSrS rS rS rS rS rS r	Sr
g	)
ÚMemoryCheckerTestséO   c                 ó  • [         R                  " SS5      U l        [         R                  " SS5      U l        [         R                  " SS5      U l        [         R                  " SS5      U l        [        R                  " S5      U l        g )	NÚadminÚasdfÚaliceÚfooÚfoobarÚxÚyzzmemory:admin:asdf:alice:foo)	r
   ÚUsernamePasswordrQ   rS   ÚbadPassÚbadUserr   r(   ÚcheckerrJ   s    r   ÚsetUpÚMemoryCheckerTests.setUpP   se   € Ü ×1Ò1°'¸6ÓBˆŒ
Ü ×1Ò1°'¸5ÓAˆŒ
Ü"×3Ò3°G¸XÓFˆŒÜ"×3Ò3°C¸Ó>ˆŒÜ×*Ò*Ð+HÓIˆ�r0   c                 óÜ   • U R                  [        R                  R                  U R                  5      5        U R                  [        R                  U R                  R                  5        g©zu
Verifies that strcred.makeChecker('memory') returns an object
that implements the L{ICredentialsChecker} interface.
N©	Ú
assertTruer	   ÚICredentialsCheckerÚ
providedByr[   rA   r
   ÚIUsernamePasswordÚcredentialInterfacesrJ   s    r   Útest_isCheckerÚ!MemoryCheckerTests.test_isCheckerW   óC   € ð
 	�‰œ×4Ñ4×?Ñ?ÀÇÁÓMÔNØ�‰”k×3Ñ3°T·\±\×5VÑ5VÕWr0   c                 ób   • U R                  [        R                  [        R                  S5        g)zx
An argument string which does not contain user:pass pairs
(i.e., an odd number of ':' characters) raises an exception.
zmemory:a:b:cN)r&   r   ÚInvalidAuthArgumentStringr(   rJ   s    r   Útest_badFormatArgStringÚ*MemoryCheckerTests.test_badFormatArgString_   s%   € ð
 	×ÑÜ×-Ñ-¬w×/BÑ/BÀNõ	
r0   c                 óx   ^ • U 4S jnT R                   R                  T R                  5      R                  U5      $ )ú+
The checker works with valid credentials.
c                 óR   >• TR                  U TR                  R                  5        g ©N©ÚassertEqualrQ   Úusername©rs   r+   s    €r   Ú
_gotAvatarÚAMemoryCheckerTests.test_memoryCheckerSucceeds.<locals>._gotAvatarm   ó   ø€ Ø×Ñ˜X t§z¡z×':Ñ':Õ;r0   ©r[   ÚrequestAvatarIdrQ   ÚaddCallback©r+   ru   s   ` r   Útest_memoryCheckerSucceedsÚ-MemoryCheckerTests.test_memoryCheckerSucceedsh   ó.   ø€ õ
	<ð �|‰|×+Ñ+¨D¯J©JÓ7×CÑCÀJÓOÐOr0   c                 óˆ   • U R                  U R                  R                  U R                  5      [        R
                  5      $ ©z-
The checker fails with an invalid username.
©ÚassertFailurer[   ry   rZ   r   ÚUnauthorizedLoginrJ   s    r   Útest_memoryCheckerFailsUsernameÚ2MemoryCheckerTests.test_memoryCheckerFailsUsernamer   ó5   € ð ×!Ñ!Ø�L‰L×(Ñ(¨¯©Ó6¼×8OÑ8Oó
ð 	
r0   c                 óˆ   • U R                  U R                  R                  U R                  5      [        R
                  5      $ ©z-
The checker fails with an invalid password.
©r‚   r[   ry   rY   r   rƒ   rJ   s    r   Útest_memoryCheckerFailsPasswordÚ2MemoryCheckerTests.test_memoryCheckerFailsPasswordz   r†   r0   )rQ   rS   rY   rZ   r[   N)r5   r6   r7   r8   r\   rf   rk   r|   r„   rŠ   r9   r4   r0   r   rN   rN   O   s#   † òJòXò
òPò
õ
r0   rN   c                   ó    • \ rS rSrS rS rSrg)ÚAnonymousCheckerTestséƒ   c                 óà   • [         R                  " S5      nU R                  [        R                  R                  U5      5        U R                  [        R                  UR                  5        g)zx
Verifies that strcred.makeChecker('anonymous') returns an object
that implements the L{ICredentialsChecker} interface.
Ú	anonymousN)
r   r(   ra   r	   rb   rc   rA   r
   Ú
IAnonymousre   )r+   r[   s     r   rf   Ú$AnonymousCheckerTests.test_isChecker„   sK   € ô
 ×%Ò% kÓ2ˆØ�‰œ×4Ñ4×?Ñ?ÀÓHÔIØ�‰”k×,Ñ,¨g×.JÑ.JÕKr0   c                 ó¦   ^ • [         R                  " S5      nUR                  [        R                  " 5       5      nU 4S jnUR                  U5      $ )z/
We can log in anonymously using this checker.
r�   c                 óF   >• TR                  [        R                  U 5        g rp   )rH   r	   Ú	ANONYMOUS)Úavatarr+   s    €r   ru   ÚEAnonymousCheckerTests.testAnonymousAccessSucceeds.<locals>._gotAvatar”   s   ø€ Ø× Ñ ¤×!3Ñ!3°VÕ<r0   )r   r(   ry   r
   Ú	Anonymousrz   )r+   r[   Úrequestru   s   `   r   ÚtestAnonymousAccessSucceedsÚ1AnonymousCheckerTests.testAnonymousAccessSucceeds�   sF   ø€ ô ×%Ò% kÓ2ˆØ×)Ñ)¬+×*?Ò*?Ó*AÓBˆõ	=ð ×"Ñ" :Ó.Ð.r0   r4   N)r5   r6   r7   r8   rf   rš   r9   r4   r0   r   r�   r�   ƒ   s   † òLõ
/r0   r�   z"Required module not available: pwdz$Required module not available: cryptz#Required module not available: spwdc                   óT   • \ rS rSrSSS.rS rS rS rS rS	 r	S
 r
S rS rS rSrg)ÚUnixCheckerTestséš   rR   rT   )rQ   rS   c                 ó€   • [         R                  U[        R                  U R                  U   S5      SSSSSSS4	5      $ )NúF/r   iŸ† é   éÿÿÿÿ)r   Ústruct_spwdr   Úusers)r+   rs   s     r   Ú_spwd_getspnamÚUnixCheckerTests._spwd_getspnam£   sI   € Ü×ÑàÜ—‘˜DŸJ™J xÑ0°$Ó7ØØØØØØØð
ó
ð 	
r0   c           
      ó˜  • [         R                  " SS5      U l        [         R                  " SS5      U l        [         R                  " SS5      U l        [         R                  " SS5      U l        [        R                  " S5      U l        [         R                  " S	S
5      U l	        [         R                  " SS5      U l
        [         R                  " SS5      U l        [         R                  " SS5      U l        [        R                  " S5      U l        [        (       a|  [        5       nU R                   R#                  5        H3  u  p#UR%                  U[&        R'                  US5      SSUSU-   S5        M5     U R)                  [        SUR*                  5        [,        (       a"  U R)                  [,        SU R.                  5        g g )NrQ   rR   rS   rT   rU   rV   rW   Úunixó   adminó   asdfó   aliceó   fooó   foobaró   xó   yzr    iè  z/home/z/bin/shÚgetpwnamÚgetspnam)r
   rX   rQ   rS   rY   rZ   r   r(   r[   Ú
adminBytesÚ
aliceBytesÚbadPassBytesÚbadUserBytesÚcheckerBytesr   r   r¤   ÚitemsÚaddUserr   Úpatchr°   r   r¥   )r+   Údatabasers   Úpasswords       r   r\   ÚUnixCheckerTests.setUp²   s\  € Ü ×1Ò1°'¸6ÓBˆŒ
Ü ×1Ò1°'¸5ÓAˆŒ
Ü"×3Ò3°G¸XÓFˆŒÜ"×3Ò3°C¸Ó>ˆŒÜ×*Ò*¨6Ó2ˆŒÜ%×6Ò6°xÀÓIˆŒÜ%×6Ò6°xÀÓHˆŒÜ'×8Ò8¸À9ÓMˆÔÜ'×8Ò8¸¸uÓEˆÔÜ#×/Ò/°Ó7ˆÔ÷ Š3Ü#“~ˆHØ&*§j¡j×&6Ñ&6Ö&8Ñ"�Ø× Ñ ØÜ—K‘K ¨$Ó/ØØØØ˜xÑ'Øöñ '9ð �J‰J”s˜J¨×(9Ñ(9Ô:ßŠ4Ø�J‰J”t˜Z¨×)<Ñ)<Õ=ð r0   c                 ó´  • U R                  [        R                  R                  U R                  5      5        U R                  [        R                  U R                  R                  5        U R                  [        R                  R                  U R                  5      5        U R                  [        R                  U R                  R                  5        g)zs
Verifies that strcred.makeChecker('unix') returns an object
that implements the L{ICredentialsChecker} interface.
N)
ra   r	   rb   rc   r[   rA   r
   rd   re   r¶   rJ   s    r   rf   ÚUnixCheckerTests.test_isCheckerÐ   s‰   € ð
 	�‰œ×4Ñ4×?Ñ?ÀÇÁÓMÔNØ�‰”k×3Ñ3°T·\±\×5VÑ5VÔWØ�‰œ×4Ñ4×?Ñ?À×@QÑ@QÓRÔSØ�‰Ü×)Ñ)¨4×+<Ñ+<×+QÑ+Qõ	
r0   c                 óx   ^ • U 4S jnT R                   R                  T R                  5      R                  U5      $ )rn   c                 óR   >• TR                  U TR                  R                  5        g rp   rq   rt   s    €r   ru   Ú=UnixCheckerTests.test_unixCheckerSucceeds.<locals>._gotAvatará   rw   r0   rx   r{   s   ` r   Útest_unixCheckerSucceedsÚ)UnixCheckerTests.test_unixCheckerSucceedsÜ   r~   r0   c                 óx   ^ • U 4S jnT R                   R                  T R                  5      R                  U5      $ )z4
The checker works with valid L{bytes} credentials.
c                 óp   >• TR                  U TR                  R                  R                  S5      5        g )Núutf-8)rr   r²   rs   Údecodert   s    €r   ru   ÚBUnixCheckerTests.test_unixCheckerSucceedsBytes.<locals>._gotAvatarë   s(   ø€ Ø×Ñ˜X t§¡×'?Ñ'?×'FÑ'FÀwÓ'OÕPr0   )r¶   ry   r²   rz   r{   s   ` r   Útest_unixCheckerSucceedsBytesÚ.UnixCheckerTests.test_unixCheckerSucceedsBytesæ   s6   ø€ õ
	Qð × Ñ ×0Ñ0°·±ÓA×MÑMØó
ð 	
r0   c                 óˆ   • U R                  U R                  R                  U R                  5      [        R
                  5      $ r€   r�   rJ   s    r   Útest_unixCheckerFailsUsernameÚ.UnixCheckerTests.test_unixCheckerFailsUsernameò   r†   r0   c                 óˆ   • U R                  U R                  R                  U R                  5      [        R
                  5      $ )z6
The checker fails with an invalid L{bytes} username.
)r‚   r¶   ry   rµ   r   rƒ   rJ   s    r   Ú"test_unixCheckerFailsUsernameBytesÚ3UnixCheckerTests.test_unixCheckerFailsUsernameBytesú   ó:   € ð ×!Ñ!Ø×Ñ×-Ñ-¨d×.?Ñ.?Ó@Ü×#Ñ#ó
ð 	
r0   c                 óˆ   • U R                  U R                  R                  U R                  5      [        R
                  5      $ rˆ   r‰   rJ   s    r   Útest_unixCheckerFailsPasswordÚ.UnixCheckerTests.test_unixCheckerFailsPassword  r†   r0   c                 óˆ   • U R                  U R                  R                  U R                  5      [        R
                  5      $ )z6
The checker fails with an invalid L{bytes} password.
)r‚   r¶   ry   r´   r   rƒ   rJ   s    r   Ú"test_unixCheckerFailsPasswordBytesÚ3UnixCheckerTests.test_unixCheckerFailsPasswordBytes  rÑ   r0   )
rQ   r²   rS   r³   rY   r´   rZ   rµ   r[   r¶   N)r5   r6   r7   r8   r¤   r¥   r\   rf   rÂ   rÉ   rÌ   rÏ   rÓ   rÖ   r9   r4   r0   r   r�   r�   š   s?   † ð
 Øñ€Eò

ò>ò<

òPò

ò
ò
ò
õ
r0   r�   z%Required module is unavailable: cryptc                   ó$   • \ rS rSrSrS rS rSrg)Ú
CryptTestsi  z1
L{crypt} has functions for encrypting password.
c                 óÐ  • SnS H‹  n [         R                  X5      n[        U[        5      (       a  UR                  S5      nSnU R                  [        R                  " X15      5        U R                  [        R                  " XA5      5        M�     S GH:  n[        [         US5      nU(       d  M  Sn[         R                  X5      n[        U[        5      (       a  UR                  S5      nUS-   n[        R                  " Xq5      n	U R                  U	5        [        R                  " UR                  S5      UR                  S5      5      n	U R                  U	5        [        R                  " X�5      n	U R                  U	5        [        R                  " UR                  S5      UR                  S5      5      n	U R                  U	5        GM=     g! [         a     GMß  f = f)	z$
L{cred_unix.verifyCryptedPassword}
úsample password ^%$)NÚabrÆ   z$1x1234)ÚMETHOD_SHA512ÚMETHOD_SHA256Ú
METHOD_MD5ÚMETHOD_CRYPTNzinteresting password xyzÚblahfooincorrect)r   Ú
isinstanceÚbytesrÇ   Ú	TypeErrorra   r   ÚverifyCryptedPasswordÚassertFalseÚgetattrÚencode)
r+   r»   ÚsaltÚcryptedCorrectÚcryptedIncorrectÚmethodÚcryptMethodÚcryptedÚincorrectCryptedÚresults
             r   Útest_verifyCryptedPasswordÚ%CryptTests.test_verifyCryptedPassword  sš  € ð )ˆã ˆDðÜ!&§¡¨XÓ!<�Ü˜n¬e×4Ñ4Ø%3×%:Ñ%:¸7Ó%C�Nð  )ÐØ�O‰OœI×;Ò;¸NÓUÔVØ×ÑÜ×/Ò/Ð0@ÓKöñ !ô$ WˆFÜ!¤%¨°Ó6ˆKÞÙØ1ˆHÜ—k‘k (Ó8ˆGÜ˜'¤5×)Ñ)Ø!Ÿ.™.¨Ó1�Ø&Ð);Ñ;ÐÜ×4Ò4°WÓGˆFØ�O‰O˜FÔ#ä×4Ò4Ø—‘˜wÓ'¨¯©¸Ó)AóˆFð �O‰O˜FÔ#Ü×4Ò4Ð5EÓPˆFØ×Ñ˜VÔ$ä×4Ò4Ø ×'Ñ'¨Ó0°(·/±/À'Ó2JóˆFð ×Ñ˜V×$ò- Wøô ó ó ð	ús   ‰;GÇ
G%Ç$G%c                 ó²   • S nSn[         R                  US5      nU R                  [         SU5        U R                  [        R                  " X25      5        g)z;
L{cred_unix.verifyCryptedPassword} when OSError is raised
c                 ó   • [        S5      e)NÚ )ÚOSError)r»   ré   s     r   Ú	mockCryptÚ?CryptTests.test_verifyCryptedPasswordOSError.<locals>.mockCryptP  s   € Ü˜"“+Ðr0   rÛ   rÜ   r   N)r   r¹   ræ   r   rå   )r+   r÷   r»   rê   s       r   Ú!test_verifyCryptedPasswordOSErrorÚ,CryptTests.test_verifyCryptedPasswordOSErrorK  sG   € ò
	ð )ˆÜŸ™ X¨tÓ4ˆØ�
‰
”5˜' 9Ô-Ø×Ñœ×8Ò8¸ÓRÕSr0   r4   N)r5   r6   r7   r8   Ú__doc__rñ   rù   r9   r4   r0   r   rÙ   rÙ     s   † ñò.%õ`Tr0   rÙ   c                   óH   • \ 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g)ÚFileDBCheckerTestsiY  z"
C{--auth=file:...} file checker.
c                 ó¦  • [         R                  " SS5      U l        [         R                  " SS5      U l        [         R                  " SS5      U l        [         R                  " SS5      U l        U R                  5       U l        [        U R                  5      R                  S5        [        R                  " S	U R                  -   5      U l        g )
Nr©   rª   r«   r¬   r­   r®   r¯   ó   admin:asdf
alice:foo
úfile:)r
   rX   rQ   rS   rY   rZ   ÚmktempÚfilenamer   Ú
setContentr   r(   r[   rJ   s    r   r\   ÚFileDBCheckerTests.setUp^  s’   € Ü ×1Ò1°(¸GÓDˆŒ
Ü ×1Ò1°(¸FÓCˆŒ
Ü"×3Ò3°H¸iÓHˆŒÜ"×3Ò3°D¸%Ó@ˆŒØŸ™›ˆŒÜ�—‘Ó×*Ñ*Ð+EÔFÜ×*Ò*¨7°T·]±]Ñ+BÓCˆ�r0   c                 ó¨   • Sn[         R                  R                  U5      (       a+  US-  n[         R                  R                  U5      (       a  M+  U$ )Nz/DoesNotExistr   )ÚosÚpathÚexists)r+   r  s     r   Ú_fakeFilenameÚ FileDBCheckerTests._fakeFilenameg  s=   € Ø"ˆÜ�g‰g�n‰n˜X×&Ñ&Ø˜‰OˆHô �g‰g�n‰n˜X×&Ó&àˆr0   c                 óÜ   • U R                  [        R                  R                  U R                  5      5        U R                  [        R                  U R                  R                  5        gr_   r`   rJ   s    r   rf   Ú!FileDBCheckerTests.test_isCheckerm  rh   r0   c                 óx   ^ • U 4S jnT R                   R                  T R                  5      R                  U5      $ )rn   c                 óR   >• TR                  U TR                  R                  5        g rp   rq   rt   s    €r   ru   Ú?FileDBCheckerTests.test_fileCheckerSucceeds.<locals>._gotAvatarz  rw   r0   rx   r{   s   ` r   Útest_fileCheckerSucceedsÚ+FileDBCheckerTests.test_fileCheckerSucceedsu  r~   r0   c                 óˆ   • U R                  U R                  R                  U R                  5      [        R
                  5      $ r€   r�   rJ   s    r   Útest_fileCheckerFailsUsernameÚ0FileDBCheckerTests.test_fileCheckerFailsUsername  r†   r0   c                 óˆ   • U R                  U R                  R                  U R                  5      [        R
                  5      $ rˆ   r‰   rJ   s    r   Útest_fileCheckerFailsPasswordÚ0FileDBCheckerTests.test_fileCheckerFailsPassword‡  r†   r0   c                 ó˜   • U R                  [        [        R                  S5        U R                  [        [        R                  S5        g)z$
An empty filename raises an error.
rG   r   N)r&   Ú
ValueErrorr   r(   rJ   s    r   Útest_failsWithEmptyFilenameÚ.FileDBCheckerTests.test_failsWithEmptyFilename�  s4   € ð 	×Ñœ*¤g×&9Ñ&9¸6ÔBØ×Ñœ*¤g×&9Ñ&9¸7ÕCr0   c                 óJ  • [         R                  R                  n[        5       nU[         R                  l        [        R
                  " SU R                  5       -   5        U[         R                  l        U R                  [         R                  UR                  5       5        g)z\
When the file auth plugin is given a file that doesn't exist, it
should produce a warning.
r   N)
r   rI   ÚerrorOutputr   r   r(   r	  rA   ÚinvalidFileWarningÚgetvalue)r+   Ú	oldOutputÚ	newOutputs      r   Útest_warnWithBadFilenameÚ+FileDBCheckerTests.test_warnWithBadFilename–  sq   € ô
 ×3Ñ3×?Ñ?ˆ	Ü“Jˆ	Ø6?Œ	×'Ñ'Ô3Ü×Ò˜G d×&8Ñ&8Ó&:Ñ:Ô;Ø6?Œ	×'Ñ'Ô3Ø�‰”i×2Ñ2°I×4FÑ4FÓ4HÕIr0   )rQ   rS   rY   rZ   r[   r  N)r5   r6   r7   r8   rû   r\   r	  rf   r  r  r  r  r"  r9   r4   r0   r   rý   rý   Y  s4   † ñòDòòXòPò
ò
òDõ
Jr0   rý   Úcryptographyzcryptography is not availablec                   ó   • \ rS rSrSrS rSrg)ÚSSHCheckerTestsi£  z¸
Tests for the C{--auth=sshkey:...} checker.  The majority of the
tests for the ssh public key database checker are in
L{twisted.conch.test.test_checkers.SSHPublicKeyCheckerTestCase}.
c                 óà   • [         R                  " S5      nU R                  [        R                  R                  U5      5        U R                  [        R                  UR                  5        g)zu
Verifies that strcred.makeChecker('sshkey') returns an object
that implements the L{ICredentialsChecker} interface.
ÚsshkeyN)
r   r(   ra   r	   rb   rc   rA   r
   ÚISSHPrivateKeyre   )r+   Ú
sshCheckers     r   rf   ÚSSHCheckerTests.test_isChecker¬  sK   € ô
 ×(Ò(¨Ó2ˆ
Ø�‰œ×4Ñ4×?Ñ?À
ÓKÔLØ�‰”k×0Ñ0°*×2QÑ2QÕRr0   r4   N)r5   r6   r7   r8   rû   rf   r9   r4   r0   r   r&  r&  £  s   † ñõSr0   r&  c                   ó   • \ rS rSrSrSrg)ÚDummyOptionsi¶  z8
Simple options for testing L{strcred.AuthOptionMixin}.
r4   N)r5   r6   r7   r8   rû   r9   r4   r0   r   r-  r-  ¶  s   † ôr0   r-  c                   óD   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)ÚCheckerOptionsTestsi¼  c                 óð   • [        5       nUR                  SS/5        U R                  [        US   5      S5        [        5       nUR                  / SQ5        U R                  [        US   5      S5        g)z]
The C{--auth} command line creates a list in the
Options instance and appends values to it.
ú--authÚmemoryÚcredCheckersé   )r1  r2  r1  r2  é   N)r-  ÚparseOptionsrr   Úlen©r+   Úoptionss     r   Útest_createsListÚ$CheckerOptionsTests.test_createsList½  sh   € ô
 “.ˆØ×Ñ˜h¨Ð1Ô2Ø×Ñœ˜W ^Ñ4Ó5°qÔ9Ü“.ˆØ×ÑÒEÔFØ×Ñœ˜W ^Ñ4Ó5°qÕ9r0   c                 óà   • [        5       n[        5       nU R                  [        R                  UR
                  SU/5        U R                  [        R                  UR
                  SU/5        g)z`
The C{--auth} command line raises an exception when it
gets a parameter it doesn't understand.
r1  ú--help-auth-typeN)r-  r    r&   r   Ú
UsageErrorr6  )r+   r9  ÚinvalidParameters      r   Útest_invalidAuthErrorÚ)CheckerOptionsTests.test_invalidAuthErrorÉ  sh   € ô
 “.ˆô .Ó/ÐØ×ÑÜ×Ñ˜g×2Ñ2°XÐ?OÐ4Pô	
ð 	×ÑÜ×ÑØ× Ñ ØÐ!1Ð2õ	
r0   c                 ó°  • [        5       nUR                  / SQ5        US   nU R                  [        U[        R
                     5      S5        U R                  [        U[        R                     5      S5        U[        R
                     S   nU[        R                     S   nU R                  [        R                  R                  U5      5        U R                  [        R                  R                  U5      5        U R                  [        R
                  UR                  5        U R                  [        R                  UR                  5        g)zƒ
The C{--auth} command line creates a dictionary mapping supported
interfaces to the list of credentials checkers that support it.
)r1  r2  r1  r�   ÚcredInterfacesr4  r   N)r-  r6  rr   r7  r
   r‘   rd   ra   r	   rb   rc   rA   re   )r+   r9  ÚchdÚchdAnonymousÚchdUserPasss        r   Útest_createsDictionaryÚ*CheckerOptionsTests.test_createsDictionaryÛ  sý   € ô
 “.ˆØ×ÑÒHÔIØÐ&Ñ'ˆØ×Ñœ˜S¤×!7Ñ!7Ñ8Ó9¸1Ô=Ø×Ñœ˜S¤×!>Ñ!>Ñ?Ó@À!ÔDØœ;×1Ñ1Ñ2°1Ñ5ˆØœ+×7Ñ7Ñ8¸Ñ;ˆØ�‰œ×4Ñ4×?Ñ?ÀÓMÔNØ�‰œ×4Ñ4×?Ñ?ÀÓLÔMØ�‰”k×,Ñ,¨l×.OÑ.OÔPØ�‰”k×3Ñ3°[×5UÑ5UÕVr0   c                 ó�   • [        5       nUR                  / SQ5        U R                  US   US   [        R                     5        g)zn
When two C{--auth} arguments are passed along which support the same
interface, a list with both is created.
)r1  r2  r1  r¨   r3  rC  N)r-  r6  rr   r
   rd   r8  s     r   Ú test_credInterfacesProvidesListsÚ4CheckerOptionsTests.test_credInterfacesProvidesListsì  sD   € ô
 “.ˆØ×ÑÒCÔDØ×ÑØ�NÑ#ØÐ$Ñ%¤k×&CÑ&CÑDõ	
r0   c                 ó¸   • / n[        5       nUR                  5        H:  nU R                  UR                  U5        UR	                  UR                  5        M<     g)z7
The list for C{--help-auth} does not duplicate items.
N)r-  Ú_checkerFactoriesForOptHelpAuthÚassertNotInr   Úappend)r+   Ú	authTypesr9  Úcfs       r   Ú!test_listDoesNotDisplayDuplicatesÚ5CheckerOptionsTests.test_listDoesNotDisplayDuplicatesø  sI   € ð ˆ	Ü“.ˆØ×9Ñ9Ö;ˆBØ×Ñ˜RŸ[™[¨)Ô4Ø×Ñ˜RŸ[™[Ö)ò <r0   c                 ó  • [        5       n[        5       nXl        U R                  [        UR
                  S/5        [        R                  " 5        H-  nU R                  UR                  UR                  5       5        M/     g)zb
The C{--help-auth} argument correctly displays all
available authentication plugins, then exits.
z--help-authN)r   r-  Ú
authOutputr&   Ú
SystemExitr6  r   r   rA   r   r  )r+   Ú	newStdoutr9  ÚcheckerFactorys       r   Útest_displaysListCorrectlyÚ.CheckerOptionsTests.test_displaysListCorrectly  sb   € ô
 “Jˆ	Ü“.ˆØ&ÔØ×Ñœ* g×&:Ñ&:¸]¸OÔLÜ%×:Ò:Ö<ˆNØ�M‰M˜.×1Ñ1°9×3EÑ3EÓ3GÖHò =r0   c                 óJ  • [        5       n[        5       nXl        U R                  [        UR
                  SS/5        [        R                  R                   HH  nUR                  5       (       d  M  U R                  UR                  5       UR                  5       5        MJ     g)zn
The C{--help-auth-for} argument will correctly display the help file
for a particular authentication plugin.
r=  rG   N)r   r-  rU  r&   rV  r6  r   rI   ÚauthHelpÚstriprA   r  )r+   rW  r9  Úlines       r   Útest_displaysHelpCorrectlyÚ.CheckerOptionsTests.test_displaysHelpCorrectly  sy   € ô
 “Jˆ	Ü“.ˆØ&ÔØ×ÑÜ˜×,Ñ,Ð/AÀ6Ð.Jô	
ô ×3Ñ3×<Ô<ˆDØ�z‰z�|‹|Ø—‘˜dŸj™j›l¨I×,>Ñ,>Ó,@ÖAò =r0   c                 ó¨   • [        5       nU R                  [        R                  UR                  SS/5      nU R                  [        U5      S5        g)z…
When the checker specified by C{--auth} raises an unexpected error, it
should be caught and re-raised within a L{usage.UsageError}.
r1  rG   z,Unexpected error: 'file' requires a filenameN)r-  r&   r   r>  r6  rr   Ústr)r+   r9  Úerrs      r   Útest_unexpectedExceptionÚ,CheckerOptionsTests.test_unexpectedException  sJ   € ô
 “.ˆØ×ÑÜ×Ñ˜g×2Ñ2°X¸vÐ4Fó
ˆð 	×Ñœ˜S›Ð#QÕRr0   r4   N)r5   r6   r7   r8   r:  r@  rG  rJ  rR  rY  r_  rd  r9   r4   r0   r   r/  r/  ¼  s.   † ò
:ò
ò$Wò"

ò*ò
IòBõ	Sr0   r/  c                   ó.   • \ rS rSr\R
                  4rSrg)ÚOptionsForUsernamePasswordi)  r4   N)r5   r6   r7   r8   r
   rd   ÚsupportedInterfacesr9   r4   r0   r   rg  rg  )  s   † Ø&×8Ñ8Ð:Ór0   rg  c                   ó.   • \ rS rSr\R
                  4rSrg)Ú OptionsForUsernameHashedPasswordi-  r4   N)r5   r6   r7   r8   r
   ÚIUsernameHashedPasswordrh  r9   r4   r0   r   rj  rj  -  s   † Ø&×>Ñ>Ð@Ór0   rj  c                   ó   • \ rS rSrSrSrg)ÚOptionsSupportsAllInterfacesi1  Nr4   )r5   r6   r7   r8   rh  r9   r4   r0   r   rm  rm  1  s   † ØÓr0   rm  c                   ó0   • \ rS rSr% / r\\\      \S'   Sr	g)ÚOptionsSupportsNoInterfacesi5  rh  r4   N)
r5   r6   r7   r8   rh  r   r   r   Ú__annotations__r9   r4   r0   r   ro  ro  5  s   ‡ Ø57Ð˜ $ y¡/Ñ2Ö7r0   ro  c                   óT   • \ 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g)ÚLimitingInterfacesTestsi9  aa  
Tests functionality that allows an application to limit the
credential interfaces it can support. For the purposes of this
test, we use IUsernameHashedPassword, although this will never
really be used by the command line.

(I have, to date, not thought of a half-decent way for a user to
specify a hash algorithm via the command-line. Nor do I think it's
very useful.)

I should note that, at first, this test is counter-intuitive,
because we're using the checker with a pre-defined hash function
as the 'bad' checker. See the documentation for
L{twisted.cred.checkers.FilePasswordDB.hash} for more details.
c                 óŠ  • U R                  5       U l        [        U R                  S5       nUR                  S5        S S S 5        [        R
                  " U R                  5      U l        [        R
                  " U R                  U R                  S9U l        [        R                  " 5       U l
        g ! , (       d  f       N|= f)NÚwbrÿ   )Úhash)r  r  ÚopenÚwriter	   ÚFilePasswordDBÚgoodCheckerÚ_hashÚ
badCheckerÚAllowAnonymousAccessÚanonChecker)r+   Úfs     r   r\   ÚLimitingInterfacesTests.setUpJ  s~   € ØŸ™›ˆŒÜ�$—-‘- Ô&¨!Ø�G‰GÐ.Ô/÷ 'ä#×2Ò2°4·=±=ÓAˆÔÜ"×1Ò1°$·-±-ÀdÇjÁjÑQˆŒÜ#×8Ò8Ó:ˆÕ÷	 'Õ&ús   ¬B4Â4
Cc                 ó   • U$ )z.
A dumb hash that doesn't really do anything.
r4   )r+   ÚnetworkUsernameÚnetworkPasswordÚstoredPasswords       r   rz  ÚLimitingInterfacesTests._hashR  s
   € ð Ðr0   c                 ó:  • [        5       nU R                  UR                  [        R                  5      5        U R                  UR                  [        R                  5      5        U R                  [        R                  UR                  U R                  5        g)z5
The supportsInterface method behaves appropriately.
N)rg  ra   ÚsupportsInterfacer
   rd   ræ   r‘   r&   r   ÚUnsupportedInterfacesÚ
addCheckerr}  r8  s     r   Útest_supportsInterfaceÚ.LimitingInterfacesTests.test_supportsInterfaceX  so   € ô -Ó.ˆØ�‰˜×1Ñ1´+×2OÑ2OÓPÔQØ×Ñ˜×2Ñ2´;×3IÑ3IÓJÔKØ×ÑÜ×)Ñ)¨7×+=Ñ+=¸t×?OÑ?Oõ	
r0   c                 óÐ   • [        5       nU R                  UR                  [        R                  5      5        U R                  UR                  [        R
                  5      5        g)zd
The supportsInterface method behaves appropriately
when the supportedInterfaces attribute is None.
N)rm  ra   r†  r
   rd   r‘   r8  s     r   Útest_supportsAllInterfacesÚ2LimitingInterfacesTests.test_supportsAllInterfacesc  sF   € ô
 /Ó0ˆØ�‰˜×1Ñ1´+×2OÑ2OÓPÔQØ�‰˜×1Ñ1´+×2HÑ2HÓIÕJr0   c                 óØ   • [        5       n[        R                  n[        R                  nU R                  UR                  U5      5        U R                  UR                  U5      5        g)z:
The supportsCheckerFactory method behaves appropriately.
N)rg  r   rI   r   ÚtheAnonymousCheckerFactoryra   ÚsupportsCheckerFactoryræ   )r+   r9  ÚfileCFÚanonCFs       r   Útest_supportsCheckerFactoryÚ3LimitingInterfacesTests.test_supportsCheckerFactoryl  sR   € ô -Ó.ˆÜ×0Ñ0ˆÜ×:Ñ:ˆØ�‰˜×6Ñ6°vÓ>Ô?Ø×Ñ˜×7Ñ7¸Ó?Õ@r0   c                 óx  • [        5       nUR                  U R                  5        UR                  S   nU R	                  US   U   S   U R                  5        U R	                  US   S   U R                  5        U R                  [        US   U   5      S5        U R                  [        US   5      S5        g)z…
When addChecker is called with a checker that implements at least one
of the interfaces our application supports, it is successful.
r   rC  r3  r4  N)rg  rˆ  ry  rh  rH   rr   r7  )r+   r9  Úifaces      r   Útest_canAddSupportedCheckerÚ3LimitingInterfacesTests.test_canAddSupportedCheckerv  s°   € ô
 -Ó.ˆØ×Ñ˜4×+Ñ+Ô,Ø×+Ñ+¨AÑ.ˆà×Ñ˜WÐ%5Ñ6°uÑ=¸aÑ@À$×BRÑBRÔSØ×Ñ˜W ^Ñ4°QÑ7¸×9IÑ9IÔJà×Ñœ˜WÐ%5Ñ6°uÑ=Ó>ÀÔBØ×Ñœ˜W ^Ñ4Ó5°qÕ9r0   c                 ó‚   • [        5       nU R                  [        R                  UR                  U R
                  5        g)zf
When addChecker is called with a checker that does not implement any
supported interfaces, it fails.
N)rj  r&   r   r‡  rˆ  r{  r8  s     r   Ú#test_failOnAddingUnsupportedCheckerÚ;LimitingInterfacesTests.test_failOnAddingUnsupportedChecker…  s1   € ô
 3Ó4ˆØ×ÑÜ×)Ñ)¨7×+=Ñ+=¸t¿¹õ	
r0   c                 ó¦   • [        5       n[        R                  R                  nU R	                  [
        R                  UR                  SU/5        g)zY
The C{--auth} command line raises an exception when it
gets a checker we don't support.
r1  N)ro  r   r�  r   r&   r   r>  r6  )r+   r9  r   s      r   Útest_unsupportedInterfaceErrorÚ6LimitingInterfacesTests.test_unsupportedInterfaceError�  s@   € ô
 .Ó/ˆÜ!×<Ñ<×EÑEˆØ×Ñœ%×*Ñ*¨G×,@Ñ,@À8ÈXÐBVÕWr0   c                 óÜ   • [        5       nUR                  5        HN  nSnUR                   H  nUR                  U5      (       d  M  SnM     U(       d  M;  [        R
                  " 5       e   g)z‚
C{--help-auth} will only list checkers that purport to
supply at least one of the credential interfaces our
application can use.
TFN)rg  rM  re   r†  r   r‡  )r+   r9  r   ÚinvalidÚ	interfaces        r   Útest_helpAuthLimitsOutputÚ1LimitingInterfacesTests.test_helpAuthLimitsOutput˜  sa   € ô -Ó.ˆØ×>Ñ>Ö@ˆGØˆGØ$×9Ô9�	Ø×,Ñ,¨Y×7Ó7Ø#’Gñ :÷ ˆwÜ×3Ò3Ó5Ð5ò Ar0   c                 ón  • [        5       nSn[        R                  " 5        H  nUR                  U5      (       a  M  Un  O   U R	                  US5        [        5       nXAl        U R                  [        UR                  SS/5        U R                  [        R                  UR                  5       5        g)z¤
C{--help-auth-type} will display a warning if you get
help for an authType that does not supply at least one of the
credential interfaces our application can use.
Nr=  r�   )rg  r   r   r�  ÚassertNotIdenticalr   rU  r&   rV  r6  rA   ÚnotSupportedWarningr  )r+   r9  ÚinvalidFactoryr   rW  s        r   Útest_helpAuthTypeLimitsOutputÚ5LimitingInterfacesTests.test_helpAuthTypeLimitsOutput§  sœ   € ô -Ó.ˆàˆÜ×3Ò3Ö5ˆGØ×1Ñ1°'×:Ó:Ø!(�Ùñ 6ð 	×Ñ °Ô5ä“Jˆ	Ø&ÔØ×ÑÜ˜×,Ñ,Ð/AÀ;Ð.Oô	
ð 	�‰”g×1Ñ1°9×3EÑ3EÓ3GÕHr0   )r}  r{  r  ry  N)r5   r6   r7   r8   rû   r\   rz  r‰  rŒ  r“  r—  rš  r�  r¢  r¨  r9   r4   r0   r   rr  rr  9  s=   † ñò ;òò	
òKòAò:ò
òXò6õIr0   rr  )5rû   r  Úior   Útypingr   r   Úunittestr   Úzope.interfacer   Útwistedr   Útwisted.credr	   r
   r   r   Útwisted.pluginsr   r   r   Útwisted.pythonr   Útwisted.python.fakepwdr   Útwisted.python.filepathr   Útwisted.python.reflectr   Útwisted.trial.unittestr   r   r   r   r    r"   r;   rN   r�   r�   rÙ   rý   r&  ÚOptionsÚAuthOptionMixinr-  r/  rg  rj  rm  ro  rr  r4   r0   r   Ú<module>r¸     sõ  ðñó
 
Ý ß !Ý å $å ß >Ó >ß @Ñ @Ý  Ý /Ý ,Ý 0Ý +á�gÓ€Ù�EÓ€Ù�VÓ€ò	ôT�Xô Tô$
˜Hô 
ô&1
˜ô 1
ôh/˜Hô /ñ. ˆCŒÐ5Ó6ÙˆEŒ	Ð9Ó:ÙˆDŒÐ7Ó8ôu
�xó u
ó 9ó ;ó 7ðu
ñp ˆEŒ	Ð:Ó;ô@T�ó @Tó <ð@TôFGJ˜ô GJñT ˆCŒÐ5Ó6Ù‰M˜.Ó)Ô)Ð+JÓKôS�hó Só Ló 7ðSô"�5—=‘= '×"9Ñ"9ô ôjS˜(ô jSôZ; §¡°×0GÑ0Gô ;ôA u§}¡}°g×6MÑ6Mô Aô 5§=¡=°'×2IÑ2Iô ô8 %§-¡-°×1HÑ1Hô 8ôBI˜hõ BIr0   