a
    “I_2  ã                   @   sp   d dl mZmZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZ dZG dd	„ d	eƒZdS )
é    )ÚTestCaseÚdelete_forceN)Úsystem_session)ÚCredentials)ÚUF_WORKSTATION_TRUST_ACCOUNTÚUF_PASSWD_NOTREQDÚUF_NORMAL_ACCOUNT)ÚSamDBZkrb5credstestc                       sH   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z‡  Z	S )ÚPyKrb5CredentialsTestsc                    sx   t t| ƒ ¡  tjd | _tjd | _tjd | _|  ¡ | _	|  
¡ | _tƒ | _td| j | j| j| j	d| _|  ¡  d S )NZSERVERZDOMAINZ	SERVER_IPz	ldap://%s)ZurlZsession_infoÚcredentialsÚlp)Úsuperr
   ÚsetUpÚosÚenvironZserverZdomainZhostÚget_loadparmr   Zget_credentialsr   r   Zsessionr	   ÚldbÚcreate_machine_account©Úself©Ú	__class__© ú>/usr/lib/python3/dist-packages/samba/tests/krb5_credentials.pyr   -   s    


ýzPyKrb5CredentialsTests.setUpc                    s    t t| ƒ ¡  t| j| jƒ d S ©N)r   r
   ÚtearDownr   r   Ú
machine_dnr   r   r   r   r   ?   s    zPyKrb5CredentialsTests.tearDownc                 C   s(   d}| j  | j|¡}|  | ¡ |¡ d S )NzMEMORY:py_creds_machine)Úmachine_credsÚget_named_ccacher   ÚassertEqualÚget_name)r   ÚnameÚccacher   r   r   Útest_get_named_ccacheC   s
    
ÿz,PyKrb5CredentialsTests.test_get_named_ccachec                 C   s    | j  | j¡}|  | ¡ ¡ d S r   )r   r   r   ZassertIsNotNoner    )r   r"   r   r   r   Útest_get_unnamed_ccacheI   s    z.PyKrb5CredentialsTests.test_get_unnamed_ccachec                 C   sF   | j  | j¡}tƒ }| | ¡ ¡ | | j¡}|  | ¡ | ¡ ¡ d S r   )r   r   r   r   Zset_named_ccacher    r   )r   r"   ZcredsZccache2r   r   r   Útest_set_named_ccacheM   s
    z,PyKrb5CredentialsTests.test_set_named_ccachec                 C   sÌ   t  dd¡| _t| _d| j| j ¡ f | _t| j| jƒ | j 	d¡ 
d¡}d |¡ 	d¡}| j | jdd| j tttB ƒ|dœ¡ tƒ | _| j |  ¡ ¡ | j | j¡ | j | jd	 ¡ | j | j¡ d S )
Né    zcn=%s,%szutf-8z"{0}"z	utf-16-leZcomputerz%s$)ZdnZobjectclassZsAMAccountNameZuserAccountControlZ
unicodePwdú$)ÚsambaZgenerate_random_passwordZmachine_passÚMACHINE_NAMEZmachine_namer   Z	domain_dnr   r   ÚencodeÚdecodeÚformatÚaddÚstrr   r   r   r   Zguessr   Zset_passwordZset_usernameZset_workstation)r   Zpass_unicodeZutf16pwr   r   r   r   X   s$    
úz-PyKrb5CredentialsTests.create_machine_account)
Ú__name__Ú
__module__Ú__qualname__r   r   r#   r$   r%   r   Ú__classcell__r   r   r   r   r
   +   s   r
   )Zsamba.testsr   r   r   r(   Z
samba.authr   Zsamba.credentialsr   Z
samba.dsdbr   r   r   Zsamba.samdbr	   r)   r
   r   r   r   r   Ú<module>   s   
