Fix PEP8 warning E501 line too long
[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 class SchemaCmdTestCase(SambaToolCmdTest):
23     """Tests for samba-tool dsacl subcommands"""
24     samdb = None
25
26     def setUp(self):
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"]))
30
31     def tearDown(self):
32         super(SchemaCmdTestCase, self).tearDown()
33
34     def test_display_attribute(self):
35         """Tests that we can display schema attributes"""
36         (result, out, err) = self.runsublevelcmd("schema", ("attribute",
37                               "show"), "uid",
38                               "-H", "ldap://%s" % os.environ["DC_SERVER"],
39                               "-U%s%%%s" % (os.environ["DC_USERNAME"],
40                                             os.environ["DC_PASSWORD"]))
41
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)
45
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"]))
53
54         self.assertCmdFail(result, 'Unknown flag 9, please see --help')
55
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"]))
61
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)
65
66         (result, out, err) = self.runsublevelcmd("schema", ("attribute",
67                               "modify"), "uid",
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"]))
72
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)
76
77         (result, out, err) = self.runsublevelcmd("schema", ("attribute",
78                               "modify"), "uid",
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"]))
83
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)
87
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",
91                               "show_oc"), "cn",
92                               "-H", "ldap://%s" % os.environ["DC_SERVER"],
93                               "-U%s%%%s" % (os.environ["DC_USERNAME"],
94                                             os.environ["DC_PASSWORD"]))
95
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)
100
101     def test_display_objectclass(self):
102         """Tests that we can display schema objectclasses"""
103         (result, out, err) = self.runsublevelcmd("schema", ("objectclass",
104                               "show"), "person",
105                               "-H", "ldap://%s" % os.environ["DC_SERVER"],
106                               "-U%s%%%s" % (os.environ["DC_USERNAME"],
107                                             os.environ["DC_PASSWORD"]))
108
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)
112
113