KCC: tests/ldif_utils tests ldif import
[Samba.git] / python / samba / tests / ldif_utils.py
blob73eccfe2c5d00de8397a711b43ef823a27329f4f
1 # Unix SMB/CIFS implementation. Tests for graph_utils.py routines
2 # Copyright (C) Andrew Bartlett 2015
4 # Written by Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
20 """Tests for samba.ldif_utils"""
22 import samba
23 import os
24 from tempfile import mkdtemp
26 import samba.tests
27 from samba import ldif_utils
28 from samba import ldb
29 from samba.dcerpc import misc
32 from samba.param import LoadParm
33 from samba.credentials import Credentials
34 from samba.samdb import SamDB
36 MULTISITE_LDIF = os.path.join(os.environ['SRCDIR_ABS'],
37 "testdata/ldif-utils-test-multisite.ldif")
39 MULTISITE_LDIF_DSAS = (
40 ("CN=WIN08,CN=Servers,CN=Site-4,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
41 "Site-4"),
42 ("CN=WIN07,CN=Servers,CN=Site-4,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
43 "Site-4"),
44 ("CN=WIN06,CN=Servers,CN=Site-3,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
45 "Site-3"),
46 ("CN=WIN09,CN=Servers,CN=Site-5,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
47 "Site-5"),
48 ("CN=WIN10,CN=Servers,CN=Site-5,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
49 "Site-5"),
50 ("CN=WIN02,CN=Servers,CN=Site-2,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
51 "Site-2"),
52 ("CN=WIN04,CN=Servers,CN=Site-2,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
53 "Site-2"),
54 ("CN=WIN03,CN=Servers,CN=Site-2,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
55 "Site-2"),
56 ("CN=WIN05,CN=Servers,CN=Site-2,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
57 "Site-2"),
58 ("CN=WIN01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
59 "Default-First-Site-Name"),
63 class LdifUtilTests(samba.tests.TestCase):
64 def setUp(self):
65 super(LdifUtilTests, self).setUp()
66 self.lp = LoadParm()
67 self.creds = Credentials()
68 self.creds.guess(self.lp)
69 #self.creds.set_machine_account(self.lp)
70 self.tmpdir = mkdtemp()
72 def tearDown(self):
73 #shutil.rmtree(self.tmpdir)
74 pass
76 def test_write_search_url(self):
77 pass
78 #write_search_result(samdb, f, res)
80 def test_ldif_to_samdb(self):
81 dburl = os.path.join(self.tmpdir, "ldap")
82 samdb = ldif_utils.ldif_to_samdb(dburl, self.lp, MULTISITE_LDIF)
83 self.assertIsInstance(samdb, SamDB)
85 dsa = ("CN=WIN01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,"
86 "CN=Configuration,DC=ad,DC=samba,DC=example,DC=com")
87 res = samdb.search(ldb.Dn(samdb, "CN=NTDS Settings," + dsa),
88 scope=ldb.SCOPE_BASE, attrs=["objectGUID"])
90 ntds_guid = misc.GUID(samdb.get_ntds_GUID())
91 self.assertEqual(misc.GUID(res[0]["objectGUID"][0]), ntds_guid)
93 service_name_res = samdb.search(base="",
94 scope=ldb.SCOPE_BASE,
95 attrs=["dsServiceName"])
96 dn = ldb.Dn(samdb,
97 service_name_res[0]["dsServiceName"][0])
98 self.assertEqual(dn, ldb.Dn(samdb, "CN=NTDS Settings," + dsa))
100 def test_ldif_to_samdb_forced_local_dsa(self):
101 for dsa, site in MULTISITE_LDIF_DSAS:
102 dburl = os.path.join(self.tmpdir, "ldif-to-samba-forced-local-dsa"
103 "-%s" % dsa)
104 samdb = ldif_utils.ldif_to_samdb(dburl, self.lp, MULTISITE_LDIF,
105 forced_local_dsa=dsa)
106 self.assertIsInstance(samdb, SamDB)
107 self.assertEqual(samdb.server_site_name(), site)
109 res = samdb.search(ldb.Dn(samdb, "CN=NTDS Settings," + dsa),
110 scope=ldb.SCOPE_BASE, attrs=["objectGUID"])
112 ntds_guid = misc.GUID(samdb.get_ntds_GUID())
113 self.assertEqual(misc.GUID(res[0]["objectGUID"][0]), ntds_guid)
115 service_name_res = samdb.search(base="",
116 scope=ldb.SCOPE_BASE,
117 attrs=["dsServiceName"])
118 dn = ldb.Dn(samdb,
119 service_name_res[0]["dsServiceName"][0])
120 self.assertEqual(dn, ldb.Dn(samdb, "CN=NTDS Settings," + dsa))
122 def samdb_to_ldif_file(self):
123 #samdb_to_ldif_file(samdb, dburl, lp, creds, ldif_file):
124 pass