Initial work on a test for samba.tests.samdb
authorJelmer Vernooij <jelmer@samba.org>
Wed, 13 Feb 2008 01:18:45 +0000 (02:18 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Wed, 13 Feb 2008 01:18:45 +0000 (02:18 +0100)
(This used to be commit 8b33860954ca03be1ea45fd8d40963dbbd5b162f)

source4/samba4-skip
source4/scripting/python/samba/provision.py
source4/scripting/python/samba/tests/samdb.py [new file with mode: 0644]
source4/selftest/samba4_tests.sh

index b53f444c9cc811475be7b8c68d779906126057ad..ea69e297ceb33c4396576be04f129cf45a07f115 100644 (file)
@@ -50,4 +50,5 @@ RPC-FRSAPI                                                    # Not provided by Samba 4
 WINBIND                                                        # FIXME: This should not be skipped
 NSS-TEST                                               # Fails
 samba4.samba3sam.python                # Conversion from EJS not yet finished
+samba4.samdb.python                    # Not finished yet
 RAW-OFFLINE                    # Samba 4 doesn't have much offline support yet
index 4f52d36167b690735dbf3c215db2cdc05fd75629..97021fceb22511d696e8e2ab18cfe976645c2f56 100644 (file)
@@ -332,7 +332,6 @@ def setup_samdb_partitions(samdb_path, setup_path, message, lp, session_info,
     schemadn_ldb = "schema.ldb"
     if ldap_backend is not None:
         schema_ldb = ldap_backend
-    
        schemadn_ldb = ldap_backend
        
     if ldap_backend_type == "fedora-ds":
@@ -536,6 +535,8 @@ def setup_samdb(path, setup_path, session_info, credentials, lp,
     :note: This will wipe the main SAM database file!
     """
 
+    assert serverrole in ("domain controller", "member server")
+
     # Also wipes the database
     setup_samdb_partitions(path, setup_path, schemadn=schemadn, configdn=configdn, 
                            domaindn=domaindn, message=message, lp=lp,
diff --git a/source4/scripting/python/samba/tests/samdb.py b/source4/scripting/python/samba/tests/samdb.py
new file mode 100644 (file)
index 0000000..40e56be
--- /dev/null
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+
+# Unix SMB/CIFS implementation. Tests for SamDB
+# 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/>.
+#
+from auth import system_session
+from credentials import Credentials
+import os
+from samba.provision import setup_samdb
+from samba.samdb import SamDB
+from samba.tests import get_loadparm, TestCaseInTempDir
+import security
+from unittest import TestCase
+import uuid
+
+class SamDBTestCase(TestCaseInTempDir):
+    def setUp(self):
+        super(SamDBTestCase, self).setUp()
+        invocationid = uuid.random()
+        domaindn = "DC=COM,DC=EXAMPLE"
+        self.domaindn = domaindn
+        configdn = "CN=Configuration," + domaindn
+        schemadn = "CN=Schema," + configdn
+        domainguid = uuid.random()
+        policyguid = uuid.random()
+        setup_path = lambda x: os.path.join("setup", x)
+        creds = Credentials()
+        domainsid = security.random_sid()
+        hostguid = uuid.random()
+        path = os.path.join(self.tempdir, "samdb.ldb")
+        self.samdb = setup_samdb(path, setup_path, system_session(), creds, 
+                                 get_loadparm(), schemadn, configdn, 
+                                 self.domaindn, "example.com", "EXAMPLE.COM", 
+                                 "FOO", lambda x: None, "foo", domaindn, 
+                                 False, domainsid, "# no aci", domainguid, 
+                                 policyguid, "EXAMPLE", True, "secret", 
+                                 "secret", "secret", hostguid, invocationid, 
+                                 "secret", "domain controller")
+
+    def test_add_foreign(self):
+        self.samdb.add_foreign(self.domaindn, "S-1-5-7", "Somedescription")
+
index c90373e4465b2d6b4b577d63bfe4a9ec3b7bf5b2..2595d51177346967d336d4df872b387f530abc3e 100755 (executable)
@@ -320,6 +320,7 @@ then
        plantest "provision.python" none $SUBUNITRUN samba.tests.provision
        plantest "samba3.python" none $SUBUNITRUN samba.tests.samba3
        plantest "samr.python" dc $SUBUNITRUN samba.tests.dcerpc.sam
+       plantest "samdb.python" dc $SUBUNITRUN samba.tests.samdb
        plantest "events.python" none PYTHONPATH="$PYTHONPATH:lib/events" $SUBUNITRUN tests
        plantest "samba3sam.python" none PYTHONPATH="$PYTHONPATH:dsdb/samdb/ldb_modules/tests" $SUBUNITRUN samba3sam
        plantest "rpcecho.python" dc $SUBUNITRUN samba.tests.dcerpc.rpcecho