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
23 class SchemaCmdTestCase(SambaToolCmdTest):
24 """Tests for samba-tool dsacl subcommands"""
28 super(SchemaCmdTestCase, self).setUp()
29 self.samdb = self.getSamDB("-H", "ldap://%s" % os.environ["DC_SERVER"],
30 "-U%s%%%s" % (os.environ["DC_USERNAME"], os.environ["DC_PASSWORD"]))
33 super(SchemaCmdTestCase, self).tearDown()
35 def test_display_attribute(self):
36 """Tests that we can display schema attributes"""
37 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
39 "-H", "ldap://%s" % os.environ["DC_SERVER"],
40 "-U%s%%%s" % (os.environ["DC_USERNAME"],
41 os.environ["DC_PASSWORD"]))
43 self.assertCmdSuccess(result, out, err)
44 self.assertEquals(err, "", "Shouldn't be any error messages")
45 self.assertIn("dn: CN=uid,CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com", out)
47 def test_modify_attribute_searchflags(self):
48 """Tests that we can modify searchFlags of an attribute"""
49 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
50 "modify"), "uid", "--searchflags=9",
51 "-H", "ldap://%s" % os.environ["DC_SERVER"],
52 "-U%s%%%s" % (os.environ["DC_USERNAME"],
53 os.environ["DC_PASSWORD"]))
55 self.assertCmdFail(result, 'Unknown flag 9, please see --help')
57 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
58 "modify"), "uid", "--searchflags=fATTINDEX",
59 "-H", "ldap://%s" % os.environ["DC_SERVER"],
60 "-U%s%%%s" % (os.environ["DC_USERNAME"],
61 os.environ["DC_PASSWORD"]))
63 self.assertCmdSuccess(result, out, err)
64 self.assertEquals(err, "", "Shouldn't be any error messages")
65 self.assertIn("modified cn=uid,CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com", out)
67 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
69 "--searchflags=fATTINDEX,fSUBTREEATTINDEX",
70 "-H", "ldap://%s" % os.environ["DC_SERVER"],
71 "-U%s%%%s" % (os.environ["DC_USERNAME"],
72 os.environ["DC_PASSWORD"]))
74 self.assertCmdSuccess(result, out, err)
75 self.assertEquals(err, "", "Shouldn't be any error messages")
76 self.assertIn("modified cn=uid,CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com", out)
78 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
80 "--searchflags=fAtTiNdEx,fPRESERVEONDELETE",
81 "-H", "ldap://%s" % os.environ["DC_SERVER"],
82 "-U%s%%%s" % (os.environ["DC_USERNAME"],
83 os.environ["DC_PASSWORD"]))
85 self.assertCmdSuccess(result, out, err)
86 self.assertEquals(err, "", "Shouldn't be any error messages")
87 self.assertIn("modified cn=uid,CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com", out)
89 def test_show_oc_attribute(self):
90 """Tests that we can modify searchFlags of an attribute"""
91 (result, out, err) = self.runsublevelcmd("schema", ("attribute",
93 "-H", "ldap://%s" % os.environ["DC_SERVER"],
94 "-U%s%%%s" % (os.environ["DC_USERNAME"],
95 os.environ["DC_PASSWORD"]))
97 self.assertCmdSuccess(result, out, err)
98 self.assertEquals(err, "", "Shouldn't be any error messages")
99 self.assertIn("--- MAY contain ---", out)
100 self.assertIn("--- MUST contain ---", out)
102 def test_display_objectclass(self):
103 """Tests that we can display schema objectclasses"""
104 (result, out, err) = self.runsublevelcmd("schema", ("objectclass",
106 "-H", "ldap://%s" % os.environ["DC_SERVER"],
107 "-U%s%%%s" % (os.environ["DC_USERNAME"],
108 os.environ["DC_PASSWORD"]))
110 self.assertCmdSuccess(result, out, err)
111 self.assertEquals(err, "", "Shouldn't be any error messages")
112 self.assertIn("dn: CN=Person,CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com", out)