From e12e661f35983dfab3e7d869df7770f519b49e48 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 21 Sep 2010 22:54:10 -0700 Subject: s4-selftest: Move more tests to scripting/python, simplifies running of tests. --- source4/auth/gensec/tests/bindings.py | 39 ------ source4/auth/tests/bindings.py | 33 ----- source4/lib/messaging/tests/bindings.py | 58 --------- source4/lib/registry/tests/bindings.py | 60 --------- source4/libcli/security/tests/bindings.py | 143 --------------------- source4/param/tests/bindings.py | 57 -------- source4/scripting/python/samba/tests/auth.py | 33 +++++ .../python/samba/tests/dcerpc/__init__.py | 4 +- .../scripting/python/samba/tests/dcerpc/misc.py | 4 +- source4/scripting/python/samba/tests/gensec.py | 39 ++++++ source4/scripting/python/samba/tests/messaging.py | 58 +++++++++ source4/scripting/python/samba/tests/param.py | 57 ++++++++ source4/scripting/python/samba/tests/registry.py | 60 +++++++++ source4/scripting/python/samba/tests/security.py | 143 +++++++++++++++++++++ source4/selftest/tests.sh | 18 ++- 15 files changed, 402 insertions(+), 404 deletions(-) delete mode 100644 source4/auth/gensec/tests/bindings.py delete mode 100644 source4/auth/tests/bindings.py delete mode 100644 source4/lib/messaging/tests/bindings.py delete mode 100644 source4/lib/registry/tests/bindings.py delete mode 100644 source4/libcli/security/tests/bindings.py delete mode 100644 source4/param/tests/bindings.py create mode 100644 source4/scripting/python/samba/tests/auth.py create mode 100644 source4/scripting/python/samba/tests/gensec.py create mode 100644 source4/scripting/python/samba/tests/messaging.py create mode 100644 source4/scripting/python/samba/tests/param.py create mode 100644 source4/scripting/python/samba/tests/registry.py create mode 100644 source4/scripting/python/samba/tests/security.py diff --git a/source4/auth/gensec/tests/bindings.py b/source4/auth/gensec/tests/bindings.py deleted file mode 100644 index 21e3fa379a..0000000000 --- a/source4/auth/gensec/tests/bindings.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python - -# Unix SMB/CIFS implementation. -# Copyright (C) Jelmer Vernooij 2009 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -"""Tests for GENSEC. - -Note that this just tests the bindings work. It does not intend to test -the functionality, that's already done in other tests. -""" - -from samba import gensec -import samba.tests - -class CredentialsTests(samba.tests.TestCase): - - def setUp(self): - super(CredentialsTests, self).setUp() - settings = {} - settings["target_hostname"] = "localhost" - settings["lp_ctx"] = samba.tests.env_loadparm() - self.gensec = gensec.Security.start_client(settings) - - def test_info(self): - self.assertEquals(None, self.gensec.session_info()) diff --git a/source4/auth/tests/bindings.py b/source4/auth/tests/bindings.py deleted file mode 100644 index 6ecfc2047f..0000000000 --- a/source4/auth/tests/bindings.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python - -# Unix SMB/CIFS implementation. -# Copyright (C) Jelmer Vernooij 2007 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -"""Tests for the Auth Python bindings. - -Note that this just tests the bindings work. It does not intend to test -the functionality, that's already done in other tests. -""" - -from samba import auth -import samba.tests - -class AuthTests(samba.tests.TestCase): - - def test_system_session(self): - auth.system_session() - diff --git a/source4/lib/messaging/tests/bindings.py b/source4/lib/messaging/tests/bindings.py deleted file mode 100644 index 91cf024555..0000000000 --- a/source4/lib/messaging/tests/bindings.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# Unix SMB/CIFS implementation. -# Copyright © Jelmer Vernooij 2008 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -from samba.messaging import Messaging -from samba.tests import TestCase - -class MessagingTests(TestCase): - - def get_context(self, *args, **kwargs): - kwargs["messaging_path"] = "." - return Messaging(*args, **kwargs) - - def test_register(self): - x = self.get_context() - def callback(): - pass - msg_type = x.register(callback) - x.deregister(callback, msg_type) - - def test_assign_server_id(self): - x = self.get_context() - self.assertTrue(isinstance(x.server_id, tuple)) - self.assertEquals(3, len(x.server_id)) - - def test_ping_speed(self): - server_ctx = self.get_context((0, 1)) - def ping_callback(src, data): - server_ctx.send(src, data) - def exit_callback(): - print "received exit" - msg_ping = server_ctx.register(ping_callback) - msg_exit = server_ctx.register(exit_callback) - - def pong_callback(): - print "received pong" - client_ctx = self.get_context((0, 2)) - msg_pong = client_ctx.register(pong_callback) - - client_ctx.send((0, 1), msg_ping, "testing") - client_ctx.send((0, 1), msg_ping, "") - diff --git a/source4/lib/registry/tests/bindings.py b/source4/lib/registry/tests/bindings.py deleted file mode 100644 index d01ebff909..0000000000 --- a/source4/lib/registry/tests/bindings.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python - -# Unix SMB/CIFS implementation. -# Copyright (C) Jelmer Vernooij 2007 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import os -from samba import registry -import samba.tests - -class HelperTests(samba.tests.TestCase): - - def test_predef_to_name(self): - self.assertEquals("HKEY_LOCAL_MACHINE", - registry.get_predef_name(0x80000002)) - - def test_str_regtype(self): - self.assertEquals("REG_DWORD", registry.str_regtype(4)) - - - -class HiveTests(samba.tests.TestCaseInTempDir): - - def setUp(self): - super(HiveTests, self).setUp() - self.hive_path = os.path.join(self.tempdir, "ldb_new.ldb") - self.hive = registry.open_ldb(self.hive_path) - - def tearDown(self): - del self.hive - os.unlink(self.hive_path) - super(HiveTests, self).tearDown() - - def test_ldb_new(self): - self.assertTrue(self.hive is not None) - - #def test_flush(self): - # self.hive.flush() - - #def test_del_value(self): - # self.hive.del_value("FOO") - - -class RegistryTests(samba.tests.TestCase): - - def test_new(self): - self.registry = registry.Registry() diff --git a/source4/libcli/security/tests/bindings.py b/source4/libcli/security/tests/bindings.py deleted file mode 100644 index 22f7df6b1c..0000000000 --- a/source4/libcli/security/tests/bindings.py +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env python - -# Unix SMB/CIFS implementation. -# Copyright (C) Jelmer Vernooij 2007 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import samba.tests -from samba.dcerpc import security - -class SecurityTokenTests(samba.tests.TestCase): - - def setUp(self): - super(SecurityTokenTests, self).setUp() - self.token = security.token() - - def test_is_system(self): - self.assertFalse(self.token.is_system()) - - def test_is_anonymous(self): - self.assertFalse(self.token.is_anonymous()) - - def test_has_builtin_administrators(self): - self.assertFalse(self.token.has_builtin_administrators()) - - def test_has_nt_authenticated_users(self): - self.assertFalse(self.token.has_nt_authenticated_users()) - - def test_has_priv(self): - self.assertFalse(self.token.has_privilege(security.SEC_PRIV_SHUTDOWN)) - - def test_set_priv(self): - self.assertFalse(self.token.has_privilege(security.SEC_PRIV_SHUTDOWN)) - self.assertFalse(self.token.set_privilege(security.SEC_PRIV_SHUTDOWN)) - self.assertTrue(self.token.has_privilege(security.SEC_PRIV_SHUTDOWN)) - - -class SecurityDescriptorTests(samba.tests.TestCase): - - def setUp(self): - super(SecurityDescriptorTests, self).setUp() - self.descriptor = security.descriptor() - - def test_from_sddl(self): - desc = security.descriptor.from_sddl("O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)", security.dom_sid("S-2-0-0")) - self.assertEquals(desc.group_sid, security.dom_sid('S-2-0-0-512')) - self.assertEquals(desc.owner_sid, security.dom_sid('S-1-5-32-548')) - self.assertEquals(desc.revision, 1) - self.assertEquals(desc.sacl, None) - self.assertEquals(desc.type, 0x8004) - - def test_from_sddl_invalidsddl(self): - self.assertRaises(TypeError,security.descriptor.from_sddl, "foo",security.dom_sid("S-2-0-0")) - - def test_from_sddl_invalidtype1(self): - self.assertRaises(TypeError, security.descriptor.from_sddl, security.dom_sid('S-2-0-0-512'),security.dom_sid("S-2-0-0")) - - def test_from_sddl_invalidtype2(self): - sddl = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" - self.assertRaises(TypeError, security.descriptor.from_sddl, sddl, - "S-2-0-0") - - def test_as_sddl(self): - text = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" - dom = security.dom_sid("S-2-0-0") - desc1 = security.descriptor.from_sddl(text, dom) - desc2 = security.descriptor.from_sddl(desc1.as_sddl(dom), dom) - self.assertEquals(desc1.group_sid, desc2.group_sid) - self.assertEquals(desc1.owner_sid, desc2.owner_sid) - self.assertEquals(desc1.sacl, desc2.sacl) - self.assertEquals(desc1.type, desc2.type) - - def test_as_sddl_invalid(self): - text = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" - dom = security.dom_sid("S-2-0-0") - desc1 = security.descriptor.from_sddl(text, dom) - self.assertRaises(TypeError, desc1.as_sddl,text) - - - def test_as_sddl_no_domainsid(self): - dom = security.dom_sid("S-2-0-0") - text = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" - desc1 = security.descriptor.from_sddl(text, dom) - desc2 = security.descriptor.from_sddl(desc1.as_sddl(), dom) - self.assertEquals(desc1.group_sid, desc2.group_sid) - self.assertEquals(desc1.owner_sid, desc2.owner_sid) - self.assertEquals(desc1.sacl, desc2.sacl) - self.assertEquals(desc1.type, desc2.type) - - def test_domsid_nodomsid_as_sddl(self): - dom = security.dom_sid("S-2-0-0") - text = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" - desc1 = security.descriptor.from_sddl(text, dom) - self.assertNotEqual(desc1.as_sddl(), desc1.as_sddl(dom)) - - def test_split(self): - dom = security.dom_sid("S-2-0-7") - self.assertEquals((security.dom_sid("S-2-0"), 7), dom.split()) - - -class DomSidTests(samba.tests.TestCase): - - def test_parse_sid(self): - sid = security.dom_sid("S-1-5-21") - self.assertEquals("S-1-5-21", str(sid)) - - def test_sid_equal(self): - sid1 = security.dom_sid("S-1-5-21") - sid2 = security.dom_sid("S-1-5-21") - self.assertEquals(sid1, sid1) - self.assertEquals(sid1, sid2) - - def test_random(self): - sid = security.random_sid() - self.assertTrue(str(sid).startswith("S-1-5-21-")) - - def test_repr(self): - sid = security.random_sid() - self.assertTrue(repr(sid).startswith("dom_sid('S-1-5-21-")) - - -class PrivilegeTests(samba.tests.TestCase): - - def test_privilege_name(self): - self.assertEquals("SeShutdownPrivilege", - security.privilege_name(security.SEC_PRIV_SHUTDOWN)) - - def test_privilege_id(self): - self.assertEquals(security.SEC_PRIV_SHUTDOWN, - security.privilege_id("SeShutdownPrivilege")) - diff --git a/source4/param/tests/bindings.py b/source4/param/tests/bindings.py deleted file mode 100644 index 34d6544e3c..0000000000 --- a/source4/param/tests/bindings.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python - -# Unix SMB/CIFS implementation. -# Copyright (C) Jelmer Vernooij 2007 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -from samba import param -import samba.tests - -class LoadParmTestCase(samba.tests.TestCase): - - def test_init(self): - file = param.LoadParm() - self.assertTrue(file is not None) - - def test_length(self): - file = param.LoadParm() - self.assertEquals(0, len(file)) - - def test_set_workgroup(self): - file = param.LoadParm() - file.set("workgroup", "bla") - self.assertEquals("BLA", file.get("workgroup")) - - def test_is_mydomain(self): - file = param.LoadParm() - file.set("workgroup", "bla") - self.assertTrue(file.is_mydomain("BLA")) - self.assertFalse(file.is_mydomain("FOOBAR")) - - def test_is_myname(self): - file = param.LoadParm() - file.set("netbios name", "bla") - self.assertTrue(file.is_myname("BLA")) - self.assertFalse(file.is_myname("FOOBAR")) - - def test_load_default(self): - file = param.LoadParm() - file.load_default() - - def test_section_nonexistant(self): - samba_lp = param.LoadParm() - samba_lp.load_default() - self.assertRaises(KeyError, samba_lp.__getitem__, "nonexistant") diff --git a/source4/scripting/python/samba/tests/auth.py b/source4/scripting/python/samba/tests/auth.py new file mode 100644 index 0000000000..6ecfc2047f --- /dev/null +++ b/source4/scripting/python/samba/tests/auth.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python + +# Unix SMB/CIFS implementation. +# Copyright (C) Jelmer Vernooij 2007 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +"""Tests for the Auth Python bindings. + +Note that this just tests the bindings work. It does not intend to test +the functionality, that's already done in other tests. +""" + +from samba import auth +import samba.tests + +class AuthTests(samba.tests.TestCase): + + def test_system_session(self): + auth.system_session() + diff --git a/source4/scripting/python/samba/tests/dcerpc/__init__.py b/source4/scripting/python/samba/tests/dcerpc/__init__.py index 9e198460a3..b6bf830304 100644 --- a/source4/scripting/python/samba/tests/dcerpc/__init__.py +++ b/source4/scripting/python/samba/tests/dcerpc/__init__.py @@ -3,12 +3,12 @@ # Unix SMB/CIFS implementation. # Copyright © Jelmer Vernooij 2008 -# +# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the diff --git a/source4/scripting/python/samba/tests/dcerpc/misc.py b/source4/scripting/python/samba/tests/dcerpc/misc.py index 3526d74dee..689cea360c 100644 --- a/source4/scripting/python/samba/tests/dcerpc/misc.py +++ b/source4/scripting/python/samba/tests/dcerpc/misc.py @@ -43,8 +43,8 @@ class GUIDTests(samba.tests.TestCase): guid2 = misc.GUID(text1) self.assertEquals(0, cmp(guid1, guid2)) self.assertEquals(guid1, guid2) - - + + class PolicyHandleTests(samba.tests.TestCase): def test_init(self): diff --git a/source4/scripting/python/samba/tests/gensec.py b/source4/scripting/python/samba/tests/gensec.py new file mode 100644 index 0000000000..21e3fa379a --- /dev/null +++ b/source4/scripting/python/samba/tests/gensec.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python + +# Unix SMB/CIFS implementation. +# Copyright (C) Jelmer Vernooij 2009 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +"""Tests for GENSEC. + +Note that this just tests the bindings work. It does not intend to test +the functionality, that's already done in other tests. +""" + +from samba import gensec +import samba.tests + +class CredentialsTests(samba.tests.TestCase): + + def setUp(self): + super(CredentialsTests, self).setUp() + settings = {} + settings["target_hostname"] = "localhost" + settings["lp_ctx"] = samba.tests.env_loadparm() + self.gensec = gensec.Security.start_client(settings) + + def test_info(self): + self.assertEquals(None, self.gensec.session_info()) diff --git a/source4/scripting/python/samba/tests/messaging.py b/source4/scripting/python/samba/tests/messaging.py new file mode 100644 index 0000000000..91cf024555 --- /dev/null +++ b/source4/scripting/python/samba/tests/messaging.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Unix SMB/CIFS implementation. +# Copyright © Jelmer Vernooij 2008 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +from samba.messaging import Messaging +from samba.tests import TestCase + +class MessagingTests(TestCase): + + def get_context(self, *args, **kwargs): + kwargs["messaging_path"] = "." + return Messaging(*args, **kwargs) + + def test_register(self): + x = self.get_context() + def callback(): + pass + msg_type = x.register(callback) + x.deregister(callback, msg_type) + + def test_assign_server_id(self): + x = self.get_context() + self.assertTrue(isinstance(x.server_id, tuple)) + self.assertEquals(3, len(x.server_id)) + + def test_ping_speed(self): + server_ctx = self.get_context((0, 1)) + def ping_callback(src, data): + server_ctx.send(src, data) + def exit_callback(): + print "received exit" + msg_ping = server_ctx.register(ping_callback) + msg_exit = server_ctx.register(exit_callback) + + def pong_callback(): + print "received pong" + client_ctx = self.get_context((0, 2)) + msg_pong = client_ctx.register(pong_callback) + + client_ctx.send((0, 1), msg_ping, "testing") + client_ctx.send((0, 1), msg_ping, "") + diff --git a/source4/scripting/python/samba/tests/param.py b/source4/scripting/python/samba/tests/param.py new file mode 100644 index 0000000000..34d6544e3c --- /dev/null +++ b/source4/scripting/python/samba/tests/param.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python + +# Unix SMB/CIFS implementation. +# Copyright (C) Jelmer Vernooij 2007 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +from samba import param +import samba.tests + +class LoadParmTestCase(samba.tests.TestCase): + + def test_init(self): + file = param.LoadParm() + self.assertTrue(file is not None) + + def test_length(self): + file = param.LoadParm() + self.assertEquals(0, len(file)) + + def test_set_workgroup(self): + file = param.LoadParm() + file.set("workgroup", "bla") + self.assertEquals("BLA", file.get("workgroup")) + + def test_is_mydomain(self): + file = param.LoadParm() + file.set("workgroup", "bla") + self.assertTrue(file.is_mydomain("BLA")) + self.assertFalse(file.is_mydomain("FOOBAR")) + + def test_is_myname(self): + file = param.LoadParm() + file.set("netbios name", "bla") + self.assertTrue(file.is_myname("BLA")) + self.assertFalse(file.is_myname("FOOBAR")) + + def test_load_default(self): + file = param.LoadParm() + file.load_default() + + def test_section_nonexistant(self): + samba_lp = param.LoadParm() + samba_lp.load_default() + self.assertRaises(KeyError, samba_lp.__getitem__, "nonexistant") diff --git a/source4/scripting/python/samba/tests/registry.py b/source4/scripting/python/samba/tests/registry.py new file mode 100644 index 0000000000..d01ebff909 --- /dev/null +++ b/source4/scripting/python/samba/tests/registry.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python + +# Unix SMB/CIFS implementation. +# Copyright (C) Jelmer Vernooij 2007 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import os +from samba import registry +import samba.tests + +class HelperTests(samba.tests.TestCase): + + def test_predef_to_name(self): + self.assertEquals("HKEY_LOCAL_MACHINE", + registry.get_predef_name(0x80000002)) + + def test_str_regtype(self): + self.assertEquals("REG_DWORD", registry.str_regtype(4)) + + + +class HiveTests(samba.tests.TestCaseInTempDir): + + def setUp(self): + super(HiveTests, self).setUp() + self.hive_path = os.path.join(self.tempdir, "ldb_new.ldb") + self.hive = registry.open_ldb(self.hive_path) + + def tearDown(self): + del self.hive + os.unlink(self.hive_path) + super(HiveTests, self).tearDown() + + def test_ldb_new(self): + self.assertTrue(self.hive is not None) + + #def test_flush(self): + # self.hive.flush() + + #def test_del_value(self): + # self.hive.del_value("FOO") + + +class RegistryTests(samba.tests.TestCase): + + def test_new(self): + self.registry = registry.Registry() diff --git a/source4/scripting/python/samba/tests/security.py b/source4/scripting/python/samba/tests/security.py new file mode 100644 index 0000000000..22f7df6b1c --- /dev/null +++ b/source4/scripting/python/samba/tests/security.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python + +# Unix SMB/CIFS implementation. +# Copyright (C) Jelmer Vernooij 2007 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import samba.tests +from samba.dcerpc import security + +class SecurityTokenTests(samba.tests.TestCase): + + def setUp(self): + super(SecurityTokenTests, self).setUp() + self.token = security.token() + + def test_is_system(self): + self.assertFalse(self.token.is_system()) + + def test_is_anonymous(self): + self.assertFalse(self.token.is_anonymous()) + + def test_has_builtin_administrators(self): + self.assertFalse(self.token.has_builtin_administrators()) + + def test_has_nt_authenticated_users(self): + self.assertFalse(self.token.has_nt_authenticated_users()) + + def test_has_priv(self): + self.assertFalse(self.token.has_privilege(security.SEC_PRIV_SHUTDOWN)) + + def test_set_priv(self): + self.assertFalse(self.token.has_privilege(security.SEC_PRIV_SHUTDOWN)) + self.assertFalse(self.token.set_privilege(security.SEC_PRIV_SHUTDOWN)) + self.assertTrue(self.token.has_privilege(security.SEC_PRIV_SHUTDOWN)) + + +class SecurityDescriptorTests(samba.tests.TestCase): + + def setUp(self): + super(SecurityDescriptorTests, self).setUp() + self.descriptor = security.descriptor() + + def test_from_sddl(self): + desc = security.descriptor.from_sddl("O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)", security.dom_sid("S-2-0-0")) + self.assertEquals(desc.group_sid, security.dom_sid('S-2-0-0-512')) + self.assertEquals(desc.owner_sid, security.dom_sid('S-1-5-32-548')) + self.assertEquals(desc.revision, 1) + self.assertEquals(desc.sacl, None) + self.assertEquals(desc.type, 0x8004) + + def test_from_sddl_invalidsddl(self): + self.assertRaises(TypeError,security.descriptor.from_sddl, "foo",security.dom_sid("S-2-0-0")) + + def test_from_sddl_invalidtype1(self): + self.assertRaises(TypeError, security.descriptor.from_sddl, security.dom_sid('S-2-0-0-512'),security.dom_sid("S-2-0-0")) + + def test_from_sddl_invalidtype2(self): + sddl = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" + self.assertRaises(TypeError, security.descriptor.from_sddl, sddl, + "S-2-0-0") + + def test_as_sddl(self): + text = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" + dom = security.dom_sid("S-2-0-0") + desc1 = security.descriptor.from_sddl(text, dom) + desc2 = security.descriptor.from_sddl(desc1.as_sddl(dom), dom) + self.assertEquals(desc1.group_sid, desc2.group_sid) + self.assertEquals(desc1.owner_sid, desc2.owner_sid) + self.assertEquals(desc1.sacl, desc2.sacl) + self.assertEquals(desc1.type, desc2.type) + + def test_as_sddl_invalid(self): + text = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" + dom = security.dom_sid("S-2-0-0") + desc1 = security.descriptor.from_sddl(text, dom) + self.assertRaises(TypeError, desc1.as_sddl,text) + + + def test_as_sddl_no_domainsid(self): + dom = security.dom_sid("S-2-0-0") + text = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" + desc1 = security.descriptor.from_sddl(text, dom) + desc2 = security.descriptor.from_sddl(desc1.as_sddl(), dom) + self.assertEquals(desc1.group_sid, desc2.group_sid) + self.assertEquals(desc1.owner_sid, desc2.owner_sid) + self.assertEquals(desc1.sacl, desc2.sacl) + self.assertEquals(desc1.type, desc2.type) + + def test_domsid_nodomsid_as_sddl(self): + dom = security.dom_sid("S-2-0-0") + text = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" + desc1 = security.descriptor.from_sddl(text, dom) + self.assertNotEqual(desc1.as_sddl(), desc1.as_sddl(dom)) + + def test_split(self): + dom = security.dom_sid("S-2-0-7") + self.assertEquals((security.dom_sid("S-2-0"), 7), dom.split()) + + +class DomSidTests(samba.tests.TestCase): + + def test_parse_sid(self): + sid = security.dom_sid("S-1-5-21") + self.assertEquals("S-1-5-21", str(sid)) + + def test_sid_equal(self): + sid1 = security.dom_sid("S-1-5-21") + sid2 = security.dom_sid("S-1-5-21") + self.assertEquals(sid1, sid1) + self.assertEquals(sid1, sid2) + + def test_random(self): + sid = security.random_sid() + self.assertTrue(str(sid).startswith("S-1-5-21-")) + + def test_repr(self): + sid = security.random_sid() + self.assertTrue(repr(sid).startswith("dom_sid('S-1-5-21-")) + + +class PrivilegeTests(samba.tests.TestCase): + + def test_privilege_name(self): + self.assertEquals("SeShutdownPrivilege", + security.privilege_name(security.SEC_PRIV_SHUTDOWN)) + + def test_privilege_id(self): + self.assertEquals(security.SEC_PRIV_SHUTDOWN, + security.privilege_id("SeShutdownPrivilege")) + diff --git a/source4/selftest/tests.sh b/source4/selftest/tests.sh index 596604b627..b3bb85dd34 100755 --- a/source4/selftest/tests.sh +++ b/source4/selftest/tests.sh @@ -104,7 +104,7 @@ planpythontestsuite() { env=$2 module="$3" shift 3 - plantestsuite_idlist "$name" "$env" PYTHONPATH=$samba4srcdir/../lib/subunit/python:$samba4srcdir/../lib/testtools $PYTHON -m subunit.run $module + plantestsuite_idlist "$name" "$env" PYTHONPATH=$PYTHONPATH:$samba4srcdir/../lib/subunit/python:$samba4srcdir/../lib/testtools $PYTHON -m subunit.run $module } plansmbtorturetestsuite() { @@ -175,8 +175,6 @@ do plansmbtorturetestsuite "$t" dc "-U\$USERNAME%\$PASSWORD" //\$SERVER_IP/_none_ done -# only do the ldb tests when not in quick mode - they are quite slow, and ldb -# is now pretty well tested by the rest of the quick tests anyway LDBDIR=$samba4srcdir/lib/ldb export LDBDIR # Don't run LDB tests when using system ldb, as we won't have ldbtest installed @@ -498,13 +496,13 @@ fi SUBUNITRUN="$VALGRIND $PYTHON $samba4srcdir/scripting/bin/subunitrun" plantestsuite "ldb.python" none PYTHONPATH="$PYTHONPATH:$samba4srcdir/lib/ldb/tests/python/" $PYTHON $samba4srcdir/lib/ldb/tests/python/api.py plantestsuite "credentials.python" none PYTHONPATH="$PYTHONPATH:$samba4srcdir/auth/credentials/tests" $SUBUNITRUN bindings -plantestsuite "gensec.python" none PYTHONPATH="$PYTHONPATH:$samba4srcdir/auth/gensec/tests" $SUBUNITRUN bindings -plantestsuite "registry.python" none PYTHONPATH="$PYTHONPATH:$samba4srcdir/lib/registry/tests/" $SUBUNITRUN bindings +planpythontestsuite "gensec.python" none samba.tests.gensec +planpythontestsuite "registry.python" none samba.tests.registry plantestsuite "tdb.python" none PYTHONPATH="$PYTHONPATH:../lib/tdb/python/tests" $SUBUNITRUN simple -plantestsuite "auth.python" none PYTHONPATH="$PYTHONPATH:$samba4srcdir/auth/tests/" $SUBUNITRUN bindings -plantestsuite "security.python" none PYTHONPATH="$PYTHONPATH:$samba4srcdir/libcli/security/tests" $SUBUNITRUN bindings -plantestsuite "misc.python" none $SUBUNITRUN samba.tests.dcerpc.misc -plantestsuite "param.python" none PYTHONPATH="$PYTHONPATH:$samba4srcdir/param/tests" $SUBUNITRUN bindings +planpythontestsuite "auth.python" none samba.tests.auth +planpythontestsuite "security.python" none samba.tests.security +planpythontestsuite "misc.python" none samba.tests.dcerpc.misc +planpythontestsuite "param.python" none samba.tests.param planpythontestsuite "upgrade.python" none samba.tests.upgrade planpythontestsuite "samba.python" none samba.tests planpythontestsuite "provision.python" none samba.tests.provision @@ -517,7 +515,7 @@ planpythontestsuite "unixinfo.python" dc:local samba.tests.dcerpc.unix planpythontestsuite "rpc_talloc.python" none samba.tests.dcerpc.rpc_talloc planpythontestsuite "samdb.python" none samba.tests.samdb planpythontestsuite "shares.python" none samba.tests.shares -plantestsuite "messaging.python" none PYTHONPATH="$PYTHONPATH:$samba4srcdir/lib/messaging/tests" $SUBUNITRUN bindings +planpythontestsuite "messaging.python" none samba.tests.messaging plantestsuite "samba3sam.python" none PYTHONPATH="$PYTHONPATH:$samba4srcdir/dsdb/samdb/ldb_modules/tests" $SUBUNITRUN samba3sam planpythontestsuite "subunit.python" none subunit planpythontestsuite "rpcecho.python" dc:local samba.tests.dcerpc.rpcecho -- cgit