
    Vh.                     b   d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ ddlmZmZ  ed      Z ed      Zed dlmZmZ  ee       G d d             Z ednedndZ! G d dejD                        Z# G d dejD                        Z$y)    )implementer)
IConchUser)AllowAnonymousAccess'InMemoryUsernamePasswordDatabaseDontUse)	Anonymous
IAnonymousIUsernamePasswordUsernamePassword)LoginDenied)Portal)IReactorProcess)UserDatabase)requireModule)unittest   )
StubClientStubConnectioncryptographyztwisted.conch.unixN)UnixConchUserUnixSSHRealmc                   ,    e Zd ZdZd Zdi dddddfdZy)MockProcessSpawnerzC
    An L{IReactorProcess} that logs calls to C{spawnProcess}.
    c                     g | _         y )N)_spawnProcessCalls)selfs    L/home/dcms/DCMS/lib/python3.12/site-packages/twisted/conch/test/test_unix.py__init__zMockProcessSpawner.__init__(   s
    "$     Nr   c
                 N    | j                   j                  |||||||||	d	       y)zQ
        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   spawnProcesszMockProcessSpawner.spawnProcess+   s8     	&&#2( $
	
r   )__name__
__module____qualname____doc__r   r+   r   r   r   r   r   "   s(    % 
r   r   zCannot run without cryptographyzUnix system requiredc                       e Zd ZeZddZy)TestSSHSessionForUnixConchUserNc                 x   t               }d}d}|j                  ||       | j                  t        d|       t	               }t        |      }t        t                     |_        t        j                  ||      }d}dg}|j                  ||       |j                  \  }	| j                  ||	d	   d
          y)zn
        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   testExecCommandEnvironmentz9TestSSHSessionForUnixConchUser.testExecCommandEnvironmentU   s    
 (xm4

4'(*x($z|<11&+1N*+Hg.//UF(;<r   returnN)r,   r-   r.   
shouldSkipskiprJ   r   r   r   r1   r1   R   s    D=r   r1   c                   $    e Zd ZdZeZddZddZy)TestUnixSSHRealmz$
    Tests for L{UnixSSHRealm}.
    Nc                    t               }d}|j                  d|       | j                  t        d|       t	        d      }t        t               |g      }t        dd      }|j                  |dt              }| j                  |      \  }}}	| j                  |t               t        |t              sJ | j                  |j                         |       y)	zt
        L{UnixSSHRealm} is an L{IRealm} whose C{.requestAvatar} method returns
        a L{UnixConchUser}.
        z/testing/home/valuer3   r4   r6   s   password)r3   s   userN)r   r:   r;   r<   r   r   r   r
   loginr   successResultOfassertIsInstancer   
isinstancer@   
getHomeDir)
r   rA   r5   pwdbpcredsresultresultInterfacerE   logouts
             r   test_unixSSHRealmz"TestUnixSSHRealm.test_unixSSHRealmq   s    
 $vD)

4'6KH<>D6*
 $4G[#Ij1*.*>*>v*F'fm4&-000**,d3r   c                     t        t               t               g      }|j                  t	        t                     dt              }| j                  |      }| j                  |j                  t               y)z?
        L{UnixSSHRealm} will refuse anonymous logins.
        N)r   r   r   rR   r   r   r   failureResultOfrT   valuer   )r   rX   rZ   loginDenieds       r   "test_unixSSHRefusesAnonymousLoginsz3TestUnixSSHRealm.test_unixSSHRefusesAnonymousLogins   sX     <>$8$:#;<IK0$
C**62k//=r   rK   )r,   r-   r.   r/   rM   rN   r]   rb   r   r   r   rP   rP   j   s     D4,>r   rP   )%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   r<   twisted.conch.unixr   r   r   rM   TestCaser1   rP   r   r   r   <module>rp      s    ' /  + & 7 / 0 " 4^,)*> _#
 #
 #
P  & | 
 	 =X%6%6 =0$>x(( $>r   