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"""
24 from tempfile
import mkdtemp
27 from samba
import ldif_utils
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",
42 ("CN=WIN07,CN=Servers,CN=Site-4,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
44 ("CN=WIN06,CN=Servers,CN=Site-3,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
46 ("CN=WIN09,CN=Servers,CN=Site-5,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
48 ("CN=WIN10,CN=Servers,CN=Site-5,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
50 ("CN=WIN02,CN=Servers,CN=Site-2,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
52 ("CN=WIN04,CN=Servers,CN=Site-2,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
54 ("CN=WIN03,CN=Servers,CN=Site-2,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
56 ("CN=WIN05,CN=Servers,CN=Site-2,CN=Sites,CN=Configuration,DC=ad,DC=samba,DC=example,DC=com",
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
):
65 super(LdifUtilTests
, self
).setUp()
67 self
.creds
= Credentials()
68 self
.creds
.guess(self
.lp
)
69 #self.creds.set_machine_account(self.lp)
70 self
.tmpdir
= mkdtemp()
73 #shutil.rmtree(self.tmpdir)
76 def test_write_search_url(self
):
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
="",
95 attrs
=["dsServiceName"])
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"
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"])
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):