a
    “I_Ã  ã                   @   sh   d dl Z d dlZd dl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 G dd„ deƒZdS )	é    N)ÚSamDB)Údelete_force)ÚSambaToolCmdTest)ÚCredentials)Úsystem_sessionc                       sp   e Zd Z‡ fd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‡  ZS )ÚRodcCmdTestCasec                    s
  t t| ƒ ¡  tj ¡ | _| j tj	d ¡ t
ƒ | _| j tj	d ¡ | j tj	d ¡ | j | j¡ tƒ | _tdtj	d  | j| j| jd| _| j ¡ | _| j dd¡ | j d	d
¡ | j dd¡ | j dd¡ | j dd¡ | j dd¡ | jjdg d¢dd d S )NZSMB_CONF_PATHZDC_USERNAMEZDC_PASSWORDzldap://Ú	DC_SERVER)Zsession_infoZcredentialsÚlpÚ
sambatool1z1qazXSW@Ú
sambatool2z2wsxCDE#Ú
sambatool3z3edcVFR$Ú
sambatool4z4rfvBGT%Ú
sambatool5z5tjbNHY*Ú
sambatool6z6yknMJU*z'Allowed RODC Password Replication Group)r
   r   r   r   r   T)Zadd_members_operation)Úsuperr   ÚsetUpÚsambaZparamZLoadParmr	   ÚloadÚosÚenvironr   ZcredsZset_usernameZset_passwordZguessr   Zsessionr   ÚldbZ	domain_dnÚbase_dnZnewuserZadd_remove_group_members)Úself©Ú	__class__© ú=/usr/lib/python3/dist-packages/samba/tests/samba_tool/rodc.pyr      s,    ÿýzRodcCmdTestCase.setUpc                    s|   t t| ƒ ¡  | j d¡ | j d¡ | j d¡ | j d¡ | j d¡ | j d¡ |  ddd	d
tjd | j¡\}}}d S )Nr
   r   r   r   r   r   ZdrsZ	replicatez--localZunusedr   )	r   r   ÚtearDownr   Z
deleteuserÚ	runsubcmdr   r   r   ©r   ÚresultÚoutÚerrr   r   r   r   7   s    ÿzRodcCmdTestCase.tearDownc                 C   sP   |   ddddtjd ¡\}}}|  |||d¡ |  |d| j ¡ |  |d¡ d S )	NÚrodcÚpreloadr
   ú--serverr   ú'ensuring rodc prefetch ran successfullyz)Replicating DN CN=sambatool1,CN=Users,%s
Ú ©r   r   r   ÚassertCmdSuccessÚassertEqualr   r   r   r   r   Útest_single_by_account_nameB   s    

ÿ
z+RodcCmdTestCase.test_single_by_account_namec                 C   sJ   |   ddd| j dtjd ¡\}}}|  |||d¡ |  |d| j ¡ d S )Nr#   r$   zcn=sambatool2,cn=users,%sr%   r   r&   z)Replicating DN CN=sambatool2,CN=Users,%s
©r   r   r   r   r)   r*   r   r   r   r   Útest_single_by_dnI   s
    
ÿ
z!RodcCmdTestCase.test_single_by_dnc              	   C   sL   |   dddddtjd ¡\}}}|  |||d¡ |  |d| j| jf ¡ d S )	Nr#   r$   r
   r   r%   r   r&   úRReplicating DN CN=sambatool1,CN=Users,%s
Replicating DN CN=sambatool2,CN=Users,%s
r(   r   r   r   r   Útest_multi_by_account_nameO   s
    
ÿ
z*RodcCmdTestCase.test_multi_by_account_namec              	   C   sX   |   ddd| j d| j dtjd ¡\}}}|  |||d¡ |  |d| j| jf ¡ d S )	Nr#   r$   zcn=sambatool3,cn=users,%szcn=sambatool4,cn=users,%sr%   r   r&   zRReplicating DN CN=sambatool3,CN=Users,%s
Replicating DN CN=sambatool4,CN=Users,%s
r,   r   r   r   r   Útest_multi_by_dnU   s
    
ÿ
z RodcCmdTestCase.test_multi_by_dnc              	   C   sv   t j | jd¡}t|dƒ d¡ |  ddd|dt jd ¡\}}}|  |||d	¡ |  	|d
| j
| j
f ¡ t  |¡ d S )NZaccountlistÚwzsambatool1
sambatool2r#   r$   z--filer%   r   r&   r.   )r   ÚpathÚjoinZtempdirÚopenÚwriter   r   r)   r*   r   Úunlink)r   Ztempfr    r!   r"   r   r   r   Útest_multi_in_file[   s    
ÿ
z"RodcCmdTestCase.test_multi_in_filec              
   C   sN   |   ddddddtjd d¡\}}}|  |||d	¡ |  | d
| j ¡¡ d S )Nr#   r$   Únonexistentuser1r   Únonexistentuser2r%   r   ú--ignore-errorsr&   z)Replicating DN CN=sambatool5,CN=Users,%s
©r   r   r   r)   Z
assertTrueÚ
startswithr   r   r   r   r   Ú$test_multi_with_missing_name_successd   s    
ü

ÿz4RodcCmdTestCase.test_multi_with_missing_name_successc              
   C   s2   |   ddddddtjd ¡\}}}|  |d¡ d S )	Nr#   r$   r8   r   r9   r%   r   z+ensuring rodc prefetch quit on missing user©r   r   r   ZassertCmdFailr   r   r   r   Ú$test_multi_with_missing_name_failuren   s    
ý
z4RodcCmdTestCase.test_multi_with_missing_name_failurec              	   C   sR   |   dddddtjd d¡\}}}|  |||d¡ |  | d	| j| jf ¡¡ d S )
Nr#   r$   r   r   r%   r   r:   r&   zRReplicating DN CN=sambatool6,CN=Users,%s
Replicating DN CN=sambatool5,CN=Users,%s
r;   r   r   r   r   Ú test_multi_without_group_successu   s    
ý


þz0RodcCmdTestCase.test_multi_without_group_successc              	   C   s0   |   dddddtjd ¡\}}}|  |d¡ d S )Nr#   r$   r   r   r%   r   z2ensuring rodc prefetch quit on non-replicated userr>   r   r   r   r   Ú test_multi_without_group_failure   s
    
þ
z0RodcCmdTestCase.test_multi_without_group_failure)Ú__name__Ú
__module__Ú__qualname__r   r   r+   r-   r/   r0   r7   r=   r?   r@   rA   Ú__classcell__r   r   r   r   r      s   	

r   )r   r   r   Zsamba.samdbr   Zsamba.testsr   Zsamba.tests.samba_tool.baser   Zsamba.credentialsr   Z
samba.authr   r   r   r   r   r   Ú<module>   s   