U
    
W[	                     @   s   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	 edZ
edZeeG dd	 d	eZG d
d deZG dd de	jZdS )    )absolute_import)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   )StubConnection
StubClient)Z	transport)Ztest_sessionr!   r"   _homeDirectoryZconn)r   homeDirectoryr!   r"   r   r   r   r   4   s    zStubUnixConchUser.__init__c                 C   s   dS )N)NNr   r   r   r   r   getUserGroupId;   s    z StubUnixConchUser.getUserGroupIdc                 C   s   | j S r	   )r#   r   r   r   r   
getHomeDir?   s    zStubUnixConchUser.getHomeDirc                 C   s   d S r	   r   r   r   r   r   getShellC   s    zStubUnixConchUser.getShellN)r   r   r   r   r   r%   r&   r'   r   r   r   r   r   .   s
   r   c                   @   s.   e Zd ZedkrdZnedk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commandcallr   r   r   testExecCommandEnvironmentP   s    z9TestSSHSessionForUnixConchUser.testExecCommandEnvironment)r   r   r   r   skipr*   r,   r   r   r   r   r(   H   s
   r(   N)Z
__future__r   Zzope.interfacer   Ztwisted.internet.interfacesr   Ztwisted.python.reflectr   Ztwisted.trialr   r   r*   objectr   r   ZTestCaser(   r   r   r   r   <module>   s   