1
0
mirror of https://github.com/samba-team/samba.git synced 2025-07-23 20:59:10 +03:00

s4-selftest: Move more tests to scripting/python, simplifies running of tests.

This commit is contained in:
Jelmer Vernooij
2010-09-21 22:54:10 -07:00
parent 118c6548bb
commit e12e661f35
9 changed files with 12 additions and 14 deletions

View File

@ -0,0 +1,33 @@
#!/usr/bin/env python
# Unix SMB/CIFS implementation.
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 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 <http://www.gnu.org/licenses/>.
#
"""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()

View File

@ -3,12 +3,12 @@
# Unix SMB/CIFS implementation.
# Copyright © Jelmer Vernooij <jelmer@samba.org> 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

View File

@ -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):

View File

@ -0,0 +1,39 @@
#!/usr/bin/env python
# Unix SMB/CIFS implementation.
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 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 <http://www.gnu.org/licenses/>.
#
"""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())

View File

@ -0,0 +1,58 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Unix SMB/CIFS implementation.
# Copyright © Jelmer Vernooij <jelmer@samba.org> 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 <http://www.gnu.org/licenses/>.
#
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, "")

View File

@ -0,0 +1,57 @@
#!/usr/bin/env python
# Unix SMB/CIFS implementation.
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 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 <http://www.gnu.org/licenses/>.
#
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")

View File

@ -0,0 +1,60 @@
#!/usr/bin/env python
# Unix SMB/CIFS implementation.
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 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 <http://www.gnu.org/licenses/>.
#
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()

View File

@ -0,0 +1,143 @@
#!/usr/bin/env python
# Unix SMB/CIFS implementation.
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 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 <http://www.gnu.org/licenses/>.
#
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"))