a
    œcl_  ã                   @   s   d Z ddlZddl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mZmZ ddlZddlZddlZG dd„ deƒZG d	d
„ d
eƒZdS )z1Tests for samba.xattr_native and samba.xattr_tdb.é    N)Úcopytree_with_xattrs)Úxattr)Úndr_pack)ÚSkipTestÚTestCaseÚTestCaseInTempDirc                   @   sT   e Z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dS )Ú
XattrTestsc              	   C   s4   t  ¡  tjd }tj |dttdt   ¡  ƒƒ ¡S )NÚSELFTEST_PREFIXZpytestsi † )ÚrandomZseedÚosÚenvironÚpathÚjoinÚstrÚint)Úselfr   © r   ú3/usr/lib/python3/dist-packages/samba/tests/xattr.pyÚ_tmpfilename&   s    
zXattrTests._tmpfilenamec                 C   s   t j t jd d¡S )Nr	   úeadb.tdb)r   r   r   r   )r   r   r   r   Ú	_eadbpath+   s    zXattrTests._eadbpathc                 C   sx   t j ¡ stƒ ‚t ¡ }d|_|  ¡ }t|dƒ 	d¡ zt j 
|dt|ƒ¡ W n tyh   tdƒ‚Y n0 t |¡ d S )Né   ÚwÚemptyúuser.unittestsú>the filesystem where the tests are runned do not support XATTR)ÚsambaÚxattr_nativeÚis_xattr_supportedr   r   ÚNTACLÚversionr   ÚopenÚwriteÚwrap_setxattrr   ÚIOErrorr   Úunlink)r   ÚntaclÚtempfr   r   r   Útest_set_xattr_native.   s    

ÿz XattrTests.test_set_xattr_nativec                 C   s„   t j ¡ stƒ ‚|  ¡ }d}t|dƒ d¡ z.t j |d|¡ t j |d¡}|  	||¡ W n t
yt   tdƒ‚Y n0 t |¡ d S )Nó   this is a testr   r   r   r   )r   r   r   r   r   r!   r"   r#   Úwrap_getxattrÚassertEqualr$   r   r%   )r   r'   ÚreftxtÚtextr   r   r   Útest_set_and_get_native<   s    
z"XattrTests.test_set_and_get_nativec              	   C   sn   |   ¡ }|  ¡ }t ¡ }d|_t|dƒ d¡ z$tj 	||dt
|ƒ¡ W t |¡ nt |¡ 0 t |¡ d S ©Nr   r   r   r   )r   r   r   r   r    r!   r"   r   Ú	xattr_tdbr#   r   r   r%   ©r   r'   Ú	eadb_pathr&   r   r   r   Útest_set_xattr_tdbJ   s    
ÿzXattrTests.test_set_xattr_tdbc              	   C   sl   |   ¡ }t ¡ }d|_t|dƒ d¡ z4|  ttj	j
tj dd¡|dt|ƒ¡ W t |¡ nt |¡ 0 d S )Nr   r   r   Znonexistentr   r   )r   r   r   r    r!   r"   ZassertRaisesr$   r   r0   r#   r   r   r   r   r%   )r   r'   r&   r   r   r   Útest_set_tdb_not_openW   s    þz XattrTests.test_set_tdb_not_openc              	   C   s|   |   ¡ }|  ¡ }d}t|dƒ d¡ z<tj ||d|¡ tj ||d¡}|  ||¡ W t	 
|¡ nt	 
|¡ 0 t	 
|¡ d S ©Nr)   r   r   r   )r   r   r!   r"   r   r0   r#   r*   r+   r   r%   ©r   r'   r2   r,   r-   r   r   r   Útest_set_and_get_tdbc   s    ÿ
ÿzXattrTests.test_set_and_get_tdbc              	   C   sn   |   ¡ }|  ¡ }t ¡ }d|_t|dƒ d¡ z$tj 	||dt
|ƒ¡ W t |¡ nt |¡ 0 t |¡ d S r/   )r   r   r   r   r    r!   r"   r   Ú
posix_eadbr#   r   r   r%   r1   r   r   r   Útest_set_posix_eadbr   s    
ÿzXattrTests.test_set_posix_eadbc              	   C   s|   |   ¡ }|  ¡ }d}t|dƒ d¡ z<tj ||d|¡ tj ||d¡}|  ||¡ W t	 
|¡ nt	 
|¡ 0 t	 
|¡ d S r5   )r   r   r!   r"   r   r8   r#   r*   r+   r   r%   r6   r   r   r   Útest_set_and_get_posix_eadb   s    ÿ
ÿz&XattrTests.test_set_and_get_posix_eadbN)Ú__name__Ú
__module__Ú__qualname__r   r   r(   r.   r3   r4   r7   r9   r:   r   r   r   r   r   $   s   r   c                   @   s   e Zd Zdd„ ZdS )ÚTestCopyTreeWithXattrsc                 C   sx   t  | j¡ t  d¡ t  d¡ t  d¡ tddƒ}z| d¡ W | ¡  n
| ¡  0 tddƒ t 	d¡ t 	d¡ d S )NÚaza/bza/b/cza/b/c/dr   ZfooÚb)
r   ÚchdirZtempdirÚmkdirr!   r"   Úcloser   ÚshutilZrmtree)r   Úfr   r   r   Útest_simple‘   s    





z"TestCopyTreeWithXattrs.test_simpleN)r;   r<   r=   rF   r   r   r   r   r>      s   r>   )Ú__doc__Zsamba.xattr_nativer   Zsamba.xattr_tdbZsamba.posix_eadbZsamba.xattrr   Zsamba.dcerpcr   Z	samba.ndrr   Zsamba.testsr   r   r   r
   rD   r   r   r>   r   r   r   r   Ú<module>   s   k