
    b                         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
Z G d de          Z G 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                     d S N )abs     >/usr/lib/python3/dist-packages/samba/tests/upgradeprovision.pydummymessager   !   s    D    c                   *    e Zd ZdZd Zd Zd Zd ZdS )UpgradeProvisionTestCasezISome simple tests for individual functions in the provisioning code.
    c                     g d}g d}|D ]%}|                      t          ||                     &g d}|D ]%}|                     t          ||                     &d S )N)      #   7   )      8   )r      r   r   $   )assertFalser   
assertTrue)selfrangevalsvs       r   test_usn_in_rangez*UpgradeProvisionTestCase.test_usn_in_range(   s    {{ 	5 	5A\!U334444""" 	4 	4AOOLE223333	4 	4r   c                 &   |                      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#   s    r   test_dn_sortz%UpgradeProvisionTestCase.test_dn_sort5   s     	!2I>>BBBI66:::!2":< <=?	A 	A 	A!:";= =>@	B 	B 	B 	B 	Br   c           	         t          j        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   dom_sidr+   r   
descriptor	from_sddl)r#   domsidsddlsddl1sddl2sddl3sddl4sddl5sddl6txttxtmsgs              r   test_get_diff_sdsz*UpgradeProvisionTestCase.test_get_diff_sds@   s_   !*--RRRRR=e
 	h&9&C&CD&&Q&Q'/':'D'DUF'S'S'-/ /02	4 	4 	4 8.88vFF#.88GG!# # 	NOOO8.88vFF#.88GG!# # 	NOOO8.88vFF#.88GG!# # 	f%%%8.88vFF#.88GG!# # 	BCCCh&9&C&CD&&Q&Q'/':'D'DUF'S'S'-/ /02	4 	4 	4 	4 	4r   c                     t          g           }|                     |d           t          dg          }|                     |d           t          ddg          }|                     |d           d S )Nr/   fooz
(|(foo=*))barz(|(foo=*)(bar=*)))r   r+   )r#   ress     r   test_construct_existor_exprz4UpgradeProvisionTestCase.test_construct_existor_exprp   sx    $R((b!!!$eW--l+++$eU^44122222r   N)__name__
__module____qualname____doc__r'   r-   r=   rB   r   r   r   r   r   %   s^         4 4 4	B 	B 	B.4 .4 .4`3 3 3 3 3r   r   c                   @     e Zd Z fdZd Zd Zd Zd Z fdZ xZ	S )UpdateSecretsTestsc                     t          t          |                                            t          t          j                            | j        d                    | _        d S )Nref.ldb)	superrH   setUpr   ospathjointempdirreferencedb)r#   	__class__s    r   rL   zUpdateSecretsTests.setUp}   sM     $''--///1GLLy113 3r   c                 f    t          t          j                            | j        d                    S Nsecrets.ldb)r
   rM   rN   rO   rP   r,   s    r   _getEmptyDbzUpdateSecretsTests._getEmptyDb   s"    27<<m<<===r   c                 f    t          t          j                            | j        d                    S rT   )r   rM   rN   rO   rP   r,   s    r   _getCurrentFormatDbz&UpdateSecretsTests._getCurrentFormatDb   s)    %GLL}557 7 	7r   c                     |                                  | _        |                     d t          | j        | j        t
                               d S r   )rX   	secretsdbr+   r   rQ   r   r,   s    r   test_trivialzUpdateSecretsTests.test_trivial   sR    1133()94><XX	Z 	Z 	Z 	Z 	Zr   c                    |                                  }t          | j        |t                     |                    dt
                    }| j                            dt
                    }|                     |j        |j                   d S )Nz@MODULES)basescope)rV   r   rQ   r   searchr   r+   msgs)r#   empty_db
newmodules
refmoduless       r   test_update_modulesz&UpdateSecretsTests.test_update_modules   sx    ##%%t'<@@@__*J_GG
%,,*J,OO
*/:::::r   c                    dD ]Z}t           j                            | j        |          }t           j                            |          rt          j        |           [t          t          |                                            d S )N)rJ   rU   zsecrets.tdbzsecrets.tdb.bakzsecrets.ntdb)	rM   rN   rO   rP   existsunlinkrK   rH   tearDown)r#   namerN   rR   s      r   rh   zUpdateSecretsTests.tearDown   sp    ` 	  	 D7<<d33Dw~~d##  	$ $''0022222r   )
rC   rD   rE   rL   rV   rX   r[   rd   rh   __classcell__)rR   s   @r   rH   rH   {   s        3 3 3 3 3
> > >7 7 7Z Z Z; ; ;3 3 3 3 3 3 3 3 3r   rH   )NN)rF   rM   samba.upgradehelpersr   r   r   r   samba.descriptorr   samba.tests.provisionr   samba.testsr	   sambar
   ldbr   samba.dcerpcr   r   r   testsrH   r   r   r   <module>rs      sM  $ ( ' 				: : : : : : : : : : : : * ) ) ) ) ) 8 8 8 8 8 8 ) ) ) ) ) )                 ! ! ! ! ! !	 	 	 	S3 S3 S3 S3 S30 S3 S3 S3l 3  3  3  3  36  3  3  3  3  3r   