PEP8: fix E128: continuation line under-indented for visual indent
[samba.git] / python / samba / tests / samba_tool / schema.py
1 # Unix SMB/CIFS implementation.
2 # Copyright (C) William Brown <william@blackhats.net.au> 2018
3 #
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.
8 #
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.
13 #
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/>.
16 #
17
18 import os
19 import ldb
20 from samba.tests.samba_tool.base import SambaToolCmdTest
21
22
23 class SchemaCmdTestCase(SambaToolCmdTest):
24     """Tests for samba-tool dsacl subcommands"""
25     samdb = None
26
27     def setUp(self):
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"]))
31
32     def tearDown(self):
33         super(SchemaCmdTestCase, self).tearDown()
34
35     def test_display_attribute(self):
36         """Tests that we can display schema attributes"""
37         (result, out, err) = self.runsublevelcmd("schema", ("attribute",
38                                                             "show"), "uid",
39                                                  "-H", "ldap://%s" % os.environ["DC_SERVER"],
40                                                  "-U%s%%%s" % (os.environ["DC_USERNAME"],
41                                                                os.environ["DC_PASSWORD"]))
42
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)
46
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"]))
54
55         self.assertCmdFail(result, 'Unknown flag 9, please see --help')
56
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"]))
62
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)
66
67         (result, out, err) = self.runsublevelcmd("schema", ("attribute",
68                                                             "modify"), "uid",
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"]))
73
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)
77
78         (result, out, err) = self.runsublevelcmd("schema", ("attribute",
79                                                             "modify"), "uid",
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"]))
84
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)
88
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",
92                                                             "show_oc"), "cn",
93                                                  "-H", "ldap://%s" % os.environ["DC_SERVER"],
94                                                  "-U%s%%%s" % (os.environ["DC_USERNAME"],
95                                                                os.environ["DC_PASSWORD"]))
96
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)
101
102     def test_display_objectclass(self):
103         """Tests that we can display schema objectclasses"""
104         (result, out, err) = self.runsublevelcmd("schema", ("objectclass",
105                                                             "show"), "person",
106                                                  "-H", "ldap://%s" % os.environ["DC_SERVER"],
107                                                  "-U%s%%%s" % (os.environ["DC_USERNAME"],
108                                                                os.environ["DC_PASSWORD"]))
109
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)