1 # Unix SMB/CIFS implementation.
2 # Copyright (C) William Brown <william@blackhats.net.au> 2018
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
20 from samba.tests.samba_tool.base import SambaToolCmdTest
22 class SchemaCmdTestCase(SambaToolCmdTest):
23 """Tests for samba-tool dsacl subcommands"""
27 super(SchemaCmdTestCase, self).setUp()
28 self.samdb = self.getSamDB("-H", "ldap://%s" % os.environ["DC_SERVER"],
29 "-U%s%%%s" % (os.environ["DC_USERNAME"], os.environ["DC_PASSWORD"]))
32 super(SchemaCmdTestCase, self).tearDown()
34 def test_display_attribute(self):
35 """Tests that we can display schema attributes"""
36 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
38 "-H", "ldap://%s" % os.environ["DC_SERVER"],
39 "-U%s%%%s" % (os.environ["DC_USERNAME"],
40 os.environ["DC_PASSWORD"]))
42 self.assertCmdSuccess(result, out, err)
43 self.assertEquals(err,"","Shouldn't be any error messages")
44 self.assertIn("dn: CN=uid,CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com", out)
46 def test_modify_attribute_searchflags(self):
47 """Tests that we can modify searchFlags of an attribute"""
48 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
49 "modify"), "uid", "--searchflags=9",
50 "-H", "ldap://%s" % os.environ["DC_SERVER"],
51 "-U%s%%%s" % (os.environ["DC_USERNAME"],
52 os.environ["DC_PASSWORD"]))
54 self.assertCmdFail(result, 'Unknown flag 9, please see --help')
56 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
57 "modify"), "uid", "--searchflags=fATTINDEX",
58 "-H", "ldap://%s" % os.environ["DC_SERVER"],
59 "-U%s%%%s" % (os.environ["DC_USERNAME"],
60 os.environ["DC_PASSWORD"]))
62 self.assertCmdSuccess(result, out, err)
63 self.assertEquals(err,"","Shouldn't be any error messages")
64 self.assertIn("modified cn=uid,CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com", out)
66 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
68 "--searchflags=fATTINDEX,fSUBTREEATTINDEX",
69 "-H", "ldap://%s" % os.environ["DC_SERVER"],
70 "-U%s%%%s" % (os.environ["DC_USERNAME"],
71 os.environ["DC_PASSWORD"]))
73 self.assertCmdSuccess(result, out, err)
74 self.assertEquals(err,"","Shouldn't be any error messages")
75 self.assertIn("modified cn=uid,CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com", out)
77 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
79 "--searchflags=fAtTiNdEx,fPRESERVEONDELETE",
80 "-H", "ldap://%s" % os.environ["DC_SERVER"],
81 "-U%s%%%s" % (os.environ["DC_USERNAME"],
82 os.environ["DC_PASSWORD"]))
84 self.assertCmdSuccess(result, out, err)
85 self.assertEquals(err,"","Shouldn't be any error messages")
86 self.assertIn("modified cn=uid,CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com", out)
88 def test_show_oc_attribute(self):
89 """Tests that we can modify searchFlags of an attribute"""
90 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
92 "-H", "ldap://%s" % os.environ["DC_SERVER"],
93 "-U%s%%%s" % (os.environ["DC_USERNAME"],
94 os.environ["DC_PASSWORD"]))
96 self.assertCmdSuccess(result, out, err)
97 self.assertEquals(err,"","Shouldn't be any error messages")
98 self.assertIn("--- MAY contain ---", out)
99 self.assertIn("--- MUST contain ---", out)
101 def test_display_objectclass(self):
102 """Tests that we can display schema objectclasses"""
103 (result, out, err) = self.runsublevelcmd("schema", ("objectclass",
105 "-H", "ldap://%s" % os.environ["DC_SERVER"],
106 "-U%s%%%s" % (os.environ["DC_USERNAME"],
107 os.environ["DC_PASSWORD"]))
109 self.assertCmdSuccess(result, out, err)
110 self.assertEquals(err,"","Shouldn't be any error messages")
111 self.assertIn("dn: CN=Person,CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com", out)