]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
samba-tool: Test gpo Security list
authorDavid Mulder <dmulder@suse.com>
Mon, 9 Nov 2020 23:28:11 +0000 (16:28 -0700)
committerDavid Mulder <dmulder@samba.org>
Wed, 9 Dec 2020 17:38:28 +0000 (17:38 +0000)
Signed-off-by: David Mulder <dmulder@suse.com>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
python/samba/netcmd/gpo.py
python/samba/tests/samba_tool/gpo.py
selftest/knownfail.d/gpo [new file with mode: 0644]

index 80e20e667183049da40be369b7ac10246d81ccdb..0958bd090b426f0215be8170494c2bfdcb232ecf 100644 (file)
@@ -66,6 +66,7 @@ from samba import param
 from samba.credentials import SMB_SIGNING_REQUIRED
 from samba.netcmd.common import attr_default
 from samba.common import get_bytes
+from configparser import ConfigParser
 
 
 def gpo_flags_string(value):
@@ -1996,15 +1997,39 @@ PasswordComplexity      Password must meet complexity requirements
             else:
                 raise
 
+class cmd_list_security(Command):
+    """List Samba Security Group Policy from the sysvol
+    """
+
+    synopsis = "%prog <gpo> [options]"
+
+    takes_optiongroups = {
+        "sambaopts": options.SambaOptions,
+        "versionopts": options.VersionOptions,
+        "credopts": options.CredentialsOptions,
+    }
+
+    takes_options = [
+        Option("-H", "--URL", help="LDB URL for database or target server", type=str,
+                metavar="URL", dest="H"),
+    ]
+
+    takes_args = ["gpo"]
+
+    def run(self, gpo, H=None, sambaopts=None, credopts=None, versionopts=None):
+        pass
+
 class cmd_security(SuperCommand):
     """Manage Security Group Policy Objects"""
     subcommands = {}
     subcommands["set"] = cmd_set_security()
+    subcommands["list"] = cmd_list_security()
 
 class cmd_manage(SuperCommand):
     """Manage Group Policy Objects"""
     subcommands = {}
     subcommands["sudoers"] = cmd_sudoers()
+    subcommands["security"] = cmd_security()
 
 class cmd_gpo(SuperCommand):
     """Group Policy Object (GPO) management."""
index dcf66f76e1d90c9a16bd432e741375cb6bca89b0..b1a1a70aba23d38722f2c0daf1b0b7af806fc630 100644 (file)
@@ -29,6 +29,8 @@ from samba.tests.gpo import stage_file, unstage_file
 from samba.dcerpc import preg
 from samba.ndr import ndr_pack, ndr_unpack
 from samba.common import get_string
+from configparser import ConfigParser
+from io import StringIO
 
 source_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../../.."))
 
@@ -584,6 +586,38 @@ class GpoCmdTestCase(SambaToolCmdTest):
         self.assertNotIn('MaxTicketAge = 10', inf_pol_contents,
                       'The test entry was still found!')
 
+    def test_security_list(self):
+        (result, out, err) = self.runsublevelcmd("gpo", ("manage", "security",
+                                                 "set"), self.gpo_guid,
+                                                 'MaxTicketAge', '10',
+                                                 "-H", "ldap://%s" %
+                                                 os.environ["SERVER"],
+                                                 "-U%s%%%s" %
+                                                 (os.environ["USERNAME"],
+                                                 os.environ["PASSWORD"]))
+        self.assertCmdSuccess(result, out, err,
+                              'Failed to set MaxTicketAge')
+
+        (result, out, err) = self.runsublevelcmd("gpo", ("manage", "security",
+                                                 "list"), self.gpo_guid,
+                                                 "-H", "ldap://%s" %
+                                                 os.environ["SERVER"],
+                                                 "-U%s%%%s" %
+                                                 (os.environ["USERNAME"],
+                                                 os.environ["PASSWORD"]))
+        self.assertIn('MaxTicketAge = 10', out, 'The test entry was not found!')
+
+        (result, out, err) = self.runsublevelcmd("gpo", ("manage", "security",
+                                                 "set"), self.gpo_guid,
+                                                 'MaxTicketAge',
+                                                 "-H", "ldap://%s" %
+                                                 os.environ["SERVER"],
+                                                 "-U%s%%%s" %
+                                                 (os.environ["USERNAME"],
+                                                 os.environ["PASSWORD"]))
+        self.assertCmdSuccess(result, out, err,
+                              'Failed to unset MaxTicketAge')
+
     def test_sudoers_remove(self):
         lp = LoadParm()
         lp.load(os.environ['SERVERCONFFILE'])
diff --git a/selftest/knownfail.d/gpo b/selftest/knownfail.d/gpo
new file mode 100644 (file)
index 0000000..e959220
--- /dev/null
@@ -0,0 +1 @@
+^samba.tests.samba_tool.gpo.samba.tests.samba_tool.gpo.GpoCmdTestCase.test_security_list