a
    )(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   ;lib/python3.9/site-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)Z	transport)Ztest_sessionr    r!   _homeDirectoryZconn)r   homeDirectoryr    r!   r   r   r   r   =   s    zStubUnixConchUser.__init__c                 C   s   dS )N)NNr   r
   r   r   r   getUserGroupIdC   s    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   s    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/)ZreactorNznot-actually-executedr   HOME)r   r   unixZSSHSessionForUnixConchUserZexecCommandr	   ZassertEqual)r   ZmockReactorr#   ZavatarZsessionZprotocolZcommandZcallr   r   r   testExecCommandEnvironmentT   s    z9TestSSHSessionForUnixConchUser.testExecCommandEnvironment)r   r   r   r   skipr)   r*   r   r   r   r   r'   M   s
   r'   N)Zzope.interfacer   Ztwisted.internet.interfacesr   Ztwisted.python.reflectr   Ztwisted.trialr   r   r)   r   r   ZTestCaser'   r   r   r   r   <module>   s   &