1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-18 06:04:06 +03:00

64 lines
2.3 KiB
Python
Raw Normal View History

# 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/>.
#
"""Tests for samba.samdb."""
import logging
import os
import shutil
from samba.auth import system_session
from samba.provision import provision
from samba.tests import TestCaseInTempDir
from samba.dsdb import DS_DOMAIN_FUNCTION_2008_R2
class SamDBTestCase(TestCaseInTempDir):
"""Base-class for tests with a Sam Database.
This is used by the Samba SamDB-tests, but e.g. also by the OpenChange
provisioning tests (which need a Sam).
"""
def setUp(self):
super(SamDBTestCase, self).setUp()
self.session = system_session()
logger = logging.getLogger("selftest")
domain = "dsdb"
realm = "dsdb.samba.example.com"
host_name = "test"
server_role = "active directory domain controller"
self.result = provision(logger,
self.session, targetdir=self.tempdir,
realm=realm, domain=domain,
hostname=host_name,
use_ntvfs=True,
serverrole=server_role,
dns_backend="SAMBA_INTERNAL",
dom_for_fun_level=DS_DOMAIN_FUNCTION_2008_R2)
self.samdb = self.result.samdb
self.lp = self.result.lp
def tearDown(self):
for f in ['names.tdb']:
os.remove(os.path.join(self.tempdir, f))
provision: set 'binddns dir' when making new smb.conf When creating a new smb.conf from scratch during a join/clone/etc, the 'binddns dir' setting still uses the source smb.conf/default setting, instead of the targetdir sub-directory. I noticed this problem when trying to create a new testenv - the provision() was trying to create /usr/local/samba/bind-dns directory, which would fail if samba hadn't already been installed on the host machine. Now that this is fixed, we also need to fix tests that were explicitly asserting that no unexpected directories were left behind after the test completes. This change also breaks the upgradeprovision script. The upgrade- provision calls newprovision() to create a reference provision in a temporary directory. However, previously this temporary provision was creating the bind-dns directory in the actual upgrade directory as a side-effect, e.g. it did a provision() with targetdir=alpha13_upgrade_full/private/referenceprovisionLBKBh2 and this ended up creating alpha13_upgrade_full/bind-dns as a side-effect. The provision() now creates bind-dns in the specified targetdir, but this means check_for_DNS() fails (it tries to create bind-dns sub- directories, but the upgrade's bind-dns doesn't exist). I've avoided this problem by making sure bind-dns exists as part of the check_for_DNS() processing. Signed-off-by: Tim Beale <timbeale@catalyst.net.nz> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> Autobuild-Date(master): Thu Jun 28 06:22:16 CEST 2018 on sn-devel-144
2018-06-25 14:00:59 +12:00
for d in ['etc', 'msg.lock', 'private', 'state', 'bind-dns']:
shutil.rmtree(os.path.join(self.tempdir, d))
super(SamDBTestCase, self).tearDown()