a
    cl_                     @   s   d Z ddlZddlmZmZmZ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Zdd	lmZ dd
dZG dd deZG dd dejjZdS )z!Tests for samba.upgradeprovision.    N)usn_in_rangedn_sortupdate_secretsconstruct_existor_expr)get_diff_sds)create_dummy_secretsdb)TestCaseInTempDir)Ldb)
SCOPE_BASE)securityc                 C   s   d S N )abr   r   >/usr/lib/python3/dist-packages/samba/tests/upgradeprovision.pydummymessage!   s    r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )UpgradeProvisionTestCasezISome simple tests for individual functions in the provisioning code.
    c                 C   sP   g d}g d}|D ]}|  t|| qg d}|D ]}| t|| q6d S )N)      #   7   )      8   )r      r   r   $   )ZassertFalser   Z
assertTrue)selfrangeZvalsvr   r   r   test_usn_in_range(   s    z*UpgradeProvisionTestCase.test_usn_in_rangec                 C   sL   |  tddd |  tddd |  tddd |  td	d
d d S )Nzdc=tata,dc=totozdc=toto   zdc=zatazdc=tatazdc=toto,dc=tatazcn=foo,dc=toto,dc=tatazcn=bar, dc=toto,dc=tatazcn=foo, dc=toto,dc=tata)assertEqualr   r   r   r   r   test_dn_sort5   s    z%UpgradeProvisionTestCase.test_dn_sortc                 C   s.  t d}d}d}d}d}d}d}d}| tt j||t j|||d tt j||t j|||}	| |	d	 tt j||t j|||}	| |	d
 tt j||t j|||}	d}
| |	|
 tt j||t j|||}	| |	d | tt j||t j|||d d S )NzS-1-5-21z|O:SAG:DUD:AI(A;CI;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CI;RP LCLORC;;;AU)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)S:AI(AU;CISA;WP;;;WD)z|O:BAG:DUD:AI(A;CI;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CI;RP LCLORC;;;AU)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)S:AI(AU;CISA;WP;;;WD)z|O:SAG:BAD:AI(A;CI;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CI;RP LCLORC;;;AU)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)S:AI(AU;CISA;WP;;;WD)z|O:SAG:DUD:AI(A;CI;RPWPCRCCLCLORCWOWDSW;;;BA)(A;CI;RP LCLORC;;;AU)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)S:AI(AU;CISA;WP;;;WD)zgO:SAG:DUD:AI(A;CI;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CI;RP LCLORC;;;AU)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)zO:SAG:DUD:AI(A;CIID;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CIID;RP LCLORC;;;AU)(A;CIID;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;CI;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CI;RP LCLORC;;;AU)(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)S:AI(AU;CISA;WP;;;WD)(AU;CIIDSA;WP;;;WD) z,	Owner mismatch: SA (in ref) BA(in current)
z,	Group mismatch: DU (in ref) BA(in current)
z	Part dacl is different between reference and current here is the detail:
		(A;CI;RPWPCRCCLCLORCWOWDSW;;;BA) ACE is not present in the reference
		(A;CI;RPWPCRCCLCLORCWOWDSW;;;SA) ACE is not present in the current
z 	Current ACL hasn't a sacl part
)r   Zdom_sidr"   r   Z
descriptorZ	from_sddl)r   ZdomsidZsddlZsddl1Zsddl2Zsddl3Zsddl4Zsddl5Zsddl6ZtxtZtxtmsgr   r   r   test_get_diff_sds@   sR    
z*UpgradeProvisionTestCase.test_get_diff_sdsc                 C   sF   t g }| |d t dg}| |d t ddg}| |d d S )Nr%   Zfooz
(|(foo=*))Zbarz(|(foo=*)(bar=*)))r   r"   )r   resr   r   r   test_construct_existor_exprp   s    
z4UpgradeProvisionTestCase.test_construct_existor_exprN)__name__
__module____qualname____doc__r   r$   r&   r(   r   r   r   r   r   %   s
   0r   c                       sH   e Zd Z fddZdd Zdd Zdd Zd	d
 Z fddZ  Z	S )UpdateSecretsTestsc                    s(   t t|   ttj| jd| _d S )Nref.ldb)	superr-   setUpr   ospathjointempdirreferencedbr#   	__class__r   r   r0   }   s    zUpdateSecretsTests.setUpc                 C   s   t tj| jdS Nsecrets.ldb)r	   r1   r2   r3   r4   r#   r   r   r   _getEmptyDb   s    zUpdateSecretsTests._getEmptyDbc                 C   s   t tj| jdS r8   )r   r1   r2   r3   r4   r#   r   r   r   _getCurrentFormatDb   s    z&UpdateSecretsTests._getCurrentFormatDbc                 C   s&   |   | _| d t| j| jt d S r   )r;   Z	secretsdbr"   r   r5   r   r#   r   r   r   test_trivial   s    
zUpdateSecretsTests.test_trivialc                 C   sH   |   }t| j|t |jdtd}| jjdtd}| |j|j d S )Nz@MODULES)baseZscope)r:   r   r5   r   searchr
   r"   Zmsgs)r   Zempty_dbZ
newmodulesZ
refmodulesr   r   r   test_update_modules   s
    z&UpdateSecretsTests.test_update_modulesc                    sB   dD ]*}t j| j|}t j|rt | qtt|   d S )N)r.   r9   zsecrets.tdbzsecrets.tdb.bakzsecrets.ntdb)	r1   r2   r3   r4   existsunlinkr/   r-   tearDown)r   namer2   r6   r   r   rB      s
    zUpdateSecretsTests.tearDown)
r)   r*   r+   r0   r:   r;   r<   r?   rB   __classcell__r   r   r6   r   r-   {   s   r-   )NN)r,   r1   Zsamba.upgradehelpersr   r   r   r   Zsamba.descriptorr   Zsamba.tests.provisionr   Zsamba.testsr   Zsambar	   Zldbr
   Zsamba.dcerpcr   r   r   Ztestsr-   r   r   r   r   <module>   s   
V