a
    “I_"  ã                   @   s<   d Z ddlZddlZddlZddlmZ G dd„ deƒZdS )zˆTest ntlm_auth
This test program will start ntlm_auth with the given command line switches and
see if it will get the expected results.
é    N)ÚBlackboxTestCasec                       s6   e Zd Z‡ fdd„Zdd„ Zdd„ Zddd„Z‡  ZS )ÚNTLMAuthTestCasec                    sP   t t| ƒ ¡  tj t dd¡¡}tj |d¡| _t	j
 ¡ | _| j d¡| _d S )NZBINDIRz./binZ	ntlm_authzwinbind separator)Úsuperr   ÚsetUpÚosÚpathÚnormpathÚgetenvÚjoinÚntlm_auth_pathÚsambaZtestsZenv_loadparmÚlpÚgetZwinbind_separator)ÚselfZbindir©Ú	__class__© ú</usr/lib/python3/dist-packages/samba/tests/ntlm_auth_base.pyr      s
    zNTLMAuthTestCase.setUpc                 C   s.   |  ¡ }| d¡}|dkr"tdƒ‚|d |… S )NÚ
éÿÿÿÿzFailed to read line)ÚreadlineÚfindÚ	Exception)r   Útext_streamÚbufÚnewliner   r   r   ÚreadLine&   s
    
zNTLMAuthTestCase.readLinec                 C   s   |  |¡ |  d¡ d S )Nr   )Úwrite)r   r   r   r   r   r   Ú	writeLine-   s    
zNTLMAuthTestCase.writeLineNFúntlmssp-client-1úsquid-2.5-ntlmsspc                 C   sz  |   t | jtj¡¡ |d u r&tdƒ‚g }| | j¡ | d| ¡ | d| ¡ |rd| d| ¡ |rt| d¡ n|d u r„tdƒ‚| d| ¡ |r¤| d| ¡ |r¶| d	| ¡ | d
| jj ¡ g }| | j¡ | d|	 ¡ | d
| jj ¡ |
sb|d u s|d u s|d u r$tdƒ‚| d| ¡ | d| ¡ | d| ¡ |d urztdƒ‚n|d urz| d| ¡ d}t	j
|t	jt	jddd}t	j
|t	jt	jddd}z–|dkrz|	dkrz|  |jd¡ |  |j¡}|   | d¡¡ |  |j|¡ |  |j¡}|   | d¡¡ |  |j|¡ |  |j¡}|   | d¡¡ | ddd¡}|  |j|¡ |  |j¡}| d¡}n¸|dkr@|	dkr@|  |jd¡ |  |j¡}|   | d¡¡ |  |j|¡ |  |j¡}|   | d¡¡ |  |j|¡ |  |j¡}|   | d¡¡ | ddd¡}|  |j|¡ |  |j¡}| d¡}nò|dkr(|	dkr(|  |jd¡ |  |j¡}| d¡r‚d}q2|   | d¡pš| d¡¡ |  |j|¡ |  |j¡}| d¡rÌd}q2|   | d¡pð| d¡pð| d¡¡ |  |j|¡ |  |j¡}| d¡rnd}q2qnn
|  d ¡ |du rš|dkrš|  |jd!¡ |  |j¡}|   | d"¡¡ |  |jd#¡ |  |j¡}|   | d$¡¡ |du r|	dkr|  |jd!¡ |  |j¡}|   | d"¡¡ |  |jd#¡ |  |j¡}|   | d$¡¡ |j ¡  | ¡  |  |jd¡ |j ¡  | ¡  |  |jd¡ |W S    | ¡  | ¡  | ¡  | ¡  ‚ Y n0 d S )%Nzclient_username requiredz--helper-protocol=%sz--username=%sz--domain=%sz--use-cached-credszclient_password requiredz--password=%sz--target-service=%sz--target-hostname=%sz--configfile=%sz0Server credentials required if not using winbindz6Server must be using winbind for require-membership-ofz--require-membership-of=%sFr   T)ÚstdoutÚstdinÚbufsizeZuniversal_newlinesr   r    ZYRzYR zTT zAF ZAFZKKé   z
gss-spnegozAF * zgss-spnego-clientzNA * zKK zHelper protocols not handledZGKzGK ZGFzGF )Z
assertTruer   Úaccessr   ÚX_OKr   Úappendr   Z
configfileÚ
subprocessÚPopenÚPIPEr   r"   r   r!   Ú
startswithÚreplaceZfailÚcloseÚwaitZassertEqualÚ
returncodeÚkill)r   Zclient_usernameZclient_passwordZclient_domainZclient_use_cached_credsZserver_usernameZserver_passwordZserver_domainZclient_helperZserver_helperZserver_use_winbindZrequire_membershipZtarget_hostnameZtarget_serviceZclient_argsZserver_argsÚresultZserver_procZclient_procr   r   r   r   Ú
run_helper1   sÞ    


(



zNTLMAuthTestCase.run_helper)NNNFNNNr   r    FNNN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r2   Ú__classcell__r   r   r   r   r      s"                ór   )Ú__doc__r   r   r(   Zsamba.testsr   r   r   r   r   r   Ú<module>   s
   