From ae56a07ae703ce7315edc27f600f184ff584903c Mon Sep 17 00:00:00 2001 From: David Mulder Date: Thu, 25 Jun 2020 14:15:18 -0600 Subject: [PATCH] gpo: Test gpo hourly scripts apply Signed-off-by: David Mulder Reviewed-by: Douglas Bagnall --- python/samba/tests/gpo.py | 52 ++++++++++++++++++++++++++--------------------- selftest/knownfail.d/gpo | 1 + 2 files changed, 30 insertions(+), 23 deletions(-) create mode 100644 selftest/knownfail.d/gpo diff --git a/python/samba/tests/gpo.py b/python/samba/tests/gpo.py index 02ff6d97121..18bcf81f40c 100644 --- a/python/samba/tests/gpo.py +++ b/python/samba/tests/gpo.py @@ -320,7 +320,7 @@ class GPOTests(tests.TestCase): gpttmpl = gpofile % (local_path, guid) unstage_file(gpttmpl) - def test_gp_daily_scripts(self): + def test_gp_scripts(self): local_path = self.lp.cache_path('gpo_cache') guid = '{31B2F340-016D-11D2-945F-00C04FB984F9}' reg_pol = os.path.join(local_path, policies, guid, @@ -340,25 +340,31 @@ class GPOTests(tests.TestCase): if ads.connect(): gpos = ads.get_gpo_list(machine_creds.get_username()) - # Stage the Registry.pol file with test data - stage = preg.file() - e = preg.entry() - e.keyname = b'Software\\Policies\\Samba\\Unix Settings\\Daily Scripts' - e.valuename = b'Software\\Policies\\Samba\\Unix Settings' - e.type = 1 - e.data = b'echo hello world' - stage.num_entries = 1 - stage.entries = [e] - ret = stage_file(reg_pol, ndr_pack(stage)) - self.assertTrue(ret, 'Could not create the target %s' % reg_pol) - - # Process all gpos, with temp output directory - with TemporaryDirectory() as dname: - ext.process_group_policy([], gpos, dname) - scripts = os.listdir(dname) - self.assertEquals(len(scripts), 1, 'The daily script was not created') - out, _ = Popen([os.path.join(dname, scripts[0])], stdout=PIPE).communicate() - self.assertIn(b'hello world', out, 'Daily script execution failed') - - # Unstage the Registry.pol file - unstage_file(reg_pol) + reg_key = b'Software\\Policies\\Samba\\Unix Settings' + sections = { b'%s\\Daily Scripts' % reg_key : '.cron.daily', + b'%s\\Hourly Scripts' % reg_key : '.cron.hourly' } + for keyname in sections.keys(): + # Stage the Registry.pol file with test data + stage = preg.file() + e = preg.entry() + e.keyname = keyname + e.valuename = b'Software\\Policies\\Samba\\Unix Settings' + e.type = 1 + e.data = b'echo hello world' + stage.num_entries = 1 + stage.entries = [e] + ret = stage_file(reg_pol, ndr_pack(stage)) + self.assertTrue(ret, 'Could not create the target %s' % reg_pol) + + # Process all gpos, with temp output directory + with TemporaryDirectory(sections[keyname]) as dname: + ext.process_group_policy([], gpos, dname) + scripts = os.listdir(dname) + self.assertEquals(len(scripts), 1, + 'The %s script was not created' % keyname.decode()) + out, _ = Popen([os.path.join(dname, scripts[0])], stdout=PIPE).communicate() + self.assertIn(b'hello world', out, + '%s script execution failed' % keyname.decode()) + + # Unstage the Registry.pol file + unstage_file(reg_pol) diff --git a/selftest/knownfail.d/gpo b/selftest/knownfail.d/gpo new file mode 100644 index 00000000000..27f3459db8b --- /dev/null +++ b/selftest/knownfail.d/gpo @@ -0,0 +1 @@ +^samba.tests.gpo.samba.tests.gpo.GPOTests.test_gp_scripts -- 2.11.4.GIT