
    Vh                         d 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 dd	lmZ  ed
      ZerddlmZmZ  G d de      Zy)z)
Tests for L{twisted.conch.manhole_tap}.
    )StreamServerEndpointService)MultiService)telnet)error)UsernamePassword)usage)requireModule)TestCasecryptography)manhole_sshmanhole_tapc                   D    e Zd ZdZesdZdZd
dZd
dZd
dZ	d
dZ
d
d	Zy)MakeServiceTestsz/
    Tests for L{manhole_tap.makeService}.
    zcan't run without cryptography)s   iamusers   thisispasswordNc                 
   | j                         | _        t        | j                  d      5 }|j                  dj	                  | j
                               ddd       t        j                         | _        y# 1 sw Y   #xY w)z8
        Create a passwd-like file with a user.
        wb   :N)	mktempfilenameopenwritejoinusernamePasswordr   Optionsoptions)selffs     S/home/dcms/DCMS/lib/python3.12/site-packages/twisted/conch/test/test_manhole_tap.pysetUpzMakeServiceTests.setUp!   sa     $--& 	6!GGDIId3345	6"**,	6 	6s   +A99Bc                    | j                  t        j                        5 }t        j                         j                  g        ddd       | j                  j                  j                  d   d       y# 1 sw Y   3xY w)zk
        L{manhole_tap.makeService} requires either 'telnetPort' or 'sshPort' to
        be given.
        Nr   z<At least one of --telnetPort and --sshPort must be specified)	assertRaisesr   
UsageErrorr   r   parseOptionsassertEqual	exceptionargs)r   es     r   test_requiresPortz"MakeServiceTests.test_requiresPort*   sk    
 u//0 	3A!..r2	3 	KKQN	
	3 	3s   $A66A?c                     | j                   j                  ddg       t        j                  | j                         }| j	                  |t
               | j                  t        |j                        d       | j	                  |j                  d   t               | j	                  |j                  d   j                  j                  t        j                         | j                  |j                  d   j                  j                  d       y)z
        L{manhole_tap.makeService} will make a telnet service on the port
        defined by C{--telnetPort}. It will not make a SSH service.
        --telnetPortztcp:222   r      N)r   r"   r   makeServiceassertIsInstancer   r#   lenservicesr   factoryprotocolmakeTelnetProtocolendpoint_portr   services     r   test_telnetPortz MakeServiceTests.test_telnetPort7   s    
 	!!>9"=>))$,,7g|4W--.2g..q13NOQ''00+2P2P	
 	))!,55;;SA    c                 0   | j                   j                  d| j                         ddddg       t        j                  | j                         }| j                  |t               | j                  t        |j                        d       | j                  |j                  d   t               | j                  |j                  d   j                  t        j                         | j                  |j                  d   j                  j                  d       y	)
z
        L{manhole_tap.makeService} will make a SSH service on the port
        defined by C{--sshPort}. It will not make a telnet service.
        z--sshKeyDirz--sshKeySize1024z	--sshPortztcp:223r*   r      N)r   r"   r   r   r,   r-   r   r#   r.   r/   r   r0   r   ConchFactoryr3   r4   r5   s     r   test_sshPortzMakeServiceTests.test_sshPortF   s     	!!		
 ))$,,7g|4W--.2g..q13NOg..q199;;S;ST))!,55;;SAr8   c           
         | j                   j                  ddd| j                  g       t        j                  | j                         }|j
                  d   j                  j                  j                  }| j                  t        |j                  j                               d       | j                  | j                  |j                  t!        | j"                   dt$        j&                                     | j)                  | j+                  |j                  t!        dd      dt$        j&                              j,                  t.        j0                         y)	zS
        The C{--passwd} command-line option will load a passwd-like file.
        r)   ztcp:22z--passwdr      Ns   wrongs   user)r   r"   r   r   r,   r/   r0   r1   portalr#   r.   checkerskeys
assertTruesuccessResultOfloginr   r   r   ITelnetProtocolr-   failureResultOfvaluer   UnauthorizedLogin)r   r6   r@   s      r   test_passwdzMakeServiceTests.test_passwd_   s    	!!>8Z"WX))$,,7!!!$,,55<<V__1134a8 	  $d&;&;<**	
 	  $Xw7v?U?U e##	
r8   )returnN)__name__
__module____qualname____doc__r   skipr   r   r'   r7   r=   rJ    r8   r   r   r      s2     /6-
BB2
r8   r   N)rO   twisted.application.internetr   twisted.application.servicer   twisted.conchr   twisted.credr   twisted.cred.credentialsr   twisted.pythonr   twisted.python.reflectr	   twisted.trial.unittestr
   r   r   r   r   rQ   r8   r   <module>rZ      sC    E 4    5   0 +^,6c
x c
r8   