a
    WaO4                     @   sD   d dl Z d dlmZmZ d dlmZ d dlmZ G dd deZdS )    N)PopenPIPE)NTLMAuthTestCase)
get_stringc                       s   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Z  ZS )NTLMAuthHelpersTestsc                    s|   t t|   tjd | _tjd | _tjd | _t| 	d| j }|
dd | _| | jd | jd d | _d S )	NZDC_USERNAMEZDC_PASSWORDZDOMAINzwbinfo -n %s r   z	S-1-5-21-)superr   setUposenvironusernamepassworddomainr   Zcheck_outputsplit	group_sid
assertTrue
startswithbad_group_sid)selfout	__class__ 7/usr/lib/python3/dist-packages/samba/tests/ntlm_auth.pyr
      s    zNTLMAuthHelpersTests.setUpc              	   C   s`   d}d}d}| j ||||||dd}| | d}d}d}| j ||||||dd}| | dS )z! ntlm_auth with specified domain foosecretZFOOF)client_usernameclient_passwordclient_domainserver_usernameserver_passwordserver_domainserver_use_winbindfOoN
run_helperr   r   r   r   r   retr   r   r   test_specified_domain$   s0    
z*NTLMAuthHelpersTests.test_specified_domainc                 C   s&   | j | j| j| jdd}| | dS )z ntlm_auth against winbindd T)r   r   r   r#   Nr&   r   r   r   r   r   r(   r   r   r   test_against_winbindA   s    z)NTLMAuthHelpersTests.test_against_winbindc                 C   s6   d}d}d}| j ||||||dddd	}| | dS )	z5 ntlm_auth with NTLMSSP client and gss-spnego server r   r   r$   ntlmssp-client-1
gss-spnegoF	r   r   r   r    r!   r"   client_helperserver_helperr#   Nr%   r'   r   r   r   test_ntlmssp_gss_spnegoJ   s    	z,NTLMAuthHelpersTests.test_ntlmssp_gss_spnegoc                 C   s6   d}d}d}| j ||||||dddd	}| | dS )	z@ ntlm_auth with NTLMSSP gss-spnego-client and gss-spnego server r   r   r$   gss-spnego-clientr.   Fr/   Nr%   r'   r   r   r   test_gss_spnego\   s    	z$NTLMAuthHelpersTests.test_gss_spnegoc                 C   s*   | j | j| j| jdddd}| | dS )zX ntlm_auth with NTLMSSP gss-spnego-client and gss-spnego server
        against winbind r3   r.   T)r   r   r   r0   r1   r#   Nr*   r+   r   r   r   test_gss_spnego_winbindn   s    z,NTLMAuthHelpersTests.test_gss_spnego_winbindc              	   C   sX   d| j | j| j| jf }d|g}| |d | j| j| j| j ddddd}| | dS )	ze ntlm_auth with NTLMSSP client and gss-spnego server against
        winbind with cached credentials z--ccache-save=%s%s%s%%%sZwbinfor   Tr-   r.   )r   r   r   Zclient_use_cached_credsr0   r1   r#   N)r   winbind_separatorr   r   check_exit_coder&   r   )r   ZparamZ	cache_cmdr(   r   r   r   $test_ntlmssp_gss_spnego_cached_credsz   s$    z9NTLMAuthHelpersTests.test_ntlmssp_gss_spnego_cached_credsc                 C   sP   | j | j| j| j| jdd}| | | j | j| j| j| jdd}| | dS )z7 ntlm_auth against winbindd with require-membership-of T)r   r   r   require_membershipr#   Nr&   r   r   r   r   r   r   ZassertFalser+   r   r   r   test_require_membership   s    
z,NTLMAuthHelpersTests.test_require_membershipc              	   C   sX   | j | j| j| j| jdddd}| | | j | j| j| j| jdddd}| | dS )zs ntlm_auth with NTLMSSP gss-spnego-client and gss-spnego server
        against winbind with require-membership-of r3   r.   T)r   r   r   r9   r0   r1   r#   Nr:   r+   r   r   r   "test_require_membership_gss_spnego   s$    
z7NTLMAuthHelpersTests.test_require_membership_gss_spnegoc                 C   s   t | jd| jddgtttd}d| j| j| j| jf }|j|	dd\}}| 
|jd | |d	 t | jd| jddgtttd}d| j| j| j| jf }|j|	dd\}}| 
|jd | |d
 dS )z? ntlm_auth plaintext authentication with require-membership-of --require-membership-of--helper-protocolzsquid-2.5-basicstdoutstdinstderrz
%s%s%s %s
utf-8inputr   s   OK
s   ERR
N)r   ntlm_auth_pathr   r   r   r6   r   r   communicateencodeassertEqual
returncoder   r   r   )r   procZcredsr   errr   r   r   test_plaintext_with_membership   s6    
z3NTLMAuthHelpersTests.test_plaintext_with_membershipc                 C   s,  g d}t | jddddgtttd}d|}|j|dd	\}}| |jd
 |d}| t	|d | |d
 d | |d d | |d d | |d d d|d
< t | jddddgtttd}d|}|j|dd	\}}| |jd
 |d}| t	|d | |d
 d dS )z- ntlm_auth ntlm-server-1 with fixed password )"LANMAN-Challenge: 0123456789abcdef=NT-Response: 25a98c1c31e81847466b29b2df4680f39958fb8c213a9cc6zNT-Domain: TESTzUsername: testuserRequest-User-Session-Key: Yes.

--passwordZSecREt01r>   ntlm-server-1r?   
rC   rD   r      
      Authenticated: Yes   s2   User-Session-Key: 3F373EA8E4AF954F14FAA506F8EEBDC4      .       z"LANMAN-Challenge: A123456789abcdef      Authenticated: NoN)
r   rF   r   joinrG   rH   rI   rJ   r   lenr   Z	ntlm_cmdsrK   Zbufr   rL   linesr   r   r   &test_ntlm_server_1_with_fixed_password   s>    



z;NTLMAuthHelpersTests.test_ntlm_server_1_with_fixed_passwordc                 C   sP  d| j  d| j d| j ddg}t| jd| jddgtttd	}d
|}|j|	dd\}}| 
|jd |d}| 
t|d | 
|d d | 
|d d | 
|d d t| jd| jddgtttd	}d
|}|j|	dd\}}| 
|jd |d}| 
t|d | 
|d d | 
|d d | 
|d d dS )zA ntlm_auth ntlm-server-1 with plaintext password against winbind zPassword: %sNT-Domain: %sUsername: %srP   rQ   r=   r>   rS   r?   rT   rC   rD   r   rU   r[   rW   rX   rZ   rY   r\   r^   N)r   r   r   r   rF   r   r   r_   rG   rH   rI   rJ   r   r`   r   ra   r   r   r   )test_ntlm_server_1_with_plaintext_winbind   sD    



