
    bw4                       d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmc mZ d dlmZ d dl m!Z! e j"        #                    e j"        $                    e j"        %                    e&          d                    Z'ddZ( G d de          Z)dS )    N)SambaToolCmdTest)
get_gpo_dnget_gpo_info)LoadParm)
stage_fileunstage_file)preg)ndr_pack
ndr_unpack)
get_string)ConfigParser)StringIO)NamedTemporaryFile)sleepz../../../../..TFc                    t           j                            |           r|rst          |                                           }|                                 t          |                                           }|                                 ||k    r| S nFt          |                                           t          |                                          k    r| S dS | g}|g}|r|                                }	|                                }
t          j        |	          }t          j        |
          }|                                 |                                 ||k    r|S |D ]}t           j        	                    |	|          }t           j        	                    |
|          }t           j        
                    |          r+|                    |           |                    |           |                    d          r|s|                    d          rL|rJt          |d                                          t          |d                                          k    r|c S |dS )zUse this function to determine if the GPO backup differs from another.

    xml=True checks whether any xml files are equal
    binary=True checks whether any .SAMBABACKUP files are equal
    Nz.xmlz.SAMBABACKUPrb)ospathisfileopen	readlinessortreadpoplistdirjoinisdirappendendswith)path1path2binaryxml	sortlinesfile1file2l_dirsr_dirsl_dirr_dirdirlistdirlist_otherel_namer_names                   </usr/lib/python3/dist-packages/samba/tests/samba_tool/gpo.pyhas_differencer1   (   s4    
w~~e  		KK))++EJJLLLKK))++EJJLLL~~  %[[4;;#3#3#5#555LtYFYF
 &



*U##
5))m##N 	& 	&AW\\%++FW\\%++Fw}}V$$ &f%%%f%%%%OOF++ & &OON33&8>&FD))..00D4F4F4K4K4M4MMM%/  &2 4    c                        e Zd ZdZdZdZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z% fd$Z& fd%Z' xZ(S )&GpoCmdTestCasez%Tests for samba-tool time subcommandstestgpoz&{1E1DC8EA-390C-4800-B327-98B56A0AEA5D}c                     |                      ddddt          j        d         z            \  }}}|                     |||d           dS )z?Run gpo list against the server and make sure it looks accurategpolistall-H	ldap://%sSERVERz%Ensuring gpo listall ran successfullyN	runsubcmdr   environassertCmdSuccessselfresultouterrs       r0   test_gpo_listzGpoCmdTestCase.test_gpo_listb   sP    !^^E9dKRTR\]eRfDfggcfc30WXXXXXr2   c           	          |                      dddddt          j        d         z            \  }}}|                     |d           dS )	zfRun against a non-existent GPO, and make sure it fails (this hard-coded UUID is very unlikely to existr7   fetchz$c25cac17-a02a-4151-835d-fae17446ee43r9   r:   r;   zcheck for result codeN)r=   r   r>   assertCmdFailr@   s       r0   test_fetchfailzGpoCmdTestCase.test_fetchfailg   sg    !^^E7<bdhjuxz  yC  DL  yM  kM  N  Nc6#:;;;;;r2   c           	         |                      dd| j        ddt          j        d         z  d| j                  \  }}}|                     |||d           t          j        t          j        	                    | j        d                     d	S )
z/Run against a real GPO, and make sure it passesr7   rG   r9   r:   r;   --tmpdir!Ensuring gpo fetched successfullypolicyN)
r=   gpo_guidr   r>   tempdirr?   shutilrmtreer   r   r@   s       r0   
test_fetchzGpoCmdTestCase.test_fetchl   s    !^^E7DM4Q\_a_ijr_sQsu  BF  BN  O  Ocfc30STTTbgll4<::;;;;;r2   c           	          |                      dd| j        ddt          j        d         z            \  }}}|                     |||d           dS )(Show a real GPO, and make sure it passesr7   showr9   r:   r;   rL   Nr=   rN   r   r>   r?   r@   s       r0   	test_showzGpoCmdTestCase.test_showr   sU    !^^E64=$P[^`^hiq^rPrsscfc30STTTTTr2   c                     |                      dd| j        ddt          j        d         z  dt          j        d         dt          j        d	                   \  }}}|                     |||d
           dS )rT   r7   rU   r9   r:   r;   -UUSERNAME%PASSWORDrL   NrV   r@   s       r0   test_show_as_adminz!GpoCmdTestCase.test_show_as_adminw   s    !^^E64=$P[^`^hiq^rPrPr  CE  CM  NX  CY  CY  CY  []  [e  fp  [q  [q  ur  s  scfc30STTTTTr2   c                     |                      ddddt          j        d         z  dt          j        d         dt          j        d	                   \  }}}|                     |||d
           dS )z9Check all the GPOs on the remote server have correct ACLsr7   aclcheckr9   r:   r;   rY   rZ   r[   r\   z!Ensuring gpo checked successfullyNr<   r@   s       r0   test_aclcheckzGpoCmdTestCase.test_aclcheck|   s    !^^E:t[SUS]^fSgEgEgwy  xB  CM  xN  xN  xN  PR  PZ  [e  Pf  Pf  jg  h  hcfc30STTTTTr2   c                    |                      ddt          j        d         z  dt          j        d         dt          j        d                   | _        d| j                                        z  }| j                            |d	d
           |                     dd|ddt          j        d         z  dt          j        d         dt          j        d                   \  }}}|                     |||d           t          j	                    }t          j
        | j        |          |_        t          j        dt          j        d          |d<   | j                            |           |                     dd|ddt          j        d         z  dt          j        d         dt          j        d                   \  }}}|                     |||d           | j                            |           d S )Nr9   r:   	DC_SERVERrY   DC_USERNAMEr[   DC_PASSWORDzOU=gpo_test_link,%sorganizationalUnit)dnobjectClassr7   getlinkr;   rZ   r\   z&Ensuring gpo link fetched successfully gPLink)getSamDBr   r>   samdbget_default_basednaddr=   r?   ldbMessageDnrf   MessageElementFLAG_MOD_REPLACEmodifydelete)rA   container_dnrB   rC   rD   ms         r0   test_getlink_emptyz!GpoCmdTestCase.test_getlink_empty   s   ]]4rz+7N)N)N13M1J1J1J13M1J1J$LM M
 -tz/L/L/N/NN
/
 
 	 	 	
 "^^E9l,0+
