a
    œcl_þ  ã                   @   s¤   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 G dd„ dej	j
ƒZG d	d
„ d
ej	j
ƒZG dd„ dej	j
ƒZG dd„ dej	j
ƒZG dd„ dej	j
ƒZdS )z Tests for samba.dcerpc.security.é    N)Úsecurity)Úaccess_check)Úntstatus)ÚNTSTATUSErrorc                       sL   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	‡  Z
S )ÚSecurityTokenTestsc                    s   t t| ƒ ¡  t ¡ | _d S ©N)Úsuperr   ÚsetUpr   Útoken©Úself©Ú	__class__© ú6/usr/lib/python3/dist-packages/samba/tests/security.pyr	      s    zSecurityTokenTests.setUpc                 C   s   |   | j ¡ ¡ d S r   )ÚassertFalser
   Z	is_systemr   r   r   r   Útest_is_system!   s    z!SecurityTokenTests.test_is_systemc                 C   s   |   | j ¡ ¡ d S r   )r   r
   Zis_anonymousr   r   r   r   Útest_is_anonymous$   s    z$SecurityTokenTests.test_is_anonymousc                 C   s   |   | j ¡ ¡ d S r   )r   r
   Zhas_builtin_administratorsr   r   r   r   Útest_has_builtin_administrators'   s    z2SecurityTokenTests.test_has_builtin_administratorsc                 C   s   |   | j ¡ ¡ d S r   )r   r
   Zhas_nt_authenticated_usersr   r   r   r   Útest_has_nt_authenticated_users*   s    z2SecurityTokenTests.test_has_nt_authenticated_usersc                 C   s   |   | j tj¡¡ d S r   )r   r
   Úhas_privileger   ÚSEC_PRIV_SHUTDOWNr   r   r   r   Útest_has_priv-   s    z SecurityTokenTests.test_has_privc                 C   s@   |   | j tj¡¡ |   | j tj¡¡ |  | j tj¡¡ d S r   )r   r
   r   r   r   Zset_privilegeÚ
assertTruer   r   r   r   Útest_set_priv0   s    z SecurityTokenTests.test_set_priv)Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r   r   r   Ú__classcell__r   r   r   r   r      s   r   c                       sd   e Z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dd„ Z‡  ZS )ÚSecurityDescriptorTestsc                    s   t t| ƒ ¡  t ¡ | _d S r   )r   r   r	   r   Ú
descriptorr   r   r   r   r	   8   s    zSecurityDescriptorTests.setUpc                 C   sj   t j dt  d¡¡}|  |jt  d¡¡ |  |jt  d¡¡ |  |jd¡ |  |jd ¡ |  |j	d¡ d S )Nú-O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)úS-2-0-0úS-2-0-0-512zS-1-5-32-548é   i€  )
r   r    Ú	from_sddlÚdom_sidÚassertEqualÚ	group_sidÚ	owner_sidZrevisionÚsaclÚtype)r   Údescr   r   r   Útest_from_sddl<   s    z&SecurityDescriptorTests.test_from_sddlc                 C   s   |   ttjjdt d¡¡ d S )NZfoor"   ©ÚassertRaisesÚ	TypeErrorr   r    r%   r&   r   r   r   r   Útest_from_sddl_invalidsddlD   s    z2SecurityDescriptorTests.test_from_sddl_invalidsddlc                 C   s$   |   ttjjt d¡t d¡¡ d S )Nr#   r"   r.   r   r   r   r   Útest_from_sddl_invalidtype1G   s    z3SecurityDescriptorTests.test_from_sddl_invalidtype1c                 C   s   d}|   ttjj|d¡ d S ©Nr!   r"   )r/   r0   r   r    r%   )r   Zsddlr   r   r   Útest_from_sddl_invalidtype2J   s    ÿz3SecurityDescriptorTests.test_from_sddl_invalidtype2c                 C   st   d}t  d¡}t j ||¡}t j | |¡|¡}|  |j|j¡ |  |j|j¡ |  |j|j¡ |  |j	|j	¡ d S r3   ©
r   r&   r    r%   Úas_sddlr'   r(   r)   r*   r+   )r   ÚtextÚdomÚdesc1Údesc2r   r   r   Útest_as_sddlO   s    
z$SecurityDescriptorTests.test_as_sddlc                 C   s0   d}t  d¡}t j ||¡}|  t|j|¡ d S r3   )r   r&   r    r%   r/   r0   r6   )r   r7   r8   r9   r   r   r   Útest_as_sddl_invalidY   s    
z,SecurityDescriptorTests.test_as_sddl_invalidc                 C   sr   t  d¡}d}t j ||¡}t j | ¡ |¡}|  |j|j¡ |  |j|j¡ |  |j|j¡ |  |j	|j	¡ d S ©Nr"   r!   r5   )r   r8   r7   r9   r:   r   r   r   Útest_as_sddl_no_domainsid_   s    
z1SecurityDescriptorTests.test_as_sddl_no_domainsidc                 C   s6   t  d¡}d}t j ||¡}|  | ¡ | |¡¡ d S r=   )r   r&   r    r%   ZassertNotEqualr6   )r   r8   r7   r9   r   r   r   Útest_domsid_nodomsid_as_sddli   s    
z4SecurityDescriptorTests.test_domsid_nodomsid_as_sddlc                 C   s(   t  d¡}|  t  d¡df| ¡ ¡ d S )NzS-2-0-7zS-2-0é   )r   r&   r'   Úsplit)r   r8   r   r   r   Ú
test_splito   s    
z"SecurityDescriptorTests.test_split)r   r   r   r	   r-   r1   r2   r4   r;   r<   r>   r?   rB   r   r   r   r   r   r   6   s   