z>NTLMAuthHelpersTests.test_ntlm_server_1_with_plaintext_winbindc                 C   s   ddd| j  d| j ddg}t| jddgtttd	}d
|}|j|dd\}}| |j	d |
d}| t|d | |d d dS )zO ntlm_auth ntlm-server-1 with incorrect fixed password against
        winbind rN   rO   rd   re   rP   rQ   r>   rS   r?   rT   rC   rD   r   rU   r]   r^   N)r   r   r   rF   r   r_   rG   rH   rI   rJ   r   r`   ra   r   r   r   2test_ntlm_server_1_with_incorrect_password_winbind&  s$    

zGNTLMAuthHelpersTests.test_ntlm_server_1_with_incorrect_password_winbindc                 C   s,   | j d| jd| jd| jdg}| |d dS )z ntlm_auth diagnostics z
--usernamerR   z--domainz--diagnosticsr   N)rF   r   r   r   r7   )r   Zcmd_liner   r   r   test_diagnostics>  s    z%NTLMAuthHelpersTests.test_diagnostics)__name__
__module____qualname__r
   r)   r,   r2   r4   r5   r8   r;   r<   rM   rc   rf   rg   rh   __classcell__r   r   r   r   r      s   
	+*r   )	r   
subprocessr   r   Zsamba.tests.ntlm_auth_baser   Zsamba.compatr   r   r   r   r   r   <module>   s   