
    b                     R    d dl mZmZ d dlmZ d dlmZ d dlZ G d de          Z	dS )    )BlackboxTestCaseBlackboxProcessError)param)CredentialsNc                   N     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Z xZS )
SmbCaclsBlockboxTestBasec                    t          t          |                                            t          j                    | _        t          j        d         | _        t          j        d         | _	        t          j        d         | _
        t                      | _        | j                            | j                   | j                            | j	                   | j                            | j
                   t          j        dd          | _        t          j        dd          | _        t          j                            t          j        d         | j                  | _        d S )	NSERVERUSERPASSWORDTESTDIRsmbcaclsSHAREtmp
LOCAL_PATH)superr   setUps3paramget_contextlposenvironserveruserpasswdr   credsguessset_usernameset_passwordgetenvtestdirsharepathjoindirpath)self	__class__s    ?/usr/lib/python3/dist-packages/samba/tests/blackbox/smbcacls.pyr   zSmbCaclsBlockboxTestBase.setUp   s    &--33555%''j*Jv&	j, ]]

!!!
	***
,,,yJ77Yw..
w||BJ|$<T\JJ    c                    	 |                      dd| j        d| j        dd| j        z  g          }|                     |          }d|                                v rt          d          d S # t          $ r}t          dt          |          z             t          d	| j	        z             t          j                            | j	                  rt          j        | j	                  D ]z}t          j                            | j	        |          }t          j                            |          rd
d l}|                    |           `t          j        |           uY d }~d S Y d }~d S d }~ww xY w)N	smbclient///-czdeltree %s/*NT_STATUS_OBJECT_PATH_NOT_FOUNDz'deltree: failed without setting errcodezremote remove failed: %sz2falling back to removing contents of local dir: %sr   )build_test_cmdr   r"   r!   check_outputdecode	Exceptionprintstrr%   r   r#   existslistdirr$   isdirshutilrmtreeunlink)r&   smbclient_argsouteentryfullpathr9   s          r(   tearDownz!SmbCaclsBlockboxTestBase.tearDown)   s   	,
 "00DKKKY]YcYc?dfjlz  ~B  ~J  mJ  ?K  L  LN##N33C0CJJLL@@ IJJJ A@ 
	, 
	, 
	,,s1vv5666FUVVVw~~dl++ ,Z55 , ,E!w||DL%@@Hw}}X.. ,%h////	(++++, , , , , ,, , , , , ,	
	,s   A+A/ /
E29C(E--E2c                     |                                 D ]+\  }}t          |d|dd           t          d           ,d S )N=, )enditemsr4   )r&   acekeyvalues       r(   ace_dumpz!SmbCaclsBlockboxTestBase.ace_dump?   sT    ))++ 	 	JCsssEEE*33332JJJJ	 	r)   c                     |                                 D ]U\  }}|dk    r||vrt          d|z              dS |||         k    r$t          d|d|d|d||                     dS VdS )Nuser_domzno entry for: %sFz
mismatch: :z != TrG   )r&   leftrightrJ   rK   s        r(   ace_cmpz SmbCaclsBlockboxTestBase.ace_cmpD   s    **,, 	 	JCj  %<<)C/000uuc
""SSS%%%eCjjQRRRuu # tr)   c                    |                     d          }i }|d         dk    rt          d|z            d|d         v r%|d                              d          \  |d<   |d<   n:d	|d         v r%|d                              d	          \  |d<   |d<   n|d         |d<   |d
                              d	          \  |d<   |d<   |d<   |S )NrO   r   ACLzinvalid ace string:%\   rN   r   r-      typeinheritpermissions)splitr3   )r&   rI   partsresults       r(   ace_parse_strz&SmbCaclsBlockboxTestBase.ace_parse_strP   s    		#8u2S89995816q1E1E.F:vE!H__16q1D1D.F:v"1XF6NCH8>>RUCVCV@vy)6-+@r)   c                 X    |d| j         d| j        g}|                    |           |S )Nz-Uz%)r   r   extend)r&   cmdargss      r(   r0   z'SmbCaclsBlockboxTestBase.build_test_cmd^   s4    s$)))T[[9:

4
r)   c                     d| j         d| j        g}|                    |           |                     |                     d|                    }|S )Nr,   r-   r   )r   r"   r`   r1   r0   )r&   rb   
cacls_argsr=   s       r(   	smb_caclsz"SmbCaclsBlockboxTestBase.smb_caclsc   sW     #';;;

;<
$ 3 3J
 K KLL
r)   c           
         |                                  5 }t          j                            | j        |          }t          j                            |          \  }}d}t          |          r| j                            ddd          }|                    t          j                  D ]K}|dz   |z   }| 	                    dd| j
        d| j        dd|z  g          }|                     |           L| 	                    dd| j
        d| j        dd	|d
|g          }|                     |          }	d d d            n# 1 swxY w Y   |S )NrE   r-   rU   
   r+   r,   r.   zmkdir %szput   )mktempr   r#   r$   r!   r[   lenreplacesepr0   r   r"   r1   )
r&   
remotepathtmpfilefilepathr%   filenameremote_pathsegr<   r=   s
             r(   create_remote_test_filez0SmbCaclsBlockboxTestBase.create_remote_test_filei   s   [[]] 	4gw||DL*==H"$'--
";";WhK7|| 6"l223bAA"==00 6 6C"-"4s":K%)%8%8TXT_T_T_aeakakGlnrt~  BM  uM  GN  &O  &ON%%n5555!00DKKKY]YcYc?dfjfj  }D  }D  }D  FN  FN  mO  ?P  Q  QN##N33C	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 s   D$EE	E	c                 f   |                      dd| j        d| j        |g          }	 |                     |          }n4# t          $ r'}t          t          |                     Y d }~dS d }~ww xY w|                                }g }|                    d          D ],}|	                    d          r|
                    |           -|D ]}	|                     |	          }
|d         |
d         k    r|d         |
d         k    rt          d	|
d         z             |                     |
|          sIt          d
           |                     |
           t          d           |                     |           t          d|
d         z             |                     |            dS dS )Nr   r,   r-   F
rT   r   rX   zfound ACE for %szdifferences between file ACE: zand expected ACE: zmatched ACE for %sT)r0   r   r"   r1   r   r4   r5   r2   r[   
startswithappendr^   rR   rL   )r&   rm   rI   smbcacls_argsoutputr>   out_straceslineaclacl_aces              r(   file_ace_checkz'SmbCaclsBlockboxTestBase.file_ace_checky   s   ++JJ*.+++tzzB&() )	&&}55FF# 	 	 	#a&&MMM55555	 --//MM$'' 	" 	"Du%% "D!!! 	  	 C((--G6{gfo--#f+'&/2Q2Q)GFO;<<<||GS11  ;<<<MM'***/000MM#&&&&/'&/ABBBMM#&&&44us   A   
A1
A,,A1)__name__
__module____qualname__r   rA   rL   rR   r^   r0   re   rs   r   __classcell__)r'   s   @r(   r   r      s        K K K K K, , ,,  

 
 
    
           r)   r   )
samba.testsr   r   samba.samba3r   r   samba.credentialsr   r   r    r)   r(   <module>r      s   $ ? > > > > > > > ) ) ) ) ) ) ) ) ) ) ) ) 				{ { { { {/ { { { { {r)   