
    b%                        d dl Z d dlZd dlZd dlZd dl mZ d dlmZmZ d dlm	Z
 d dlmZ ej        d          dk    Zej                            d          Ze                                dz   Zd	Zd
ZdZdZed                    d          dz  z   Zej                            ed ej        d d          z            Zej                            ed                              dd          Z G d de j        j                   Z!dS )    N)NTSTATUSError)NT_STATUS_OBJECT_NAME_NOT_FOUNDNT_STATUS_OBJECT_PATH_NOT_FOUND)libsmb_samba_internal)param   REALM/   abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdu
  Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel Süßigkeiten Äpfel s 	  a  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcda  bcds   zHello cruel world of python3utf8   z
testing_%di  testing\c                   d     e 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d Zd Z xZS )SMBTestsc                    t          t          |                                            t          j        d         | _        |                     |                                           }t          j	                    }|
                    t          j        d                     t          j        | j        d||          | _        | j                            t                      d S )NSERVER)templateSMB_CONF_PATHsysvol)superr   setUposenvironserverinsta_credsget_credentialss3paramget_contextloadgetenvlibsmbConnsmb_connmkdirtest_dir)selfcredslp	__class__s      1/usr/lib/python3/dist-packages/samba/tests/smb.pyr   zSMBTests.setUp)   s    h##%%%j*  $*>*>*@*@ AA  ""
	/**+++DK2uEEH%%%%%    c                     t          t          |                                            	 | j                            t
                     d S #  Y d S xY w)N)r   r   tearDownr$   deltreer&   )r'   r*   s    r+   r.   zSMBTests.tearDown5   sP    h&&(((	M!!(+++++	DDs   A Ac                    d | j                             t                    D             }|                     d|d           |                     d|d           |                     d|d           |                     d	|d
           d | j                             t          d          D             }|                     ||           d | j                             t          d          D             }dg}|                     ||           g d}| j                             t                    D ]&}|D ]!}|                     ||d|d|d           "'d S )Nc                     g | ]
}|d          S name .0fs     r+   
<listcomp>z&SMBTests.test_list.<locals>.<listcomp>>   s    @@@Aai@@@r,   scriptsz'"scripts" directory not found in sysvolmsgPoliciesz("Policies" directory not found in sysvolz..z&Parent (..) found in directory listing.z*Current dir (.) found in directory listingc                     g | ]
}|d          S r2   r4   r5   s     r+   r8   z&SMBTests.test_list.<locals>.<listcomp>I   s    NNNQqyNNNr,   *c                     g | ]
}|d          S r2   r4   r5   s     r+   r8   z&SMBTests.test_list.<locals>.<listcomp>M   s    LLL!F)LLLr,   zPol*)attribmtimer3   
short_namesizezKey 'z' not in listing '')r$   list
domain_dirassertInassertNotInassertEqual)r'   lsls_wildcardls_polexpectedexpected_keysitemkeys           r+   	test_listzSMBTests.test_list<   s   @@!3!3J!?!?@@@iC 	 	E 	E 	Ej"D 	 	F 	F 	FrE 	 	G 	G 	GbI 	 	K 	K 	K ON$-*<*<Z*M*MNNN[))) MLT]%7%7
F%K%KLLL<*** JIIM&&z22 	P 	PD$ P Pc44DGCC"N  P P P PP	P 	Pr,   c                    g }g }t           }dD ]}|                     ||          }| j                            |           |                    |           |}|                     |d          }| j                            |           |                    |           g }|D ]}t          dd          D ]}d                    ||          }|                     |d                    |                    }| j                            |t          	                    d                     |                    |           ||z   D ]C}| 
                    | j                            |          d                    |                     D|D ]>}| 
                    |                     |          d                    |                     ?|                    d	          }| j                            |           |                     | j                            |          d
                    |                     |                    d	          }| j                            |           |                     |                     |          d
                    |                     | j                            t                      ||z   D ]C}|                     | j                            |          d
                    |                     D|D ]>}|                     |                     |          d
                    |                     ?dS )z4The smb.deltree API should delete files and sub-dirs)zsubdir-Xzsubdir-Yzsubdir-Zanother      zI'm file {0} in dir {1}!zfile-{0}.txtr   zFailed to create {0}r   zFailed to delete {0}N)r&   make_sysvol_pathr$   r%   appendrangeformatsavefiletest_contentsencode
assertTruechkpathfile_existspopr/   assertFalse)	r'   dirpaths
empty_dirscur_dirsubdirpath	filepathsicontentss	            r+   test_deltreezSMBTests.test_deltreeX   s    
: 		$ 		$F((&99DM%%%OOD!!!G (()<<DM%%%d#### 	 	' 	'F1a[[ ' '5<<QGG,,V^5J5J15M5MNN&&t]-A-A&-I-IJJJ  &&&&	' + 	C 	CFOODM11&99299&AAC C C C 	A 	ADOOD,,T22299$??A A A A ~~a  d###..t44/66t<<	> 	> 	> }}Qd###))$///66t<<	> 	> 	> 	h''' + 	D 	DFT]226::3::6BBD D D D 	B 	BDT--d333::4@@B B B B	B 	Br,   c                     	 | j                             |           d}nH# t          $ r;}|j        d         t          k    s|j        d         t
          k    rd}n|Y d}~nd}~ww xY w|S )z<Returns whether a regular file exists (by trying to open it)Tr   FN)r$   loadfiler   argsr   r   )r'   filepathexistserrs       r+   r`   zSMBTests.file_exists   s    	M""8,,,FF 	 	 	>>>>>>	 	 s    
A$1AA$c                    |                      |                     t                               | j                            t          t
                     |                     |                     t                               | j                            t                     |                      |                     t                               dS )z7
        The smb.unlink API should delete file
        N)rb   r`   	test_filer$   r[   binary_contentsr^   unlink)r'   s    r+   test_unlinkzSMBTests.test_unlink   s    
 	)))44555y/:::((33444 	Y''')))4455555r,   c                    |                      | j                            t                               |                     t          d          }|                     | j                            |                     | j                            t          t                     |                     | j                            t                               |                     t          d          }| j        	                    |           |                      | j                            |                     | j        
                    |           |                     | j                            |                     dS )z;Tests .chkpath determines whether or not a directory exists
dont_existztest-newN)r^   r$   r_   r&   rW   rb   r[   rs   rt   r%   rmdir)r'   bad_dirnew_dirs      r+   test_chkpathzSMBTests.test_chkpath   s.    	--h77888 '',??..w77888 	y/:::..y99::: ''*==G$$$--g66777G$$$..w7788888r,   c                    | j                             t          t                              d                     | j                             t                    }|                     |                    d          t          d           d}| j                             t          |                    d                     | j                             t                    }|                     |                    d          |d           d S )Nr   4contents of test file did not match what was writtenr:      wxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyzwxyz)r$   r[   rs   r\   r]   rm   rJ   decode)r'   rj   new_contentss      r+   test_save_load_textzSMBTests.test_save_load_text   s    y-*>*>v*F*FGGG=)))4400-T 	 	V 	V 	V $y,*=*=f*E*EFFF=)))4400,T 	 	V 	V 	V 	V 	Vr,   c                     | j                             t          t                     | j                             t                    }|                     |t          d           d S Nr~   r:   )r$   r[   rs   test_literal_bytes_embed_nullsrm   rJ   r'   rj   s     r+   test_save_load_string_bytesz$SMBTests.test_save_load_string_bytes   sd    y*HIII=)))44#AT 	 	V 	V 	V 	V 	Vr,   c                 &   t           r| j                            t          t                              d                     | j                            t                    }|                     |                    d          t          d           d S d S )Nr   r~   r:   )	PY3r$   r[   rs   utf_contentsr]   rm   rJ   r   r   s     r+   test_save_load_utfcontentsz#SMBTests.test_save_load_utfcontents   s     	ZM""9l.A.A&.I.IJJJ}--i88HX__V44l"X  Z Z Z Z Z		Z 	Zr,   c                     | j                             t          t                     | j                             t                    }|                     |t          d           d S r   )r$   r[   rs   rt   rm   rJ   r   s     r+   test_save_binary_contentsz"SMBTests.test_save_binary_contents   sb    y/:::=)))44?T 	 	V 	V 	V 	V 	Vr,   c                 j    t           j                            ||                              dd          S )Nr
   r   )r   rg   joinreplace)r'   dirpathfilenames      r+   rW   zSMBTests.make_sysvol_path   s(    w||GX..66sDAAAr,   )__name__
__module____qualname__r   r.   rR   rk   r`   rv   r|   r   r   r   r   rW   __classcell__)r*   s   @r+   r   r   (   s       
& 
& 
& 
& 
&    P P P88B 8B 8Bt  6 6 69 9 9(V V V"V V VZ Z ZV V VB B B B B B Br,   r   )"sambar   randomsysr   samba.ntstatusr   r   samba.samba3r   r"   r   r   version_infor   r   getrealmlowerrG   r\   r   r   rt   r]   rg   r   randintr&   r   rs   testsTestCaser   r4   r,   r+   <module>r      s  $  				  



      = = = = = = = = 8 8 8 8 8 8 ) ) ) ) ) )	qQ

w[[]]S 
-!N !$B$I$I&$Q$QTW$WW7<<
L>6>!V3L3L$LMMGLL9--55c4@@	DB DB DB DB DBu{# DB DB DB DB DBr,   