8@T2T2T:<*Z:P:P:P:<*Z:P:P-RS Sc 	fc30XYYY KMMvdj,//(c.BHMM(
!!^^E9l,0+
8@T2T2T:<*Z:P:P:P:<*Z:P:P-RS Sc 	fc30XYYY
,'''''r2   c                    t           j                            | j        d| j                  }t           j                            | j        d          }t          j        |           t           j                            | j        d          }t          j        |           d}	 |                     ddd|dd	t           j        d
         z  d|d| j	        dt           j        d         dt           j        d         d          \  }}}d|
                    d          d         
                    d          d         z  }|                     dd|dd	t           j        d
         z  d|          \  }}}|                     |||d           |                     t          t           j                            |d|          |dd                     |ro|                     dd|dd	t           j        d
         z  dt           j        d         dt           j        d                   \  }}}|                     |||d           t          j        |           t          j        |           dS # |ro|                     dd|dd	t           j        d
         z  dt           j        d         dt           j        d                   \  }}}|                     |||d           t          j        |           t          j        |           w xY w)z<Restore from a static backup and compare the binary contentsrM   tempnewNr7   restoreBACKUP_RESTORE1r9   r:   r;   rK   
--entitiesrY   rZ   r[   r\   --restore-metadata{%s}{   }r   backuprL   TFr"   r#   del!Ensuring gpo deleted successfullyr   r   r   backup_pathbackup_gpo_guidrO   mkdirr=   r>   entity_filesplitr?   assertIsNoner1   rP   rQ   )rA   static_path	temp_pathnew_pathrN   rB   rC   rD   s           r0   "test_backup_restore_compare_binaryz1GpoCmdTestCase.test_backup_restore_compare_binary   s,    gll4#3X#'#79 9 GLLv66	
7<<e44
$	$!%yBS0;04k02
80D7EFP09<040@0@13J1G1G1G13J1G1GCI 1E"F "FVS# 		#q 1 7 7 < <Q ??H!%x04k02
80D7E0:H"F "FVS#
 !!&#s4WXXX nRW\\(H:B.D .D-8168 8 8 9 9 9
  ]%)^^E5(48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\M)$$$M(#####  ]%)^^E5(48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\M)$$$M(####s   !D(I$ $BK?c                 
   t           j                            | j        d| j                  }t           j                            | j        d          }t          j        |           t           j                            | j        d          }t          j        |           d}d}d}	 |                     ddd|dd	t           j        d
         z  d|d| j	        dt           j        d         dt           j        d         d          \  }}}	d|
                    d          d         
                    d          d         z  }|}|                     dd|dd	t           j        d
         z  d|d          \  }}}	|                     |||	d           |                     dddt           j                            |d|          dd	t           j        d
         z  d|dt           j        d         dt           j        d         d
  
        \  }}}	d|
                    d          d         
                    d          d         z  }|}|                     |||	d           |                     dd|dd	t           j        d
         z  d|          \  }}}	|                     t          t           j                            |d|          t           j                            |d|          dd                     |ro|                     dd|dd	t           j        d
         z  dt           j        d         dt           j        d                   \  }}}	|                     |||	d            |ro|                     dd|dd	t           j        d
         z  dt           j        d         dt           j        d                   \  }}}	|                     |||	d            t          j        |           t          j        |           dS # |ro|                     dd|dd	t           j        d
         z  dt           j        d         dt           j        d                   \  }}}	|                     |||	d            |ro|                     dd|dd	t           j        d
         z  dt           j        d         dt           j        d                   \  }}}	|                     |||	d            t          j        |           t          j        |           w xY w)!zRestore from a static backup (and use no entity file, resulting in
        copy-restore fallback), and compare the binary contentsrM   rz   r{   Nr7   r|   r}   r9   r:   r;   rK   r~   rY   rZ   r[   r\   r   r   r   r   r   r   r   --generalizerL   BACKUP_RESTORE2"Ensuring gpo restored successfullyTFr   r   r   r   
rA   r   r   r   rN   	gpo_guid1	gpo_guid2rB   rC   rD   s
             r0   .test_backup_restore_no_entities_compare_binaryz=GpoCmdTestCase.test_backup_restore_no_entities_compare_binary   s{    gll4#3X#'#79 9 GLLv66	
7<<e44
		E	$!%yBS0;04k02
80D7EFP09<040@0@13J1G1G1G13J1G1GCI 1E"F "FVS# 		#q 1 7 7 < <Q ??H I "&x04k02
80D7E0:H0>	"@ "@VS# !!&#s4WXXX "&yBS02XxQZ0[0[04k02
80D7EFP09	13J1G1G1G13J1G1G<I 1E"F "FVS# 		#q 1 7 7 < <Q ??H I!!&#s4XYYY!%x04k02
80D7E0:H"F "FVS# nRW\\(H:C.E .E-/W\\(H:C.E .E48e	E E E F F F  ]%)^^E5)48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\ ]%)^^E5)48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\M)$$$M(#####'  ]%)^^E5)48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\ ]%)^^E5)48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\M)$$$M(####s   %IO8 8DTc                 
   t           j                            | j        d| j                  }t           j                            | j        d          }t          j        |           t           j                            | j        d          }t          j        |           d}d}d}	 |                     ddd|dd	t           j        d
         z  d|d| j	        dt           j        d         dt           j        d         d          \  }}}	d|
                    d          d         
                    d          d         z  }|}|                     dd|dd	t           j        d
         z  d|          \  }}}	|                     |||	d           |                     dddt           j                            |d|          dd	t           j        d
         z  d|d| j	        dt           j        d         dt           j        d         d          \  }}}	d|
                    d          d         
                    d          d         z  }|}|                     |||	d           |                     dd|dd	t           j        d
         z  d|          \  }}}	|                     t          t           j                            |d|          t           j                            |d|          dd                     |ro|                     dd|dd	t           j        d
         z  dt           j        d         dt           j        d                   \  }}}	|                     |||	d           |ro|                     dd|dd	t           j        d
         z  dt           j        d         dt           j        d                   \  }}}	|                     |||	d           t          j        |           t          j        |           dS # |ro|                     dd|dd	t           j        d
         z  dt           j        d         dt           j        d                   \  }}}	|                     |||	d           |ro|                     dd|dd	t           j        d
         z  dt           j        d         dt           j        d                   \  }}}	|                     |||	d           t          j        |           t          j        |           w xY w)z6Restore from a static backup and backup to compare XMLrM   rz   r{   Nr7   r|   r}   r9   r:   r;   rK   r~   rY   rZ   r[   r\   r   r   r   r   r   r   r   rL   r   r   Tr   r   r   r   r   s
             r0   &test_backup_restore_backup_compare_XMLz5GpoCmdTestCase.test_backup_restore_backup_compare_XML,  s|   gll4#3X#'#79 9 GLLv66	
7<<e44
		C	$!%yBS0;04k02
80D7EFP09<040@0@13J1G1G1G13J1G1GCI 1E"F "FVS# 		#q 1 7 7 < <Q ??H I!%x04k02
80D7E0:H"F "FVS#
 !!&#s4WXXX!%yBS02XxQZ0[0[04k02
80D7EFP09<040@0@13J1G1G1G13J1G1GCI 1E"F "FVS# 		#q 1 7 7 < <Q ??H I!!&#s4XYYY!%x04k02
80D7E0:H"F "FVS# nRW\\(H:C.E .E-/W\\(H:C.E .E48d	D D D E E E  ]%)^^E5)48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\ ]%)^^E5)48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\M)$$$M(#####'  ]%)^^E5)48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\ ]%)^^E5)48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\M)$$$M(####s   %IO> >DT
c                 t   t           j                            | j        d| j                  }t           j                            | j        d          }t          j        |           t           j                            | j        d          }t          j        |           t           j                            |d          }t          |d          5 }|                    d           ddd           n# 1 swxY w Y   t           j                            |d          }d}	 | 	                    dd	d
|ddt           j
        d         z  d|d|dt           j
        d         dt           j
        d         d          \  }}	}
|                     ||	|
d           d|	                    d          d                             d          d         z  }| 	                    dd|ddt           j
        d         z  d|dd|
  
        \  }}	}
|                     ||	|
d           |                     t          ||d                     |                     t          t           j                            |d|          |d d!                     |ro| 	                    dd"|ddt           j
        d         z  dt           j
        d         dt           j
        d                   \  }}	}
|                     ||	|
d#           t          j        |           t          j        |           dS # |ro| 	                    dd"|ddt           j
        d         z  dt           j
        d         dt           j
        d                   \  }}	}
|                     ||	|
d#           t          j        |           t          j        |           w xY w)$zfRestore from a static backup with different entities, generalize it
        again, and compare the XMLrM   rz   r{   entitieswbsD  <!ENTITY SAMBA__NETWORK_PATH__82419dafed126a07d6b96c66fc943735__ "\\samdom.example.com">
<!ENTITY SAMBA__NETWORK_PATH__0484cd41ded45a0728333a9c5e5ef619__ "\\samdom">
<!ENTITY SAMBA____SDDL_ACL____4ce8277be3f630300cbcf80a80e21cf4__ "D:PAR(A;CI;KA;;;BA)(A;CIIO;KA;;;CO)(A;CI;KA;;;SY)(A;CI;KR;;;S-1-16-0)">
<!ENTITY SAMBA____USER_ID_____d0970f5a1e19cb803f916c203d5c39c4__ "*S-1-5-113">
<!ENTITY SAMBA____USER_ID_____7b7bc2512ee1fedcd76bdc68926d4f7b__ "Administrator">
<!ENTITY SAMBA____USER_ID_____a3069f5a7a6530293ad8df6abd32af3d__ "Foobaz">
<!ENTITY SAMBA____USER_ID_____fdf60b2473b319c8c341de5f62479a7d__ "*S-1-5-32-545">
<!ENTITY SAMBA____USER_ID_____adb831a7fdd83dd1e2a309ce7591dff8__ "Guest">
<!ENTITY SAMBA____USER_ID_____9fa835214b4fc8b6102c991f7d97c2f8__ "*S-1-5-32-547">
<!ENTITY SAMBA____USER_ID_____bf8caafa94a19a6262bad2e8b6d4bce6__ "*S-1-5-32-546">
<!ENTITY SAMBA____USER_ID_____a45da96d0bf6575970f2d27af22be28a__ "System">
<!ENTITY SAMBA____USER_ID_____171d33a63ebd67f856552940ed491ad3__ "s-1-5-32-545">
<!ENTITY SAMBA____USER_ID_____7140932fff16ce85cc64d3caab588d0d__ "s-1-1-0">
Nr7   r|   r}   r9   r:   r;   rK   r~   rY   rZ   r[   r\   r   r   r   r   r   r   r   r   r   rL   T)r$   Fr   r   r   )r   r   r   r   r   rO   r   r   writer=   r>   r?   r   r   r1   rP   rQ   )rA   r   r   r   alt_entity_filefgen_entity_filerN   rB   rC   rD   s              r0   test_backup_restore_generalizez-GpoCmdTestCase.test_backup_restore_generalize  s'    gll4#3X#'#79 9 GLLv66	
7<<e44
',,x<</4(( 	AGG    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  ',,y*==-	$!%yBS0;04k02
80D7EFP09<0?13J1G1G1G13J1G1GBI 1E"F "FVS# !!&#s4XYYY		#q 1 7 7 < <Q ??H!%x04k02
80D7E0:H0>0?"A "AVS# !!&#s4WXXX n_-<7;= = = > > >
 nRW\\(H:B.D .D-8157 7 7 8 8 8
  ]%)^^E5(48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\M)$$$M(#####  ]%)^^E5(48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\M)$$$M(####s    C00C47C4E#L BN7c                 	   |                      ddt          j        d         z  dt          j        d         dt          j        d                   | _        t          j                            | j        d          }t          j        |           d	d
d}t          | j        | j	                  }|D ]a}||         }t          j                    }||_        t          j        |t          j        |          ||<   | j                            |           b	 |                     dd| j	        ddt          j        d         z  d|          \  }}}	|                     |||	d           d|                    d          d                             d          d         z  }
t          j                            |d|
          }|                     ddd|ddt          j        d         z  d| j        dt          j        d         dt          j        d         d
  
        \  }}}	|                     |||	d           d|                    d          d                             d          d         z  }t'          | j        |          }|                     t+          |          d           |D ]Z}|                     ||d         v            |                     ||         t/          |d         |         d                              [	 |ro|                     dd|ddt          j        d         z  dt          j        d         dt          j        d                   \  }}}	|                     |||	d           t1          j        t          j                            | j        d                     t1          j        t          j                            | j        d                     d S # |ro|                     dd|ddt          j        d         z  dt          j        d         dt          j        d                   \  }}}	|                     |||	d           t1          j        t          j                            | j        d                     t1          j        t          j                            | j        d                     w xY w)Nr9   r:   rb   rY   rc   r[   rd   rz   z[{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{53D6AB1B-2488-11D1-A28C-00C04FB94F17}][{827D319E-6EAC-11D2-A4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}][{B1BE8D72-6EAC-11D2-A4EA-00C04F79F83A}{53D6AB1B-2488-11D1-A28C-00C04FB94F17}]z[{3060E8D0-7020-11D2-842D-00C04FA372D4}{3060E8CE-7020-11D2-842D-00C04FA372D4}][{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{0F6B957E-509E-11D1-A7CC-0000F87571E3}])gPCMachineExtensionNamesgPCUserExtensionNamesr7   r   r;   rK   rL   r   r   r   r   r   rM   r|   RESTORE_EXTrZ   r\   r   r   r   r   )rk   r   r>   rl   r   r   rO   r   r   rN   ro   rp   rf   rr   rs   rt   r=   r?   r   r   assertEquallen
assertTruestrrP   rQ   )rA   r   
extensionsgpo_dnextdatarw   rB   rC   rD   guidrN   msgs                r0   %test_backup_with_extension_attributesz4GpoCmdTestCase.test_backup_with_extension_attributes  s   ]]4rz+7N)N)N13M1J1J1J13M1J1J$LM M
 GLLv66	
 )U &D
 

 DJ66 	! 	!Cc?DAAD'c.BCHHAcFJa    +	>!%x04k02
80D7E0:I"G "GVS#
 !!&#s4WXXXCIIcNN1-33C88;;DY$??I!%y-0904k02
80D7EFP0413J1G1G1G13J1G1G?I 1E"F "FVS# !!&#s4XYYY		#q 1 7 7 < <Q ??Htz844CSXXq)))! G Gs1v...  C#c!fSk!n2E2EFFFFG
  ]%)^^E5(48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\M"',,t|X>>???M"',,t|V<<=====  ]%)^^E5(48+46Jx4H;I ;I 68Z
5K5K5K57Z
5K5K5M&N &N"c %%fc38[\\\M"',,t|X>>???M"',,t|V<<====s   G+O   C!Sc                 z   t                      }|                    t          j        d                    |                    dd          }t          j                            |t          j        d                                         dd          }|                     ddd	d
t          j        d         z  dt          j                            t          d          z  dt          j        d         dt          j        d                   \  }}}| 
                    |||d           |                     t          j                            |          d           |                     t          j                            t          j                            |d                    d           t          j        |           d S )NSERVERCONFFILEr   sysvolREALMPoliciesPolicyDefinitionsr7   admxloadr9   r:   r;   z--admx-dir=%szlibgpo/admxrY   rZ   r[   r\   z Filling PolicyDefinitions failedz!PolicyDefinitions was not createdz
samba.admx)r   loadr   r>   getr   r   lowerr=   source_pathr?   r   existsrP   rQ   )rA   lp
local_path	admx_pathrB   rC   rD   s          r0   test_admx_loadzGpoCmdTestCase.test_admx_load  s   ZZ

+,---VVFH--
GLLRZ-@-F-F-H-H!+-@B B	!^^E:,0+,.Jx,@3A,;,.GLL9F-H -H-H -H .0Z
-C-C-C,.Jz,B,B-DE Ec 	fc3@	B 	B 	By11;	= 	= 	=rw||I|'L'LMM:	< 	< 	<i     r2   c                 6  	 t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        d          }d	| 	                    dd	| j        	d
ddt          j        d         z  dt          j        d         dt          j        d                   \  }}}| 
                    |||d           |                     t          j                            |          d           t          t          j        t!          |d                                                    }t%          	fd|j        D                       }|                     |d           | 	                    dd	| j        	ddt          j        d         z  dt          j        d         dt          j        d                   \  }}}| 
                    |||d           t          t          j        t!          |d                                                    }t%          	fd|j        D                        }|                     |d           d S )Nr   r   r   realmr   Machine/Registry.polzapply group policiesr7   )managesmb_confsetyesr9   r:   r;   rY   rZ   r[   r\   z"Failed to set apply group policieszThe Registry.pol does not existr   c                 V    g | ]%}t          |j                  k    o
|j        d k    &S r   r   	valuenamer   .0r-   rM   s     r0   
<listcomp>z4GpoCmdTestCase.test_smb_conf_set.<locals>.<listcomp>@  sC     ' ' ' ak**f4D1 ' ' 'r2   zThe sudoers entry was not addedz$Failed to unset apply group policiesc                 V    g | ]%}t          |j                  k    o
|j        d k    &S r   r   r   s     r0   r   z4GpoCmdTestCase.test_smb_conf_set.<locals>.<listcomp>P  sC     ' ' ' "!+..&8HQVq[ ' ' 'r2   z!The sudoers entry was not removed)r   r   r   r>   r   r   r   r   rN   runsublevelcmdr?   r   r   r   r	   filer   r   anyentries)
rA   r   r   reg_polrB   rC   rD   reg_dataretrM   s
            @r0   test_smb_conf_setz GpoCmdTestCase.test_smb_conf_set*  s   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJ#}.DF F (!00 989=1715{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc3B	D 	D 	D 	w//9	; 	; 	;digt)<)<)A)A)C)CDD ' ' ' '%' ' ' ( (>??? "00 989=17{13H1E@F @F 35*Z2H2H2H13J1G1G2I	J Jc 	fc3D	F 	F 	F digt)<)<)A)A)C)CDD ' ' ' '%' ' ' ( ( (@AAAAAr2   c                 T   t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        d          }t          j
                    }t          j                    }d|_        d|_        d	|_        d
|_        d
|_        |g|_        t%          |t'          |                    }|                     |d|z             |                     dd| j        ddt          j        d         z  dt          j        d         dt          j        d                   \  }}}	|                     d|j        z  |d           t/          |           d S )Nr   r   r   r   r   r   s    Software\Policies\Samba\smb_confs   apply group policies   r   Could not create the target %sr7   )r   r   listr9   r:   r;   rY   rZ   r[   r\   z	%s = TrueThe test entry was not found!)r   r   r   r>   r   r   r   r   rN   r	   r   entrykeynamer   typer   num_entriesr   r   r
   r   r   assertInr   )
rA   r   r   r   stager-   r   rB   rC   rD   s
             r0   test_smb_conf_listz!GpoCmdTestCase.test_smb_conf_listT  s   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJ#}.DF F 	JLL:	-(5//22=GHHH!00 99:>-15{13H1E8F 8F 35*Z2H2H2H13J1G1G2I	J Jc 	kAK/6UVVV 	Wr2   c                 X   t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        d          }| 	                    dd| j        d	d
ddt          j        d         z  dt          j        d         dt          j        d                   \  }}}| 
                    |||d           |                     t          j                            |          d|z             t          |d                                          }|                     d|d           | 	                    dd| j        d	ddt          j        d         z  dt          j        d         dt          j        d                   \  }}}| 
                    |||d           t          |d                                          }|                     d|d           d S )Nr   r   r   r   r   z0Machine/Microsoft/Windows NT/SecEdit/GptTmpl.infr7   r   securityr   MaxTicketAge10r9   r:   r;   rY   rZ   r[   r\   Failed to set MaxTicketAgez%s was not createdrMaxTicketAge = 10r   Failed to unset MaxTicketAgeThe test entry was still found!)r   r   r   r>   r   r   r   r   rN   r   r?   r   r   r   r   r   assertNotIn)rA   r   r   inf_polrB   rC   rD   inf_pol_contentss           r0   test_security_setz GpoCmdTestCase.test_security_sets  sI   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJMMO O "00 989=1?15{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc3:	< 	< 	<w//,w6	8 	8 	8--2244)+;5	7 	7 	7 "00 989=1?15{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc3<	> 	> 	>--2244,.>7	9 	9 	9 	9 	9r2   c                    |                      dd| j        ddddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     |||d           |                      dd| j        ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     d|d           |                      dd| j        dddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     |||d           d S )Nr7   r   r   r   r9   r:   r;   rY   rZ   r[   r\   r   )r   r   r   r   r   r   )r   rN   r   r>   r?   r   r@   s       r0   test_security_listz!GpoCmdTestCase.test_security_list  s   !00 989=1?15{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc3:	< 	< 	< "00 99:>-15{13H1E8F 8F 35*Z2H2H2H13J1G1G2I	J Jc 	)30OPPP!00 989=1?15{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc3<	> 	> 	> 	> 	>r2   c                    t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        dd          }| 	                    dd	| j        d
dddt          j        d         z  dt          j        d         dt          j        d                   \  }}}| 
                    |||d           | 	                    dd	| j        d
ddt          j        d         z  dt          j        d         dt          j        d                   \  }}}| 
                    |||d           t          d           }|                    |           |                     |                    d                     d S )Nr   r   r   r   r   zMachine/Microsoft/Windows NTzSecEdit/GptTmpl.infr7   r   r   r   r9   r:   r;   rY   rZ   r[   r\   r   r   )interpolationzKerberos Policy)r   r   r   r>   r   r   r   r   rN   r   r?   r   r   assertFalsehas_section)rA   r   r   gpt_infrB   rC   rD   inf_datas           r0   test_security_nonempty_sectionsz.GpoCmdTestCase.test_security_nonempty_sections  s   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJ#}.L46 6 "00 989=1?15{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc3:	< 	< 	< "00 989=1?15{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc3<	> 	> 	>  d333g--.?@@AAAAAr2   c                    |                      dd| j        ddddddt          j        d         z  d	t          j        d
         dt          j        d         
  
        \  }}}|                     |||d           d}|                      dd| j        ddt          j        d         z  d	t          j        d
         dt          j        d                   \  }}}|                     ||d           |                      dd| j        |ddt          j        d         z  d	t          j        d
         dt          j        d                   \  }}}|                     |||d           |                      dd| j        ddt          j        d         z  d	t          j        d
         dt          j        d                   \  }}}|                     ||d           d S )Nr7   )r   sudoersrn   ALLfakeufakegr9   r:   r;   rY   rZ   r[   r\   zSudoers add failedz$fakeu,fakeg% ALL=(ALL) NOPASSWD: ALLr   r   r   r   r   r   removeSudoers remove failedr   r   rN   r   r>   r?   r   r   )rA   rB   rC   rD   sudoers        r0   test_sudoers_addzGpoCmdTestCase.test_sudoers_add  s2   !00 9C15u18'41<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30DEEE7!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc#BCCC!00 9F1515{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30GHHH!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	&GHHHHHr2   c                 
   t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        dd          }t          j
        d          }t          j        |d	          }t          j        |d
          }d|_        t          j        |d          }d|_        t          j        |d          }d|_        t          j        |d          }	d|	_        t          j        |d          }
t          j        |
d          }d|_        t          j        |
d          }t          j        |d          }d|_        t          j        |d          }d|_        t          j        |d          }t          j        |d          }d|_        d|j        d<   t          j        |
d          }t          j        |d          }d|_        t          j        |d          }d|_        t          j        |
d          }t          j        |d          }d|_        t          j        |d          }d|_        t          j        |d          }t          j        |d          }d|_        d|j        d<   t          j        |d          }t          j        |d          }d|_        d|j        d<   t          |t          j        |d                     }|                     |d!|z             d"}d#}d$}|                     d%d&| j        d'd(t          j        d)         z  d*t          j        d+         d,t          j        d-                   \  }}}|                     |||d.           |                     ||d/           |                     ||d/           |                     ||d/           |                     d%d0| j        |d'd(t          j        d)         z  d*t          j        d+         d,t          j        d-                   \  }}}|                     |||d1           |                     d%d0| j        |d'd(t          j        d)         z  d*t          j        d+         d,t          j        d-                   \  }}}|                     |||d1           |                     d%d&| j        d'd(t          j        d)         z  d*t          j        d+         d,t          j        d-                   \  }}}|                     ||d2           |                     ||d2           t+          |           d S )3Nr   r   r   r   r   zMachine/VGP/VTLA/Sudoz!SudoersConfiguration/manifest.xml	vgppolicypolicysettingversion1namezSudo Policydescriptionz!Sudoers File Configuration Policy
apply_modemerger   load_plugintruesudoers_entrycommandr   userlistelement	principalr  r   fakeu2fakeg2grouputf-8r   zfakeu ALL=(ALL) NOPASSWD: ALLz&fakeu2,fakeg2% ALL=(ALL) NOPASSWD: ALLzALL ALL=(ALL) NOPASSWD: ALLr7   r  r9   r:   r;   rY   rZ   r[   r\   zSudoers list failedr   r  r  r   )r   r   r   r>   r   r   r   r   rN   etreeElement
SubElementtextattribr   tostringr   r   r?   r   r   r   )rA   r   r   vgp_xmlr   r  pvr  r  r  r   r  r  r  r  r  r  r  r   r  sudoer2sudoer_no_principalrB   rC   rD   s                            r0   test_sudoers_listz GpoCmdTestCase.test_sudoers_list  s   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJ#}.EBD D k**(@@mY77v66!	&}mDD>%m\BB
!
v66&t];;!(??"=)<<v66	&}mDD$[+>>	 	#)	 (??"=)<<v66	(??"=)<<v66	&}mDD$[+>>	!	#)	 &}mDD k::
&V%."@"@AA=GHHH0:;!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30EFFFfc#BCCCgs$CDDD)35	7 	7 	7 "00 9F1515{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30GHHH!00 9F151D15{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30GHHH!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	#'HIII,c7	9 	9 	9 	Wr2   c                 V   t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        dd          }t          j
        d          }t          j        |d	          }t          j        |d
          }d|_        t          j        |d          }d|_        t          j        |d          }d|_        t          j        |d          }	d|	_        t          j        |d          }
t          j        |
d          }t          j        |d          }t          j                            | j        d          |_        t          j        |d          }t          j                            | j        d          |_        t          |t          j        |d                    }|                     |d|z             d|j        d|j        }|                     dd| j        ddt          j        d          z  d!t          j        d"         d#t          j        d$                   \  }}}|                     ||d%           t'          |           d S )&Nr   r   r   r   r   Machine/VGP/VTLA/UnixzSymlink/manifest.xmlr  r  r  r  r  zSymlink Policyr  zSpecifies symbolic link datar  r  r   file_propertiessourcetest.sourcetargettest.targetr  r   ln -s ri   r7   r   symlinkr   r9   r:   r;   rY   rZ   r[   r\   r   )r   r   r   r>   r   r   r   r   rN   r  r  r   r!  rO   r   r#  r   r   r   r   )rA   r   r   r$  r   r  r%  r  r  r  r   r+  r,  r.  r   r2  rB   rC   rD   s                      r0   test_symlink_listz GpoCmdTestCase.test_symlink_listq  s]   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJ#}.E57 7 k**(@@mY77v66$	&}mDD9%m\BB
!
v66*41BCC!/8<<gll4<??!/8<<gll4<??%."@"@AA=GHHHH#);;;<!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	gs$CDDD 	Wr2   c                 N   t           j                            | j        d          }t           j                            | j        d          }d|d|}|                     dd| j        ||ddt           j        d	         z  d
t           j        d         dt           j        d                   \  }}}|                     |||d           |                     dd| j        ddt           j        d	         z  d
t           j        d         dt           j        d                   \  }}}|                     ||d           |                     dd| j        ||ddt           j        d	         z  d
t           j        d         dt           j        d                   \  }}}|                     |||d           |                     dd| j        ddt           j        d	         z  d
t           j        d         dt           j        d                   \  }}}| 	                    ||d           d S )Nr-  r/  r0  ri   r7   )r   r2  rn   r9   r:   r;   rY   rZ   r[   r\   zSymlink add failedr1  r   )r   r2  r  zSymlink remove failedzThe test entry was not removed!)
r   r   r   rO   r   rN   r>   r?   r   r   )rA   source_texttarget_textr2  rB   rC   rD   s          r0   test_symlink_addzGpoCmdTestCase.test_symlink_add  sl   gll4<??gll4<??#.;;<!00 9C151<k15{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30DEEE!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	gs$CDDD!00 9F151<k15{13H1E8F 8F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30GHHH!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	#'HIIIIIr2   c                    t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        dd          }t          j                            ||                    d                                          d| j        dd	          }t          j
        d
          }t          j        |d          }t          j        |d          }d|_        t          j        |d          }d|_        t          j        |d          }	d|	_        t          j        |d          }
t          j        |
d          }t          j        |d          }||_        t          j        |d          }t          j                            | j        d          |_        t          j        |d          }t          j        t          j                              j        |_        t          j        |d          }t%          j        t          j                              j        |_        t          j        |d          }|                    dd           t          j        |d           t          j        |d           t          j        |d           t          j        |d          }|                    dd           t          j        |d           t          j        |d           t          j        |d          }|                    dd           t          j        |d           t          j        |d           t/          |t          j        |d                    }|                     |d |z             |                     d!d"| j        d#d$t          j        d%         z  d&t          j        d'         d(t          j        d)                   \  }}}|                     |j        |d*           |                     d+|d,           t9          |           d S )-Nr   r   r   r   r   r*  zFiles/manifest.xmlMachine/VGPVTLA/Unix/Files/test.sourcer  r  r  r  r  Filesr  z+Represents file data to set/copy on clientsr   r+  r,  r.  r/  r  r  permissionsr   r   r   executeotherr  r   r7   r   filesr   r9   r:   r;   rY   rZ   r[   r\   r   
-rwxr-xr-x)The test entry permissions were not found)r   r   r   r>   r   r   r   r   rN   r  r  r   r!  rO   pwdgetpwuidgetuidpw_namegrpgetgrgidgetgidgr_namer   r   r#  r   r   r   r   )rA   r   r   r$  source_filer   r  r%  r  r  r   r+  r,  r.  r  r  r<  r   rB   rC   rD   s                        r0   test_files_listzGpoCmdTestCase.test_files_list  s   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJ#}.E35 5 gll:rvvg/D/D/F/F#-t}m#@B B k**(@@mY77v66	&}mDDHv66*41BCC!/8<<!!/8<<gll4<??88L--5	 '::\")++..6
 &FF'''f---g...i000&FF(((f---i000&FF(((f---i000%."@"@AA=GHHH!00 9B151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fk3(GHHHlCA	C 	C 	C 	Wr2   c                 Z   t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        dd          }t          j                            | j	        d          }d	}t          |d
          5 }|                    |           d d d            n# 1 swxY w Y   t          j                            | j	        d          }t          j        t          j                              j        }t!          j        t          j                              j        }	|                     dd| j        ||||	dddt          j        d         z  dt          j        d         dt          j        d                   \  }
}}|                     |
||d           |                     |t          |d                                          d           |                     dd| j        ddt          j        d         z  dt          j        d         dt          j        d                   \  }
}}|                     ||d           |                     d|d           t          j        |           |                     dd| j        |ddt          j        d         z  dt          j        d         dt          j        d                   \  }
}}|                     |
||d           |                     dd| j        ddt          j        d         z  dt          j        d         dt          j        d                   \  }
}}|                     ||d           d S ) Nr   r   r   r   r   r9  r:  r-  z#!/bin/sh
echo hello worldwr/  r7   )r   r@  rn   755r9   r:   r;   rY   rZ   r[   r\   zFile add failedr   z,Failed to find the source file on the sysvolr?  r   rA  rB  )r   r@  r  zFile remove failedr   )r   r   r   r>   r   r   r   r   rN   rO   r   r   rC  rD  rE  rF  rG  rH  rI  rJ  r   r?   r   r   unlinkr   )rA   r   r   sysvol_sourcerK  source_datarN  target_filer  r  rB   rC   rD   s                r0   test_files_addzGpoCmdTestCase.test_files_add  s   ZZ

