o
    b(
                     @   sz   d dl mZ d dlmZ d dlmZ d dlmZ edZedZ	eeG dd dZ
G d	d
 d
ZG dd dejZdS )    )implementer)IReactorProcess)requireModule)unittestcryptographyztwisted.conch.unixc                   @   s0   e Zd ZdZdd Zdi dddddfddZdS )	MockProcessSpawnerzC
    An L{IReactorProcess} that logs calls to C{spawnProcess}.
    c                 C   s
   g | _ d S N)_spawnProcessCallsself r   >/usr/lib/python3/dist-packages/twisted/conch/test/test_unix.py__init__   s   
zMockProcessSpawner.__init__r   Nr   c
           
      C   s$   | j |||||||||	d	 dS )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   r   r   r   spawnProcess   s   zMockProcessSpawner.spawnProcess)__name__
__module____qualname____doc__r   r   r   r   r   r   r      s    r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )StubUnixConchUserz`
    Enough of UnixConchUser to exercise SSHSessionForUnixConchUser in the
    tests below.
    c                 C   s(   ddl m}m} || _|| d| _d S )N   )
StubClientStubConnection)	transport)test_sessionr    r!   _homeDirectoryconn)r   homeDirectoryr    r!   r   r   r   r   =   s   zStubUnixConchUser.__init__c                 C   s   dS )N)NNr   r
   r   r   r   getUserGroupIdC      z StubUnixConchUser.getUserGroupIdc                 C   s   | j S r   )r$   r
   r   r   r   
getHomeDirF   s   zStubUnixConchUser.getHomeDirc                 C   s   d S r   r   r
   r   r   r   getShellI   r(   zStubUnixConchUser.getShellN)r   r   r   r   r   r'   r)   r*   r   r   r   r   r   7   s    r   c                   @   s.   e Zd Zedu rdZnedu rdZdd ZdS )TestSSHSessionForUnixConchUserNzCannot run without cryptographyzUnix system requiredc                 C   sV   t  }d}t|}tj||d}d}dg}||| |j\}| ||d d  dS )zn
        C{execCommand} sets the C{HOME} environment variable to the avatar's home
        directory.
        z/made/up/path/)reactorNznot-actually-executedr   HOME)r   r   unixSSHSessionForUnixConchUserexecCommandr	   assertEqual)r   mockReactorr&   avatarsessionprotocolcommandcallr   r   r   testExecCommandEnvironmentT   s   z9TestSSHSessionForUnixConchUser.testExecCommandEnvironment)r   r   r   r   skipr.   r8   r   r   r   r   r+   M   s    r+   N)zope.interfacer   twisted.internet.interfacesr   twisted.python.reflectr   twisted.trialr   r   r.   r   r   TestCaser+   r   r   r   r   <module>   s   &