diff options
| author | Jelmer Vernooij <jelmer@samba.org> | 2012-12-28 15:37:14 +0100 |
|---|---|---|
| committer | Andrew Bartlett <abartlet@samba.org> | 2013-03-02 03:57:34 +0100 |
| commit | 87afc3aee1ea593069322a49355dd8780d99e123 (patch) | |
| tree | 8e1ea6678d93b53f21b34c4940b7d5a64e0f5020 /source4/scripting/python/samba/tests | |
| parent | 80fce353e740c793619005ac102ab07fb5e7d280 (diff) | |
| download | samba-87afc3aee1ea593069322a49355dd8780d99e123.tar.gz samba-87afc3aee1ea593069322a49355dd8780d99e123.tar.bz2 samba-87afc3aee1ea593069322a49355dd8780d99e123.zip | |
Move python modules from source4/scripting/python/ to python/.
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Sat Mar 2 03:57:34 CET 2013 on sn-devel-104
Diffstat (limited to 'source4/scripting/python/samba/tests')
53 files changed, 0 insertions, 7489 deletions
diff --git a/source4/scripting/python/samba/tests/__init__.py b/source4/scripting/python/samba/tests/__init__.py deleted file mode 100644 index 2df30a641bf..00000000000 --- a/source4/scripting/python/samba/tests/__init__.py +++ /dev/null @@ -1,237 +0,0 @@ -# Unix SMB/CIFS implementation. -# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2010 -# -# 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/>. -# - -"""Samba Python tests.""" - -import os -import ldb -import samba -import samba.auth -from samba import param -from samba.samdb import SamDB -import subprocess -import tempfile - -samba.ensure_external_module("testtools", "testtools") - -# Other modules import these two classes from here, for convenience: -from testtools.testcase import ( - TestCase as TesttoolsTestCase, - TestSkipped, - ) - - -class TestCase(TesttoolsTestCase): - """A Samba test case.""" - - def setUp(self): - super(TestCase, self).setUp() - test_debug_level = os.getenv("TEST_DEBUG_LEVEL") - if test_debug_level is not None: - test_debug_level = int(test_debug_level) - self._old_debug_level = samba.get_debug_level() - samba.set_debug_level(test_debug_level) - self.addCleanup(samba.set_debug_level, test_debug_level) - - def get_loadparm(self): - return env_loadparm() - - def get_credentials(self): - return cmdline_credentials - - -class LdbTestCase(TesttoolsTestCase): - """Trivial test case for running tests against a LDB.""" - - def setUp(self): - super(LdbTestCase, self).setUp() - self.filename = os.tempnam() - self.ldb = samba.Ldb(self.filename) - - def set_modules(self, modules=[]): - """Change the modules for this Ldb.""" - m = ldb.Message() - m.dn = ldb.Dn(self.ldb, "@MODULES") - m["@LIST"] = ",".join(modules) - self.ldb.add(m) - self.ldb = samba.Ldb(self.filename) - - -class TestCaseInTempDir(TestCase): - - def setUp(self): - super(TestCaseInTempDir, self).setUp() - self.tempdir = tempfile.mkdtemp() - self.addCleanup(self._remove_tempdir) - - def _remove_tempdir(self): - self.assertEquals([], os.listdir(self.tempdir)) - os.rmdir(self.tempdir) - self.tempdir = None - - -def env_loadparm(): - lp = param.LoadParm() - try: - lp.load(os.environ["SMB_CONF_PATH"]) - except KeyError: - raise Exception("SMB_CONF_PATH not set") - return lp - - -def env_get_var_value(var_name): - """Returns value for variable in os.environ - - Function throws AssertionError if variable is defined. - Unit-test based python tests require certain input params - to be set in environment, otherwise they can't be run - """ - assert var_name in os.environ.keys(), "Please supply %s in environment" % var_name - return os.environ[var_name] - - -cmdline_credentials = None - -class RpcInterfaceTestCase(TestCase): - """DCE/RPC Test case.""" - - -class ValidNetbiosNameTests(TestCase): - - def test_valid(self): - self.assertTrue(samba.valid_netbios_name("FOO")) - - def test_too_long(self): - self.assertFalse(samba.valid_netbios_name("FOO"*10)) - - def test_invalid_characters(self): - self.assertFalse(samba.valid_netbios_name("*BLA")) - - -class BlackboxProcessError(Exception): - """This is raised when check_output() process returns a non-zero exit status - - Exception instance should contain the exact exit code (S.returncode), - command line (S.cmd), process output (S.stdout) and process error stream - (S.stderr) - """ - - def __init__(self, returncode, cmd, stdout, stderr): - self.returncode = returncode - self.cmd = cmd - self.stdout = stdout - self.stderr = stderr - - def __str__(self): - return "Command '%s'; exit status %d; stdout: '%s'; stderr: '%s'" % (self.cmd, self.returncode, - self.stdout, self.stderr) - -class BlackboxTestCase(TestCase): - """Base test case for blackbox tests.""" - - def _make_cmdline(self, line): - bindir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../../bin")) - parts = line.split(" ") - if os.path.exists(os.path.join(bindir, parts[0])): - parts[0] = os.path.join(bindir, parts[0]) - line = " ".join(parts) - return line - - def check_run(self, line): - line = self._make_cmdline(line) - p = subprocess.Popen(line, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) - retcode = p.wait() - if retcode: - raise BlackboxProcessError(retcode, line, p.stdout.read(), p.stderr.read()) - - def check_output(self, line): - line = self._make_cmdline(line) - p = subprocess.Popen(line, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, close_fds=True) - retcode = p.wait() - if retcode: - raise BlackboxProcessError(retcode, line, p.stdout.read(), p.stderr.read()) - return p.stdout.read() - -def connect_samdb(samdb_url, lp=None, session_info=None, credentials=None, - flags=0, ldb_options=None, ldap_only=False): - """Create SamDB instance and connects to samdb_url database. - - :param samdb_url: Url for database to connect to. - :param lp: Optional loadparm object - :param session_info: Optional session information - :param credentials: Optional credentials, defaults to anonymous. - :param flags: Optional LDB flags - :param ldap_only: If set, only remote LDAP connection will be created. - - Added value for tests is that we have a shorthand function - to make proper URL for ldb.connect() while using default - parameters for connection based on test environment - """ - samdb_url = samdb_url.lower() - if not "://" in samdb_url: - if not ldap_only and os.path.isfile(samdb_url): - samdb_url = "tdb://%s" % samdb_url - else: - samdb_url = "ldap://%s" % samdb_url - # use 'paged_search' module when connecting remotely - if samdb_url.startswith("ldap://"): - ldb_options = ["modules:paged_searches"] - elif ldap_only: - raise AssertionError("Trying to connect to %s while remote " - "connection is required" % samdb_url) - - # set defaults for test environment - if lp is None: - lp = env_loadparm() - if session_info is None: - session_info = samba.auth.system_session(lp) - if credentials is None: - credentials = cmdline_credentials - - return SamDB(url=samdb_url, - lp=lp, - session_info=session_info, - credentials=credentials, - flags=flags, - options=ldb_options) - - -def connect_samdb_ex(samdb_url, lp=None, session_info=None, credentials=None, - flags=0, ldb_options=None, ldap_only=False): - """Connects to samdb_url database - - :param samdb_url: Url for database to connect to. - :param lp: Optional loadparm object - :param session_info: Optional session information - :param credentials: Optional credentials, defaults to anonymous. - :param flags: Optional LDB flags - :param ldap_only: If set, only remote LDAP connection will be created. - :return: (sam_db_connection, rootDse_record) tuple - """ - sam_db = connect_samdb(samdb_url, lp, session_info, credentials, - flags, ldb_options, ldap_only) - # fetch RootDse - res = sam_db.search(base="", expression="", scope=ldb.SCOPE_BASE, - attrs=["*"]) - return (sam_db, res[0]) - - -def delete_force(samdb, dn): - try: - samdb.delete(dn) - except ldb.LdbError, (num, _): - assert(num == ldb.ERR_NO_SUCH_OBJECT) diff --git a/source4/scripting/python/samba/tests/auth.py b/source4/scripting/python/samba/tests/auth.py deleted file mode 100644 index f71e1a784d2..00000000000 --- a/source4/scripting/python/samba/tests/auth.py +++ /dev/null @@ -1,31 +0,0 @@ -# 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() - diff --git a/source4/scripting/python/samba/tests/blackbox/__init__.py b/source4/scripting/python/samba/tests/blackbox/__init__.py deleted file mode 100644 index 361e5cfe5e5..00000000000 --- a/source4/scripting/python/samba/tests/blackbox/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (C) 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/>. -# - -"""Blackbox tests. """ diff --git a/source4/scripting/python/samba/tests/blackbox/ndrdump.py b/source4/scripting/python/samba/tests/blackbox/ndrdump.py deleted file mode 100644 index fca9a931533..00000000000 --- a/source4/scripting/python/samba/tests/blackbox/ndrdump.py +++ /dev/null @@ -1,49 +0,0 @@ -# Blackbox tests for ndrdump -# Copyright (C) 2008 Andrew Tridgell <tridge@samba.org> -# Copyright (C) 2008 Andrew Bartlett <abartlet@samba.org> -# Copyright (C) 2010 Jelmer Vernooij <jelmer@samba.org> -# based on test_smbclient.sh - -# 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/>. -# - -"""Blackbox tests for ndrdump.""" - -import os -from samba.tests import BlackboxTestCase - -for p in [ "../../../../../source4/librpc/tests", "../../../../../librpc/tests"]: - data_path_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), p)) - print data_path_dir - if os.path.exists(data_path_dir): - break - - -class NdrDumpTests(BlackboxTestCase): - """Blackbox tests for ndrdump.""" - - def data_path(self, name): - return os.path.join(data_path_dir, name) - - def test_ndrdump_with_in(self): - self.check_run("ndrdump samr samr_CreateUser in %s" % (self.data_path("samr-CreateUser-in.dat"))) - - def test_ndrdump_with_out(self): - self.check_run("ndrdump samr samr_CreateUser out %s" % (self.data_path("samr-CreateUser-out.dat"))) - - def test_ndrdump_context_file(self): - self.check_run("ndrdump --context-file %s samr samr_CreateUser out %s" % (self.data_path("samr-CreateUser-in.dat"), self.data_path("samr-CreateUser-out.dat"))) - - def test_ndrdump_with_validate(self): - self.check_run("ndrdump --validate samr samr_CreateUser in %s" % (self.data_path("samr-CreateUser-in.dat"))) diff --git a/source4/scripting/python/samba/tests/blackbox/samba_tool_drs.py b/source4/scripting/python/samba/tests/blackbox/samba_tool_drs.py deleted file mode 100644 index 62d7bf123bb..00000000000 --- a/source4/scripting/python/samba/tests/blackbox/samba_tool_drs.py +++ /dev/null @@ -1,97 +0,0 @@ -# Blackbox tests for "samba-tool drs" command -# Copyright (C) Kamen Mazdrashki <kamenim@samba.org> 2011 -# -# 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/>. -# - -"""Blackbox tests for samba-tool drs.""" - -import samba.tests - - -class SambaToolDrsTests(samba.tests.BlackboxTestCase): - """Blackbox test case for samba-tool drs.""" - - def setUp(self): - super(SambaToolDrsTests, self).setUp() - - self.dc1 = samba.tests.env_get_var_value("DC1") - self.dc2 = samba.tests.env_get_var_value("DC2") - - creds = self.get_credentials() - self.cmdline_creds = "-U%s/%s%%%s" % (creds.get_domain(), - creds.get_username(), creds.get_password()) - - def _get_rootDSE(self, dc): - samdb = samba.tests.connect_samdb(dc, lp=self.get_loadparm(), - credentials=self.get_credentials(), - ldap_only=True) - return samdb.search(base="", scope=samba.tests.ldb.SCOPE_BASE)[0] - - def test_samba_tool_bind(self): - """Tests 'samba-tool drs bind' command - Output should be like: - Extensions supported: - <list-of-supported-extensions> - Site GUID: <GUID> - Repl epoch: 0""" - out = self.check_output("samba-tool drs bind %s %s" % (self.dc1, - self.cmdline_creds)) - self.assertTrue("Site GUID:" in out) - self.assertTrue("Repl epoch:" in out) - - def test_samba_tool_kcc(self): - """Tests 'samba-tool drs kcc' command - Output should be like 'Consistency check on <DC> successful.'""" - out = self.check_output("samba-tool drs kcc %s %s" % (self.dc1, - self.cmdline_creds)) - self.assertTrue("Consistency check on" in out) - self.assertTrue("successful" in out) - - def test_samba_tool_showrepl(self): - """Tests 'samba-tool drs showrepl' command - Output should be like: - <site-name>/<domain-name> - DSA Options: <hex-options> - DSA object GUID: <DSA-object-GUID> - DSA invocationId: <DSA-invocationId> - <Inbound-connections-list> - <Outbound-connections-list> - <KCC-objects> - ... - TODO: Perhaps we should check at least for - DSA's objectGUDI and invocationId""" - out = self.check_output("samba-tool drs showrepl %s %s" % (self.dc1, - self.cmdline_creds)) - self.assertTrue("DSA Options:" in out) - self.assertTrue("DSA object GUID:" in out) - self.assertTrue("DSA invocationId:" in out) - - def test_samba_tool_options(self): - """Tests 'samba-tool drs options' command - Output should be like 'Current DSA options: IS_GC <OTHER_FLAGS>'""" - out = self.check_output("samba-tool drs options %s %s" % (self.dc1, - self.cmdline_creds)) - self.assertTrue("Current DSA options:" in out) - - def test_samba_tool_replicate(self): - """Tests 'samba-tool drs replicate' command - Output should be like 'Replicate from <DC-SRC> to <DC-DEST> was successful.'""" - nc_name = self._get_rootDSE(self.dc1)["defaultNamingContext"] - out = self.check_output("samba-tool drs replicate %s %s %s %s" % (self.dc1, - self.dc2, - nc_name, - self.cmdline_creds)) - self.assertTrue("Replicate from" in out) - self.assertTrue("was successful" in out) diff --git a/source4/scripting/python/samba/tests/common.py b/source4/scripting/python/samba/tests/common.py deleted file mode 100644 index 8794e9dc8b3..00000000000 --- a/source4/scripting/python/samba/tests/common.py +++ /dev/null @@ -1,40 +0,0 @@ -# Unix SMB/CIFS implementation. Tests for common.py routines -# Copyright (C) Andrew Tridgell 2011 -# -# 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 samba.common""" - -import samba, os -import samba.tests -from samba.common import * -from samba.samdb import SamDB - - -class CommonTests(samba.tests.TestCase): - |