+,---VVFH--
Z1F1F1H1H%/%BD D gll4<??3+s## 	!qGGK   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!gll4<??|BIKK((0RY[[))1!00 9A151<1<15u161<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30ABBBk4s#;#;#@#@#B#BD	F 	F 	F "00 9B151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	k3(GHHHlCA	C 	C 	C 		+!00 9D151<d1<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30DEEE!00 9B151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	c+LMMMMMs   C11C58C5c                 R   t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        dd          }t          j
        d          }t          j        |d	          }t          j        |d
          }d|_        t          j        |d          }d|_        t          j        |d          }d|_        t          j        |d          }	d|	_        t          j        |d          }
t          j        |
d          }t          j        |d           t          j        |d          }t          j        |d           t          j        |d          }t          j        |d          }d|_        t          j        |d          }d|_        t          |t          j        |d                    }|                     |d|z             d}|                     dd | j        d!d"t          j        d#         z  d$t          j        d%         d&t          j        d'                   \  }}}|                     ||d(           t%          |           d S ))Nr   r   r   r   r   zMachine/VGP/VTLA/SshCfgzSshD/manifest.xmlr  r  r  r  r  zConfiguration Filer  z+Represents Unix configuration file settingsr  r  r   
configfilefilenameconfigsectionsectionnamekeyvaluepairkeyKerberosAuthenticationvalueYesr  r   KerberosAuthentication Yesr7   r   opensshr   r9   r:   r;   rY   rZ   r[   r\   r   r   r   r   r>   r   r   r   r   rN   r  r  r   r!  r   r#  r   r   r   r   )rA   r   r   r$  r   r  r%  r  r  r  r   rV  rX  optr[  r]  r   ra  rB   rC   rD   s                        r0   test_vgp_openssh_listz$GpoCmdTestCase.test_vgp_openssh_listF  sp   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJ#}.G24 4 k**(@@mY77v66(	&}mDDH%m\BB
!
v66%dL99
Z000(_EE666}n==sE**+ g..
%."@"@AA=GHHH.!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	gs$CDDD 	Wr2   c                    |                      dd| j        ddddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     |||d           d}|                      dd| j        ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     ||d           |                      dd| j        dddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     |||d           |                      dd| j        ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     ||d           d S )Nr7   )r   ra  r   r\  r^  r9   r:   r;   rY   rZ   r[   r\   zOpenSSH set failedr_  r`  r   zOpenSSH unset failedr   r  )rA   rB   rC   rD   ra  s        r0   test_vgp_openssh_setz#GpoCmdTestCase.test_vgp_openssh_sets  s0   !00 9C151I161<13H1E2F 2F 35*Z2H2H2H13J1G1G2I	J 	Jc 	fc30DEEE.!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	gs$CDDD!00 9C151I41<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30FGGG!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	#'HIIIIIr2   c                    t                      }d }t                      5 }t          j                            |j                  }|                    d           |                                 |                     dd| j	        |j        dddt          j
        d         z  dt          j
        d	         d
t          j
        d                   \  }}}|                     |||d           d d d            n# 1 swxY w Y   d                    d|                    d                                          d| j	        dd|g          }d|z  }|                     dd| j	        ddt          j
        d         z  dt          j
        d	         d
t          j
        d                   \  }}}|                     ||d           |                    dd          }	t          j                            |	|                    d                                          d| j	        dd|          }
|                     t          j                            |
          d           |                     dd| j	        |j        ddt          j
        d         z  dt          j
        d	         d
t          j
        d                   \  }}}|                     |||d           |                     dd| j	        ddt          j
        d         z  dt          j
        d	         d
t          j
        d                   \  }}}|                     ||d           d S )Ns   #!/bin/sh
echo $@ hello worldr7   )r   scriptsstartuprn   z'-n'r9   r:   r;   rY   rZ   r[   r\   zScript add failed\r   r   MACHINE\VGP\VTLA\UnixScripts\Startupz@reboot root %s -nr   rh  ri  r   r   r   r   r*  zScripts/Startupz.The test script was not uploaded to the sysvol)r   rh  ri  r  zScript remove failedr   )r   r   r   r   basenamer  r   flushr   rN   r>   r?   r   r   r   r   r   r   r   )rA   r   fnamer   rB   rC   rD   script_pathr   r   local_script_paths              r0   test_startup_script_addz&GpoCmdTestCase.test_startup_script_add  s   ZZ!! 	IQG$$QV,,EGG5666GGIII!%!4!4U =<=A]56VVT5@57Z5I6J 6J 79j6L6L6L57Z
5K5K6M"N "NVS# !!&#s4GHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I iirvvg'<'<'>'>
#}.H15!: ; ; %{2!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	eS"ABBBVVFH--
GLLRVVG__5J5J5L5L)3T])@):EC C 	'899H	J 	J 	J "00 9;<@M121<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30FGGG!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	%FGGGGGs   C	C44C8;C8c                    t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        dd          }t          j
        d          }t          j        |d	          }t          j        |d
          }d|_        t          j        |d          }d|_        t          j        |d          }d|_        t          j        |d          }	t          j        |	d          }
t          j        |
d          }d|_        t          j        |
d          }d|_        t          |t          j        |d                    }|                     |d|z             d                    d|                    d                                          d| j        dd|j        g          }d|d|j        }|                     dd| j        dd t          j        d!         z  d"t          j        d#         d$t          j        d%                   \  }}}|                     ||d&           t%          |           d S )'Nr   r   r   r   r   r*  zScripts/Startup/manifest.xmlr  r  r  r  r  zUnix Scriptsr  z6Represents Unix scripts to run on Group Policy clientsr   r  scriptztest.sh
parametersz-er  r   rj  rk  rl  z@reboot root ri   r7   rm  r9   r:   r;   rY   rZ   r[   r\   r   rb  )rA   r   r   r$  r   r  r%  r  r  r   r  ru  rv  r   rq  r   rB   rC   rD   s                      r0   test_startup_script_listz'GpoCmdTestCase.test_startup_script_list  sd   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJ#}.E=? ? k**(@@mY77v66"	&}mDDSv66&t];;!+x88%k<@@

%."@"@AA=GHHHiirvvg'<'<'>'>
#}.H16;!@ A A )4Z__E!00 9D151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	eS"ABBB 	Wr2   c                    d}d|z  }|                      dd| j        |ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     |||d           |                      dd| j        ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     ||d           |                      dd| j        ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     |||d           |                      dd| j        ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     ||d           d S )NzThis is the message of the day"%s
"r7   )r   motdr   r9   r:   r;   rY   rZ   r[   r\   zMOTD set failedr   rz  r   r   zMOTD unset failedr   r  rA   r!  r   rB   rC   rD   s         r0   test_vgp_motd_setz GpoCmdTestCase.test_vgp_motd_set  s3   /o!00 9@1514d1<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30ABBB!00 9A151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	dC!@AAA!00 9@151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30CDDD!00 9A151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	s$EFFFFFr2   c                    t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        dd          }t          j
        d          }t          j        |d	          }t          j        |d
          }d|_        t          j        |d          }d|_        t          j        |d          }d|_        t          j        |d          }	d|	_        t          j        |d          }
t          j        |
d          }d|_        t          j        |
d          }d|_        t          |t          j        |d                    }|                     |d|z             |                     dd| j        ddt          j        d         z  dt          j        d         d t          j        d!                   \  }}}|                     |j        |d"           t%          |           d S )#Nr   r   r   r   r   r*  zMOTD/manifest.xmlr  r  r  r  r  	Text Filer  Represents a Generic Text Filer  replacer   rW  rz  r!  zThis is a message of the dayr  r   r7   r{  r9   r:   r;   rY   rZ   r[   r\   r   rb  rA   r   r   r$  r   r  r%  r  r  r  r   rW  r!  r   rB   rC   rD   s                    r0   test_vgp_motdzGpoCmdTestCase.test_vgp_motd1  s   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJ#}.E24 4 k**(@@mY77v66	&}mDD;%m\BB
#
v66#D*55f--2	%."@"@AA=GHHH!00 9A151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	di&EFFF 	Wr2   c                    t                      }|                    t          j        d                    |                    dd          }t          j                            ||                    d                                          d| j        dd          }t          j
        d          }t          j        |d	          }t          j        |d
          }d|_        t          j        |d          }d|_        t          j        |d          }d|_        t          j        |d          }	d|	_        t          j        |d          }
t          j        |
d          }d|_        t          j        |
d          }d|_        t          |t          j        |d                    }|                     |d|z             |                     dd| j        ddt          j        d         z  dt          j        d         d t          j        d!                   \  }}}|                     |j        |d"           t%          |           d S )#Nr   r   r   r   r   r*  zIssue/manifest.xmlr  r  r  r  r  r  r  r  r  r  r   rW  issuer!  Welcome to Samba!r  r   r7   r   r  r   r9   r:   r;   rY   rZ   r[   r\   r   rb  r  s                    r0   test_vgp_issue_listz"GpoCmdTestCase.test_vgp_issue_listX  s   ZZ

+,---VVFH--
',,z266'??+@+@+B+BJ#}.E35 5 k**(@@mY77v66	&}mDD;%m\BB
#
v66#D*55f--'	%."@"@AA=GHHH!00 9B151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	di&EFFF 	Wr2   c                    d}d|z  }|                      dd| j        |ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     |||d           |                      dd| j        ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     ||d           |                      dd| j        ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     |||d           |                      dd| j        ddt          j        d         z  dt          j        d	         d
t          j        d                   \  }}}|                     ||d           d S )Nr  ry  r7   )r   r  r   r9   r:   r;   rY   rZ   r[   r\   zIssue set failedr  r   zIssue unset failedr   r  r|  s         r0   test_vgp_issue_setz!GpoCmdTestCase.test_vgp_issue_set  s3   "o!00 9A1514d1<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30BCCC!00 9B151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	dC!@AAA!00 9A151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	fc30DEEE!00 9B151<13H1E2F 2F 35*Z2H2H2H13J1G1G2IJ Jc 	s$EFFFFFr2   c                 L   t          t          |                                            |                     dd| j        ddt
          j        d         z  dt
          j        d         dt
          j        d	         d
| j                  \  }}}|                     |||d           t          j
        t
          j                            | j        d                     	 d|                    d          d                             d          d         z  | _        n(# t          $ r |                     d|z             Y nw xY wt
          j                            t#          j                    dddd          | _        t
          j                            | j        d          | _        dS )z#set up a temporary GPO to work withr7   creater9   r:   r;   rY   rZ   r[   r\   rK   z!Ensuring gpo created successfullyrM   r   r   r   r   r   z!Failed to find GUID in output: %ssource4selftest
provisionszgeneralized-gpo-backupr   N)superr4   setUpr=   gpo_namer   r>   rO   r?   rP   rQ   r   r   r   rN   
IndexErrorfailsambasource_tree_topdirr   r   rA   rB   rC   rD   	__class__s       r0   r  zGpoCmdTestCase.setUp  s   nd##))+++!^^E8T],0+
8@T2T2T:<*Z:P:P:PRTR\]gRhRh,i,6F Fc 	fc30STTTbgll4<::;;;	A"SYYs^^A%6%<%<S%A%A!%DDDMM 	A 	A 	AII9C?@@@@@	A 7<<(@(B(BI(2L(@B B 7<<(8*EEs   <D "D>=D>c                 >   |                      dd| j        ddt          j        d         z  dt          j        d         dt          j        d	                   \  }}}|                     |||d
           t          t          |                                            dS )z%remove the temporary GPO to work withr7   r   r9   r:   r;   rY   rZ   r[   r\   r   N)r=   rN   r   r>   r?   r  r4   tearDownr  s       r0   r  zGpoCmdTestCase.tearDown  s    !^^E5$-{]_]ghp]qOqOq  BD  BL  MW  BX  BX  BX  Z\  Zd  eo  Zp  Zp  tq  r  rcfc30STTTnd##,,.....r2   ))__name__
__module____qualname____doc__r  r   rE   rI   rR   rW   r]   r`   rx   r   r   r   r   r   r   r   r   r   r   r   r	  r(  r3  r7  rL  rT  rd  rf  rs  rw  r}  r  r  r  r  r  __classcell__)r  s   @r0   r4   r4   Z   s       //H ?OY Y Y
< < <
< < <U U U
U U U
U U U
( ( (B1$ 1$ 1$fU$ U$ U$nQ$ Q$ Q$fM$ M$ M$^C> C> C>J! ! !.(B (B (BT  >$9 $9 $9L> > >@!B !B !BF)I )I )IVh h hT& & &P,J ,J ,J\< < <|?N ?N ?NB+ + +Z+J +J +JZ:H :H :Hx' ' 'R*G *G *GX% % %N% % %N*G *G *GXF F F F F(/ / / / / / / / /r2   r4   )TTF)*r   rC  rG  ro   r  samba.tests.samba_tool.baser   rP   samba.netcmd.gpor   r   samba.paramr   samba.tests.gpor   r   samba.dcerpcr	   	samba.ndrr
   r   samba.commonr   configparserr   ior   xml.etree.ElementTreer  ElementTreetempfiler   timer   r   abspathr   dirname__file__r   r1   r4    r2   r0   <module>r     s  *             



  8 8 8 8 8 8  5 5 5 5 5 5 5 5             4 4 4 4 4 4 4 4       * * * * * * * * # # # # # # % % % % % %       % % % % % % % % % ' ' ' ' ' '      goobgll27??8+D+DFVWWXX/ / / /di/ i/ i/ i/ i/% i/ i/ i/ i/ i/r2   