+
    üÐj.  ã                   óp  € ^ RI Ht ^ RIHt ^ RIHtHt ^ RIHtH	t	H
t
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^RIHtHt ]! R4      t]! R4      t]e	   ^ RIHtHt ]! ]4       ! R R4      4       t ]f   RM]f   RMRt! ! R R]PD                  4      t# ! R R]PD                  4      t$R# )é    )Úimplementer)Ú
IConchUser)ÚAllowAnonymousAccessÚ'InMemoryUsernamePasswordDatabaseDontUse)Ú	AnonymousÚ
IAnonymousÚIUsernamePasswordÚUsernamePassword)ÚLoginDenied)ÚPortal)ÚIReactorProcess)ÚUserDatabase)ÚrequireModule)Úunittest)Ú
StubClientÚStubConnectionÚcryptographyztwisted.conch.unixN)ÚUnixConchUserÚUnixSSHRealmc                   óB   a € ] tR t^"t o RtR tR/ RRR^ R3R ltRtV tR# )ÚMockProcessSpawnerz;
An L{IReactorProcess} that logs calls to C{spawnProcess}.
c                ó   € . V n         R # )N©Ú_spawnProcessCalls)Úselfs   &Ú>/usr/lib/python3/dist-packages/twisted/conch/test/test_unix.pyÚ__init__ÚMockProcessSpawner.__init__(   s
   € Ø"$ˆÖó    Nc
                ó`   € V P                   P                  RVRVRVRVRVRVRVRVR	V	/	4       R
# )zA
Log a call to C{spawnProcess}. Do not actually spawn a process.
ÚprocessProtocolÚ
executableÚargsÚenvÚpathÚuidÚgidÚusePTYÚchildFDsN)r   Úappend)
r   r!   r"   r#   r$   r%   r&   r'   r(   r)   s
   &&&&&&&&&&r   ÚspawnProcessÚMockProcessSpawner.spawnProcess+   sJ   € ð 	×Ñ×&Ñ&à! ?Ø˜jØ˜Ø�sØ˜Ø�sØ�sØ˜&Ø˜Hð
ö	
r   r   © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r+   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   "   s0   ø‡ € ñò%ð ØØØØØØ÷
ò 
r   r   zCannot run without cryptographyzUnix system requiredc                   ó6   a € ] tR t^Rt o ]tV 3R lR ltRtV tR# )ÚTestSSHSessionForUnixConchUserc                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnNr-   )Úformatr6   s   "€r   Ú__annotate__Ú+TestSSHSessionForUnixConchUser.__annotate__U   s   ø€ ÷ =ñ =¨Dñ =r   c                ó‚  € \        4       pRpRpVP                  W2R7       V P                  \        RV4       \	        4       p\        V4      p\        \        4       R7      Vn        \        P                  WTR7      pRpR.pVP                  Wx4       VP                  w  p	V P                  W)R	,          R
,          4       R# )zV
C{execCommand} sets the C{HOME} environment variable to the avatar's home
directory.
z/made/up/path/Úuser©ÚhomeÚpwd)Ú	transport)ÚreactorNznot-actually-executedr$   ÚHOME)r   ÚaddUserÚpatchÚunixr   r   r   r   ÚconnÚSSHSessionForUnixConchUserÚexecCommandr   ÚassertEqual)
r   ÚuserdbÚhomeDirectoryÚuserNameÚmockReactorÚavatarÚsessionÚprotocolÚcommandÚcalls
   &         r   ÚtestExecCommandEnvironmentÚ9TestSSHSessionForUnixConchUser.testExecCommandEnvironmentU   s¥   € ô
 “ˆØ(ˆØˆØ�‰�xˆÔ4Ø�
‰
”4˜ Ô'Ü(Ó*ˆÜ˜xÓ(ˆÜ$¬z«|Ô<ˆŒÜ×1Ñ1°&Ð1ÓNˆØˆØ*Ð+ˆØ×Ñ˜HÔ.Ø×/Ñ/‰ˆØ×Ñ˜¨U­°FÕ(;Ö<r   r-   N)	r.   r/   r0   r1   Ú
shouldSkipÚskiprX   r3   r4   r5   s   @r   r8   r8   R   s   ø‡ € Ø€D÷=ö =r   r8   c                   óL   a € ] tR t^jt o Rt]tV 3R lR ltV 3R lR ltRt	V t
R# )ÚTestUnixSSHRealmz
Tests for L{UnixSSHRealm}.
c                ó   <€ V ^8„  d   QhRR/# r:   r-   )r=   r6   s   "€r   r>   ÚTestUnixSSHRealm.__annotate__q   s   ø€ ÷ 4ñ 4 4ñ 4r   c                ó¾  € \        4       pRpVP                  RVR7       V P                  \        RV4       \	        RR7      p\        \        4       V.4      p\        RR4      pVP                  VR\        4      pV P                  V4      w  rxp	V P                  V\        4       \        V\        4      '       g   Q hV P                  VP                  4       V4       R# )	z\
L{UnixSSHRealm} is an L{IRealm} whose C{.requestAvatar} method returns
a L{UnixConchUser}.
z/testing/home/valuerA   rB   rD   s   password)rA   s   userN)r   rH   rI   rJ   r   r   r   r
   Úloginr   ÚsuccessResultOfÚassertIsInstancer   Ú
isinstancerN   Ú
getHomeDir)
r   rO   rC   ÚpwdbÚpÚcredsÚresultÚresultInterfacerS   Úlogouts
   &         r   Útest_unixSSHRealmÚ"TestUnixSSHRealm.test_unixSSHRealmq   s»   € ô
 “ˆØ$ˆØ�‰�v DˆÔ)Ø�
‰
”4˜ Ô'Ü6¸KÔHˆÜ”<“> D 6Ó*ˆô
 $4°G¸[Ó#IˆØ—‘˜ ¤jÓ1ˆØ*.×*>Ñ*>¸vÓ*FÑ'ˆ Ø×Ñ˜f¤mÔ4Ü˜&¤-×0Ò0Ð0Ð0Ø×Ñ˜×*Ñ*Ó,¨dÖ3r   c                ó   <€ V ^8„  d   QhRR/# r:   r-   )r=   r6   s   "€r   r>   r_   ‡   s   ø€ ÷ >ñ >°Dñ >r   c                óò   € \        \        4       \        4       .4      pVP                  \	        \        4       4      R\        4      pV P                  V4      pV P                  VP                  \        4       R# )z/
L{UnixSSHRealm} will refuse anonymous logins.
N)r   r   r   ra   r   r   r   ÚfailureResultOfrc   Úvaluer   )r   rg   ri   ÚloginDenieds   &   r   Ú"test_unixSSHRefusesAnonymousLoginsÚ3TestUnixSSHRealm.test_unixSSHRefusesAnonymousLogins‡   sX   € ô ”<“>Ô$8Ó$:Ð#;Ó<ˆØ—‘œ¤I£KÓ0°$¼
ÓCˆØ×*Ñ*¨6Ó2ˆØ×Ñ˜k×/Ñ/´Ö=r   r-   N)r.   r/   r0   r1   r2   rZ   r[   rl   rs   r3   r4   r5   s   @r   r]   r]   j   s%   ø‡ € ñð €D÷4ð 4÷,>ö >r   r]   )%Úzope.interfacer   Útwisted.conch.interfacesr   Útwisted.cred.checkersr   r   Útwisted.cred.credentialsr   r   r	   r
   Útwisted.cred.errorr   Útwisted.cred.portalr   Útwisted.internet.interfacesr   Útwisted.python.fakepwdr   Útwisted.python.reflectr   Útwisted.trialr   Útest_sessionr   r   r   rJ   Útwisted.conch.unixr   r   r   rZ   ÚTestCaser8   r]   r-   r   r   Ú<module>r‚      sµ   ðõ 'å /÷÷ó õ +Ý &Ý 7Ý /Ý 0Ý "ß 4á˜^Ó,€ÙÐ)Ó*€àÒß>ñ ˆ_Ó÷#
ð #
ó ð#
ðP Òñ &ð ‚|ñ 
 à	ð ô= X×%6Ñ%6ô =ô0$>�x×(Ñ(ö $>r   