r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚDomSidTestsc                 C   s   t  d¡}|  dt|ƒ¡ d S ©NzS-1-5-21)r   r&   r'   Ústr©r   Zsidr   r   r   Útest_parse_sidv   s    
zDomSidTests.test_parse_sidc                 C   s0   t  d¡}t  d¡}|  ||¡ |  ||¡ d S rD   )r   r&   r'   )r   Zsid1Zsid2r   r   r   Útest_sid_equalz   s    

zDomSidTests.test_sid_equalc                 C   s    t  ¡ }|  t|ƒ d¡¡ d S )Nz	S-1-5-21-)r   Ú
random_sidr   rE   Ú
startswithrF   r   r   r   Útest_random€   s    zDomSidTests.test_randomc                 C   s    t  ¡ }|  t|ƒ d¡¡ d S )Nzdom_sid('S-1-5-21-)r   rI   r   ÚreprrJ   rF   r   r   r   Ú	test_repr„   s    zDomSidTests.test_reprN)r   r   r   rG   rH   rK   rM   r   r   r   r   rC   t   s   rC   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚPrivilegeTestsc                 C   s   |   dt tj¡¡ d S ©NZSeShutdownPrivilege)r'   r   Zprivilege_namer   r   r   r   r   Útest_privilege_name‹   s    
ÿz"PrivilegeTests.test_privilege_namec                 C   s   |   tjt d¡¡ d S rO   )r'   r   r   Zprivilege_idr   r   r   r   Útest_privilege_id   s    ÿz PrivilegeTests.test_privilege_idN)r   r   r   rP   rQ   r   r   r   r   rN   ‰   s   rN   c                   @   s   e Zd Zdd„ ZdS )ÚCheckAccessTestsc           
      C   s¶   t j dt  d¡¡}t  ¡ }|  t||dƒd¡ t jtj	ft j
tjff}|D ]d\}}zt|||ƒ}W qL ty® } z2|  t|tƒ¡ |j\}}	|  ||¡ W Y d }~qLd }~0 0 qLd S )Nr!   r"   r   )r   r    r%   r&   r
   r'   r   ZSEC_FLAG_SYSTEM_SECURITYr   ZNT_STATUS_PRIVILEGE_NOT_HELDZSEC_STD_READ_CONTROLZNT_STATUS_ACCESS_DENIEDÚ	Exceptionr   Ú
isinstancer   Úargs)
r   r,   r
   ÚparamsÚargZnumÚresultÚeZe_numZe_msgr   r   r   Útest_check_access–   s    ÿ
ý
z"CheckAccessTests.test_check_accessN)r   r   r   rZ   r   r   r   r   rR   ”   s   rR   )Ú__doc__Zsamba.testsZsambaZsamba.dcerpcr   Zsamba.securityr   r   r   ZtestsZTestCaser   r   rC   rN   rR   r   r   r   r   Ú<module>   s   >