
    bW                         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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                   \     e Zd ZdZ fdZ fdZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z xZS )NtaclsBackupRestoreTestsz.
    Tests for NTACLs backup and restore.
    c                     t          t          |                                            t          j        d         | _        d| j        z   }d| _        t          j                            t          j        d         | j                  | _	        t          j        d         | _
        |                     |                                           | _        t          j        |t!                      | j        t#                                | _        t'          j        | j                                                  | _        t-          j        | j        | j
        | j                  | _        | j        j        | _        t5          j        | j        | j        | j        | j                  | _        t-          j        | j        | j                  | _        t          j                            | j        d	          | _         d
di dd| _!        | "                                 | j        #                                 | j        $                    | j!                   | %                                 | j        &                                | _'        d S )NSERVERzldap://test1
LOCAL_PATHSMB_CONF_PATH)template)urlsession_infocredentialslp)r   credszntacls-backup.tar.gzs
   test file0s
   test file1)z	file1.txtdir2)	file0.txtdir1)(superr   setUposenvironserverservicepathjoinservice_rootsmb_conf_pathinsta_credsget_credentialsr   r   SamDBr   r
   
samdb_connr	   dom_sidget_domain_sidr   NtaclsHelperntacls_helperr   libsmbConnsmb_conn	SMBHelper
smb_helpertempdirtarfile_pathtree_delete_tarfiledelete_treecreate_tree_check_tree
get_ntaclsoriginal_ntacls)self	samdb_url	__class__s     ;/usr/lib/python3/dist-packages/samba/tests/ntacls_backup.pyr   zNtaclsBackupRestoreTests.setUp'   s   &--33555j*+	GLLJ|$dl4 4  Z8%%t/C/C/E/E%FF
+(8(8
|~~7 7 7  '(F(F(H(HII $0151C15? ? $'K$'E E E !*4=$,GGGLL)?A A
 '* 
 
	 	##%%%##DI...#99;;    c                     |                                   | j                                         t          t          |                                            d S N)r6   r2   r7   r   r   tearDown)r<   r>   s    r?   rC   z!NtaclsBackupRestoreTests.tearDownZ   sL    ##%%%&--6688888r@   c                 \    	 t          j        | j                   d S # t          $ r Y d S w xY wrB   )r   remover4   OSErrorr<   s    r?   r6   z(NtaclsBackupRestoreTests._delete_tarfile_   sB    	Id'((((( 	 	 	DD	s    
++c                 t    |                      t          j                            | j                             d S rB   )
assertTruer   r"   isfiler4   rG   s    r?   _check_tarfilez'NtaclsBackupRestoreTests._check_tarfilee   s+    t'899:::::r@   c                 n    | j                                         }|                     | j        |           d S rB   )r2   get_treeassertDictEqualr5   )r<   actual_trees     r?   r9   z$NtaclsBackupRestoreTests._check_treeh   s3    o..00TY44444r@   c                 f   t           j                            | j        d          }t	          j        |t                      | j                   t          j        |          j	        }| 
                    |dz  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assertEqualrI   isdir)r<   dirpathmodes      r?   test_smbd_mkdirz(NtaclsBackupRestoreTests.test_smbd_mkdirl   s    
 ',,t0'::
7/114<@@@ww'
 	u---g../////r@   c                    t           j                            | j        d          }t	          j        |t                      | j                   |                     t           j        	                    |                     t          j
        |          j        }|                     |dz  d           t	          j        |t                      | j                   |                     t           j        	                    |                     dS )zG
        A smoke test for smbd.create_file and smbd.unlink API
        za-filerQ   i  N)r   r"   r#   r$   r   create_filer   r!   rI   rJ   rS   rT   rU   unlinkassertFalse)r<   filepathrX   s      r?   test_smbd_create_filez.NtaclsBackupRestoreTests.test_smbd_create_file{   s    
 7<< 18<<#6#8#8$,GGGx00111wx  (
 	u--- 	H133T\BBB1122222r@   c                    d}t           j                            | j        |          }| j                            |d          }| j                            |t                      dd          }| j                            |t                      dd          }| 	                    ||           | 	                    ||           dS )zC
        Ntacls get from different ways should be the same
        r   T)as_sddlF)ra   direct_db_accessN)
r   r"   r#   r$   r2   get_aclr-   getntaclr   rU   )r<   	file_name	file_pathsd0sd1sd2s         r?   test_compare_getntaclz.NtaclsBackupRestoreTests.test_compare_getntacl   s    
  	GLL!2I>>	o%%i%>> ))*,,dU * T T  ))*,,dT * S S 	c"""c"""""r@   c                    t          j        | j        | j        | j                   |                                  | j                                         t          j        | j        | j	        | j
        | j                   |                                  |                     | j        | j                                                   dS )zI
        Backup service online, delete files, restore and check.
        N)r   backup_onliner0   r4   r*   rK   r2   r7   backup_restorer$   r)   r%   r9   rN   r;   r:   rG   s    r?   test_backup_onlinez+NtaclsBackupRestoreTests.test_backup_online   s     	M4,dl	< 	< 	<##%%%t0OT/	1 	1 	1 	 	 $/"<"<">">	@ 	@ 	@ 	@ 	@r@   c                    t          j        | j        | j        | j        | j                   |                                  | j                                         t          j	        | j        | j        | j
        | j                   |                                  |                     | j        | j                                                   dS )zJ
        Backup service offline, delete files, restore and check.
        N)r   backup_offliner$   r4   r%   r*   rK   r2   r7   rm   r)   r9   rN   r;   r:   rG   s    r?   test_backup_offlinez,NtaclsBackupRestoreTests.test_backup_offline   s     	t0	. 	. 	. 	##%%%t0OT/	1 	1 	1 	 	 $/"<"<">">	@ 	@ 	@ 	@ 	@r@   )__name__
__module____qualname____doc__r   rC   r6   rK   r9   rY   r_   rj   rn   rq   __classcell__)r>   s   @r?   r   r   "   s         1< 1< 1< 1< 1<f9 9 9 9 9
  ; ; ;5 5 50 0 03 3 3*# # #&@ @ @$@ @ @ @ @ @ @r@   r   )ru   r   samba.samba3r   r.   r   sambar   r   
samba.authr   samba.auth_utilr   samba.dcerpcr	   samba.testsr
   samba.tests.smbd_baser   r    r@   r?   <module>r      s   & $ # 				 8 8 8 8 8 8                   % % % % % % / / / / / / ! ! ! ! ! ! $ $ $ $ $ $ / / / / / /d@ d@ d@ d@ d@} d@ d@ d@ d@ d@r@   