a
    ¡ÖaZ  ã                   @   sŒ   d 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
 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 )zTests for samba ntacls backupé    N)Úlibsmb_samba_internal)Úsmbd)Úsamdb)Úntacls)Úsystem_session)Úsystem_session_unix)Úsecurity)Úenv_loadparm)ÚSmbdBaseTestsc                       sl   e Zd 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‡  ZS )ÚNtaclsBackupRestoreTestsz.
    Tests for NTACLs backup and restore.
    c                    s6  t t| ƒ ¡  tjd | _d| j }d| _tj tjd | j¡| _	tjd | _
| j|  ¡ d| _tj|tƒ | jtƒ d| _t | j ¡ ¡| _t | j| j
| j¡| _| jj| _tj| j| j| j| jd| _t | j| j¡| _tj | jd	¡| _ d
di dœdœ| _!|  "¡  | j #¡  | j $| j!¡ |  %¡  | j &¡ | _'d S )NZSERVERzldap://Ztest1Z
LOCAL_PATHZSMB_CONF_PATH)Útemplate)ZurlZsession_infoZcredentialsÚlp)r   Úcredszntacls-backup.tar.gzs
   test file0s
   test file1)z	file1.txtZdir2)ú	file0.txtZdir1)(Úsuperr   ÚsetUpÚosÚenvironZserverÚserviceÚpathÚjoinÚservice_rootÚsmb_conf_pathZinsta_credsZget_credentialsr   r   ZSamDBr   r	   Ú
samdb_connr   Údom_sidZget_domain_sidr   ZNtaclsHelperÚntacls_helperr   ÚlibsmbZConnÚsmb_connZ	SMBHelperÚ
smb_helperZtempdirÚtarfile_pathÚtreeÚ_delete_tarfileÚdelete_treeZcreate_treeÚ_check_treeÚ
get_ntaclsÚoriginal_ntacls)ÚselfZ	samdb_url©Ú	__class__© ú;/usr/lib/python3/dist-packages/samba/tests/ntacls_backup.pyr   '   sH    
ÿþþ
ÿ
ÿþþ
zNtaclsBackupRestoreTests.setUpc                    s$   |   ¡  | j ¡  tt| ƒ ¡  d S ©N)r!   r   r"   r   r   ÚtearDown©r&   r'   r)   r*   r,   Z   s    
z!NtaclsBackupRestoreTests.tearDownc                 C   s(   zt  | j¡ W n ty"   Y n0 d S r+   )r   Úremover   ÚOSErrorr-   r)   r)   r*   r!   _   s    z(NtaclsBackupRestoreTests._delete_tarfilec                 C   s   |   tj | j¡¡ d S r+   )Ú
assertTruer   r   Úisfiler   r-   r)   r)   r*   Ú_check_tarfilee   s    z'NtaclsBackupRestoreTests._check_tarfilec                 C   s   | j  ¡ }|  | j|¡ d S r+   )r   Zget_treeÚassertDictEqualr    )r&   Zactual_treer)   r)   r*   r#   h   s    
z$NtaclsBackupRestoreTests._check_treec                 C   sT   t j | jd¡}t |tƒ | j¡ t  |¡j	}|  
|d@ d¡ |  t j |¡¡ dS )z1
        A smoke test for smbd.mkdir API
        za-diréÿ  ií  N)r   r   r   r   r   Úmkdirr   r   ÚstatÚst_modeÚassertEqualr0   Úisdir)r&   ÚdirpathÚmoder)   r)   r*   Útest_smbd_mkdirl   s
    z(NtaclsBackupRestoreTests.test_smbd_mkdirc                 C   sx   t j | jd¡}t |tƒ | j¡ |  t j 	|¡¡ t  
|¡j}|  |d@ d¡ t |tƒ | j¡ |  t j 	|¡¡ dS )zG
        A smoke test for smbd.create_file and smbd.unlink API
        za-filer4   i¤  N)r   r   r   r   r   Zcreate_filer   r   r0   r1   r6   r7   r8   ÚunlinkZassertFalse)r&   Úfilepathr;   r)   r)   r*   Útest_smbd_create_file{   s    z.NtaclsBackupRestoreTests.test_smbd_create_filec                 C   sl   d}t j | j|¡}| jj|dd}| jj|tƒ ddd}| jj|tƒ ddd}|  	||¡ |  	||¡ dS )zC
        Ntacls get from different ways should be the same
        r   T)Úas_sddlF)r@   Zdirect_db_accessN)
r   r   r   r   r   Zget_aclr   Zgetntaclr   r8   )r&   Ú	file_nameZ	file_pathZsd0Zsd1Zsd2r)   r)   r*   Útest_compare_getntacl   s    
ÿ
ÿz.NtaclsBackupRestoreTests.test_compare_getntaclc                 C   s^   t  | j| j| j¡ |  ¡  | j ¡  t  | j| j	| j
| j¡ |  ¡  |  | j| j ¡ ¡ dS )zI
        Backup service online, delete files, restore and check.
        N)r   Zbackup_onliner   r   r   r2   r   r"   Úbackup_restorer   r   r   r#   r3   r%   r$   r-   r)   r)   r*   Útest_backup_online£   s    ÿ
þÿz+NtaclsBackupRestoreTests.test_backup_onlinec                 C   sb   t  | j| j| j| j¡ |  ¡  | j ¡  t  	| j| j| j| j¡ |  
¡  |  | j| j ¡ ¡ dS )zJ
        Backup service offline, delete files, restore and check.
        N)r   Zbackup_offliner   r   r   r   r2   r   r"   rC   r#   r3   r%   r$   r-   r)   r)   r*   Útest_backup_offlineµ   s    þ
þÿz,NtaclsBackupRestoreTests.test_backup_offline)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r,   r!   r2   r#   r<   r?   rB   rD   rE   Ú__classcell__r)   r)   r'   r*   r   "   s   3r   )rI   r   Zsamba.samba3r   r   r   Zsambar   r   Z
samba.authr   Zsamba.auth_utilr   Zsamba.dcerpcr   Zsamba.testsr	   Zsamba.tests.smbd_baser
   r   r)   r)   r)   r*   Ú<module>   s   