-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest_slapdobject.py
More file actions
126 lines (102 loc) · 3.37 KB
/
test_slapdobject.py
File metadata and controls
126 lines (102 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import slapd
import pytest
def test_nominal_case():
server = slapd.Slapd()
server.start()
server.restart()
server.stop()
def test_context_manager():
with slapd.Slapd() as server:
assert server._proc is not None
assert server._proc is None
server.stop()
def test_context_manager_after_start():
server = slapd.Slapd()
server.start()
assert server._proc is not None
with server:
assert server._proc is not None
assert server._proc is None
server.stop()
def test_commands():
server = slapd.Slapd()
server.start()
assert (
"dn:cn=manager,dc=slapd-test,dc=python-ldap,dc=org\n"
== server.ldapwhoami().stdout.decode("utf-8")
)
server.ldapsearch("ou=home", "dc=slapd-test,dc=python-ldap,dc=org", expected=32)
ldif = (
"dn: dc=slapd-test,dc=python-ldap,dc=org\n"
"objectClass: dcObject\n"
"objectClass: organization\n"
"dc: slapd-test\n"
"o: slapd-test\n"
"\n"
"dn: cn=Manager,dc=slapd-test,dc=python-ldap,dc=org\n"
"objectClass: applicationProcess\n"
"cn: Manager\n"
"\n"
"dn: ou=home,dc=slapd-test,dc=python-ldap,dc=org\n"
"objectClass: organizationalUnit\n"
"ou: home\n"
)
server.ldapadd(ldif)
assert (
"dn: ou=home,dc=slapd-test,dc=python-ldap,dc=org"
in server.slapcat().stdout.decode("utf-8")
)
server.ldapsearch("ou=home", "dc=slapd-test,dc=python-ldap,dc=org")
ldif = (
"dn: ou=home,dc=slapd-test,dc=python-ldap,dc=org\n"
"changetype: modify\n"
"add: description\n"
"description: foobar\n"
)
server.ldapmodify(ldif)
assert "foobar" in server.slapcat().stdout.decode("utf-8")
server.ldapdelete("ou=home,dc=slapd-test,dc=python-ldap,dc=org", True)
assert (
"dn: ou=home,dc=slapd-test,dc=python-ldap,dc=org"
not in server.slapcat().stdout.decode("utf-8")
)
server.stop()
def test_ldapadd_config_database():
server = slapd.Slapd()
server.start()
assert "dn: cn={1}myschema,cn=schema,cn=config" not in server.slapcat(
["-n0"]
).stdout.decode("utf-8")
ldif = (
"dn: cn=myschema,cn=schema,cn=config\n"
"objectClass: olcSchemaConfig\n"
"cn: myschema\n"
"olcAttributeTypes: ( 1.3.6.1.4.1.56207.1.1.1 NAME 'myAttribute'\n"
" EQUALITY caseExactMatch\n"
" ORDERING caseExactOrderingMatch\n"
" SUBSTR caseExactSubstringsMatch\n"
" SYNTAX 1.3.6.1.4.1.1466.115.121.1.15\n"
" SINGLE-VALUE\n"
" USAGE userApplications\n"
" X-ORIGIN 'mySchema1' )\n"
"olcObjectClasses: ( 1.3.6.1.4.1.56207.1.1.2 NAME 'myObject'\n"
" SUP top\n"
" STRUCTURAL\n"
" MUST (\n"
" cn $\n"
" myAttribute\n"
" )\n"
" X-ORIGIN 'mySchema2' )\n"
)
server.ldapadd(ldif)
assert "dn: cn={1}myschema,cn=schema,cn=config" in server.slapcat(
["-n0"]
).stdout.decode("utf-8")
def test_return_codes():
server = slapd.Slapd()
server.start()
with pytest.raises(RuntimeError):
server.ldapadd("bad ldif")
server.ldapadd("bad ldif", expected=247)
server.ldapadd("bad ldif", expected=(0, 247))
server.stop()