a
    œcl_u  ã                   @   s8   d dl Z d dlZd dlmZ d dlZG dd„ deƒZdS )é    N)ÚSambaToolCmdTestc                       s€   e Zd ZdZdZdZd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 )Ú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                    s^   t t| ƒ ¡  |  ddtjd  dtjd tjd f ¡| _d| j ¡  | _| j 	| j¡ d S )Nz-Hz	ldap://%sZ	DC_SERVERz-U%s%%%sZDC_USERNAMEZDC_PASSWORDzOU=DSaclSetSddlTestCase,%s)
Úsuperr   ÚsetUpZgetSamDBÚosÚenvironÚsamdbZ	domain_dnÚdnZ	create_ou©Úself©Ú	__class__© ú>/usr/lib/python3/dist-packages/samba/tests/samba_tool/dsacl.pyr      s    .zDSaclSetSddlTestCase.setUpc                    s    t t| ƒ ¡  | j | j¡ d S )N)r   r   ÚtearDownr   Údeleter	   r
   r   r   r   r   %   s    zDSaclSetSddlTestCase.tearDownc                 C   sx   |   ddd| j d| j ¡\}}}|  |||¡ |  |dd¡ t 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ÚfindallZassertNotEqualÚassertMatch)r   ÚresultÚoutÚerrÚacl_listr   r   r   Ú	test_sddl*   s    "zDSaclSetSddlTestCase.test_sddlc                 C   sú   |   ddd| j ¡\}}}|  |||¡ |  |dd¡ t d|¡}|   ddd| j d| j ¡\}}}|  |||¡ |  |dd¡ t d	|¡}|  ||d
¡ t d|¡}|   ddd| j ¡\}}}|  |||¡ |  |dd¡ t 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$   Zacl_list_getZacl_list_oldr%   Zacl_list_get2r   r   r   Útest_sddl_set_get4   s4    ÿ
þ
ÿÿ
ÿz&DSaclSetSddlTestCase.test_sddl_set_getc                 C   st   |   ddd| j d| j ¡\}}}|  |||¡ |  |dd¡ t d|¡}t d| j¡D ]}|  |d	 |d
¡ qXd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$   r%   Zacer   r   r   Útest_multisddlR   s    "z#DSaclSetSddlTestCase.test_multisddlc                 C   s(   |   | 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   r%   r   r   r   Útest_duplicatesddl\   s    z'DSaclSetSddlTestCase.test_duplicatesddlc                 C   s(   |   | 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-   r   r   r   Útest_casesensitivesddla   s    z+DSaclSetSddlTestCase.test_casesensitivesddlc                 C   s(   |   | 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-   r   r   r   Útest_sidsddlf   s    z!DSaclSetSddlTestCase.test_sidsddlc                 C   s.   |   | j| j| j ¡}|  |d |d ¡ dS )zŒTests 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-   r   r   r   Útest_twosddlk   s    z!DSaclSetSddlTestCase.test_twosddlc                 C   s¦   |   ddd| j d| ¡\}}}|  |||¡ |  |dd¡ t d|¡}|  |d |d	¡ |   ddd| j d| ¡\}}}|  |||¡ |  |dd¡ t 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   Zsddl1Zsddl2r"   r#   r$   r%   r   r   r   r,   p   s      z'DSaclSetSddlTestCase._double_sddl_check)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r/   r0   r2   r)   r   r   r&   r(   r*   r.   r1   r3   r4   r,   Ú__classcell__r   r   r   r   r      s    

r   )r   ZldbZsamba.tests.samba_tool.baser   r   r   r   r   r   r   Ú<module>   s   