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   &