
    bu                     F    d dl Z d dlZd dlmZ d dlZ G d de          ZdS )    N)SambaToolCmdTestc                   p     e Zd ZdZdZdZd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 )DSaclSetSddlTestCasez0Tests for samba-tool dsacl set --sddl subcommandz[(OA;CIIO;RPWP;aaaaaaaa-1111-bbbb-2222-dddddddddddd;33333333-eeee-4444-ffff-555555555555;PS)z[(OA;CIIO;RPWP;AAAAAAAA-1111-BBBB-2222-DDDDDDDDDDDD;33333333-EEEE-4444-FFFF-555555555555;PS)za(OA;CIIO;RPWP;aaaaaaaa-1111-bbbb-2222-dddddddddddd;33333333-eeee-4444-ffff-555555555555;S-1-5-10)z(OA;CIIO;RPWP;aaaaaaaa-1111-bbbb-2222-dddddddddddd;33333333-eeee-4444-ffff-555555555555;PS)(OA;CIIO;RPWP;cccccccc-9999-ffff-8888-eeeeeeeeeeee;77777777-dddd-6666-bbbb-555555555555;PS)c           	         t          t          |                                            |                     ddt          j        d         z  dt          j        d         dt          j        d                   | _        d| j                                        z  | _        | j        	                    | j                   d S )	Nz-Hz	ldap://%s	DC_SERVERz-UDC_USERNAMEz%DC_PASSWORDzOU=DSaclSetSddlTestCase,%s)
superr   setUpgetSamDBosenvironsamdb	domain_dndn	create_ouself	__class__s    >/usr/lib/python3/dist-packages/samba/tests/samba_tool/dsacl.pyr   zDSaclSetSddlTestCase.setUp   s    "D))//111]]4rz+7N)N)N]_]ghu]v]v]vxz  yC  DQ  yR  yR  PS  T  T
,tz/C/C/E/EE
TW%%%%%    c                     t          t          |                                            | j                            | j                   d S )N)r
   r   tearDownr   deleter   r   s    r   r   zDSaclSetSddlTestCase.tearDown%   s>    "D))22444
$'"""""r   c                 n   |                      ddd| j        z  d| j        z            \  }}}|                     |||           |                     |dd           t          j        d|          }|                     |d         |d	         d
           |                     |d	         | j        d           dS )z4Tests if a sddl string can be added 'the normal way'dsaclset--objectdn=%s	--sddl=%s Shouldn't be any error messages.*descriptor for.*:
(.*?)
r      znew and old SDDL string differ=new SDDL string should be contained within second sddl outputN)		runsubcmdr   sddlassertCmdSuccessassertEqualrefindallassertNotEqualassertMatch)r   resultouterracl_lists        r   	test_sddlzDSaclSetSddlTestCase.test_sddl*   s    !^^GU?TW;TVadhdmVmnncfc3///b"CDDD:3??HQK!6VWWW!di1pqqqqqr   c                    |                      ddd| j        z            \  }}}|                     |||           |                     |dd           t	          j        d|          }|                      ddd| j        z  d| j        z            \  }}}|                     |||           |                     |dd           t	          j        d	|          }|                     ||d
           t	          j        d|          }|                      ddd| j        z            \  }}}|                     |||           |                     |dd           t	          j        d|          }|                     ||d           dS )zXTests if a sddl string can be added 'the normal way' and the output of 'get' is the samer   getr   r    r!   z^descriptor for.*:
(.*?)
r   r   zold descriptor for.*:
(.*?)
z4output of dsacl get should be the same as before setznew descriptor for.*:
(.*?)
z3output of dsacl get should be the same as after setN)r%   r   r'   r(   r)   r*   r&   )r   r-   r.   r/   acl_list_getacl_list_oldr0   acl_list_get2s           r   test_sddl_set_getz&DSaclSetSddlTestCase.test_sddl_set_get4   s   !^^GU,;dg,EG Gcfc3///b"CDDDZ =sCC!^^GU,;dg,E,7$),CE Ec 	fc3///b"CDDDZ @#FF|O	Q 	Q 	Q <cBB!^^GU,;dg,EG Gcfc3///b"CDDDj!>DD=N	P 	P 	P 	P 	Pr   c                 X   |                      ddd| j        z  d| j        z            \  }}}|                     |||           |                     |dd           t          j        d|          }t          j        d| j                  D ]}|                     |d	         |d
            dS )zETests if we can add multiple, different sddl strings at the same timer   r   r   r   r    r!   r"   z\(.*?\)r#   r$   N)r%   r   
sddl_multir'   r(   r)   r*   r,   )r   r-   r.   r/   r0   aces         r   test_multisddlz#DSaclSetSddlTestCase.test_multisddlR   s    !^^GU?TW;TVadhdsVsttcfc3///b"CDDD:3??:i88 	p 	pCXa[#/noooo	p 	pr   c                     |                      | j        | j                  }|                     |d         |d                    dS )zMTests if an already existing sddl string can be added causing duplicate entryr   r#   N_double_sddl_checkr&   r(   r   r0   s     r   test_duplicatesddlz'DSaclSetSddlTestCase.test_duplicatesddl\   s?    **49TY??!Xa[11111r   c                     |                      | j        | j                  }|                     |d         |d                    dS )z`Tests if an already existing sddl string can be added in different cases causing duplicate entryr   r#   N)r>   sddl_lcsddl_ucr(   r?   s     r   test_casesensitivesddlz+DSaclSetSddlTestCase.test_casesensitivesddla   s?    **4<EE!Xa[11111r   c                     |                      | j        | j                  }|                     |d         |d                    dS )zpTests if an already existing sddl string can be added with SID instead of SDDL SIDString causing duplicate entryr   r#   N)r>   r&   sddl_sidr(   r?   s     r   test_sidsddlz!DSaclSetSddlTestCase.test_sidsddlf   s?    **49T]CC!Xa[11111r   c                     |                      | j        | j        | j        z             }|                     |d         |d                    dS )zTests if an already existing sddl string can be added by using it twice/in combination with non existing sddl string causing duplicate entryr   r#   Nr=   r?   s     r   test_twosddlz!DSaclSetSddlTestCase.test_twosddlk   sF    **49TY5JKK!Xa[11111r   c                    |                      ddd| j        z  d|z            \  }}}|                     |||           |                     |dd           t	          j        d|          }|                     |d         |d	           |                      ddd| j        z  d|z            \  }}}|                     |||           |                     |dd           t	          j        d|          }|S )
zSAdds two sddl strings and checks if there was an ace change after the second addingr   r   r   r   r    r!   r"   r#   zFnew SDDL string should be contained within second sddl output - is not)r%   r   r'   r(   r)   r*   r,   )r   sddl1sddl2r-   r.   r/   r0   s          r   r>   z'DSaclSetSddlTestCase._double_sddl_checkp   s   !^^GU?TW;TVadiVijjcfc3///b"CDDD:<SAA!e-uvvv!^^GU?TW;TVadiVijjcfc3///b"CDDD:<SAAr   )__name__
__module____qualname____doc__r&   rB   rC   rF   r9   r   r   r1   r7   r;   r@   rD   rG   rI   r>   __classcell__)r   s   @r   r   r      s        ::nDnGnGtH JJ& & & & &# # # # #
r r rP P P<p p p2 2 2
2 2 2
2 2 2
2 2 2
      r   r   )r   ldbsamba.tests.samba_tool.baser   r)   r    r   r   <module>rU      ss   $ 
			 



 8 8 8 8 8 8 				e e e e e+ e e e e er   