o
    >h.                     @   s  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ur`d dlmZmZ eeG dd dZ edu rqdnedu rwdndZ!G dd dej"Z#G dd dej"Z$dS )    )implementer)
IConchUser)AllowAnonymousAccess'InMemoryUsernamePasswordDatabaseDontUse)	Anonymous
IAnonymousIUsernamePasswordUsernamePassword)LoginDenied)Portal)IReactorProcess)UserDatabase)requireModule)unittest   )
StubClientStubConnectioncryptographyztwisted.conch.unixN)UnixConchUserUnixSSHRealmc                   @   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   |/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/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   zCannot run without cryptographyzUnix system requiredc                   @   s   e Zd ZeZdddZdS )TestSSHSessionForUnixConchUserreturnNc           
      C   s   t  }d}d}|j||d | td| t }t|}tt d|_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/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callr   r   r   testExecCommandEnvironmentU   s   z9TestSSHSessionForUnixConchUser.testExecCommandEnvironmentr,   N)r'   r(   r)   
shouldSkipskiprD   r   r   r   r   r+   R   s    r+   c                   @   s(   e Zd ZdZeZdddZdddZdS )	TestUnixSSHRealmz$
    Tests for L{UnixSSHRealm}.
    r,   Nc           
      C   s   t  }d}|jd|d | td| tdd}tt |g}tdd}||dt	}| 
|\}}}	| |t t|ts@J | | | dS )	zt
        L{UnixSSHRealm} is an L{IRealm} whose C{.requestAvatar} method returns
        a L{UnixConchUser}.
        z/testing/home/valuer-   r.   r0   s   password)r-   s   userN)r   r4   r5   r6   r   r   r   r	   loginr   successResultOfassertIsInstancer   
isinstancer:   
getHomeDir)
r   r;   r/   pwdbpcredsresultresultInterfacer?   logoutr   r   r   test_unixSSHRealmq   s   

z"TestUnixSSHRealm.test_unixSSHRealmc                 C   s@   t t t g}|tt dt}| |}| |j	t
 dS )z?
        L{UnixSSHRealm} will refuse anonymous logins.
        N)r   r   r   rI   r   r   r   failureResultOfrK   valuer
   )r   rO   rQ   loginDeniedr   r   r   "test_unixSSHRefusesAnonymousLogins   s   
z3TestUnixSSHRealm.test_unixSSHRefusesAnonymousLoginsrE   )r'   r(   r)   r*   rF   rG   rT   rX   r   r   r   r   rH   j   s
    
rH   )%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   r6   twisted.conch.unixr   r   r   rF   TestCaser+   rH   r   r   r   r   <module>   s2   (	