rubinius-net-ldap 0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rubocop.yml +5 -0
  4. data/.rubocop_todo.yml +462 -0
  5. data/.travis.yml +19 -0
  6. data/CONTRIBUTING.md +54 -0
  7. data/Contributors.rdoc +24 -0
  8. data/Gemfile +2 -0
  9. data/Hacking.rdoc +63 -0
  10. data/History.rdoc +260 -0
  11. data/License.rdoc +29 -0
  12. data/README.rdoc +65 -0
  13. data/Rakefile +17 -0
  14. data/lib/net-ldap.rb +2 -0
  15. data/lib/net/ber.rb +320 -0
  16. data/lib/net/ber/ber_parser.rb +182 -0
  17. data/lib/net/ber/core_ext.rb +55 -0
  18. data/lib/net/ber/core_ext/array.rb +96 -0
  19. data/lib/net/ber/core_ext/false_class.rb +10 -0
  20. data/lib/net/ber/core_ext/integer.rb +74 -0
  21. data/lib/net/ber/core_ext/string.rb +66 -0
  22. data/lib/net/ber/core_ext/true_class.rb +11 -0
  23. data/lib/net/ldap.rb +1229 -0
  24. data/lib/net/ldap/connection.rb +702 -0
  25. data/lib/net/ldap/dataset.rb +168 -0
  26. data/lib/net/ldap/dn.rb +225 -0
  27. data/lib/net/ldap/entry.rb +193 -0
  28. data/lib/net/ldap/error.rb +38 -0
  29. data/lib/net/ldap/filter.rb +778 -0
  30. data/lib/net/ldap/instrumentation.rb +23 -0
  31. data/lib/net/ldap/password.rb +38 -0
  32. data/lib/net/ldap/pdu.rb +297 -0
  33. data/lib/net/ldap/version.rb +5 -0
  34. data/lib/net/snmp.rb +264 -0
  35. data/rubinius-net-ldap.gemspec +37 -0
  36. data/script/install-openldap +112 -0
  37. data/script/package +7 -0
  38. data/script/release +16 -0
  39. data/test/ber/core_ext/test_array.rb +22 -0
  40. data/test/ber/core_ext/test_string.rb +25 -0
  41. data/test/ber/test_ber.rb +99 -0
  42. data/test/fixtures/cacert.pem +20 -0
  43. data/test/fixtures/openldap/memberof.ldif +33 -0
  44. data/test/fixtures/openldap/retcode.ldif +76 -0
  45. data/test/fixtures/openldap/slapd.conf.ldif +67 -0
  46. data/test/fixtures/seed.ldif +374 -0
  47. data/test/integration/test_add.rb +28 -0
  48. data/test/integration/test_ber.rb +30 -0
  49. data/test/integration/test_bind.rb +34 -0
  50. data/test/integration/test_delete.rb +31 -0
  51. data/test/integration/test_open.rb +88 -0
  52. data/test/integration/test_return_codes.rb +38 -0
  53. data/test/integration/test_search.rb +77 -0
  54. data/test/support/vm/openldap/.gitignore +1 -0
  55. data/test/support/vm/openldap/README.md +32 -0
  56. data/test/support/vm/openldap/Vagrantfile +33 -0
  57. data/test/test_dn.rb +44 -0
  58. data/test/test_entry.rb +65 -0
  59. data/test/test_filter.rb +223 -0
  60. data/test/test_filter_parser.rb +20 -0
  61. data/test/test_helper.rb +66 -0
  62. data/test/test_ldap.rb +60 -0
  63. data/test/test_ldap_connection.rb +404 -0
  64. data/test/test_ldif.rb +104 -0
  65. data/test/test_password.rb +10 -0
  66. data/test/test_rename.rb +77 -0
  67. data/test/test_search.rb +39 -0
  68. data/test/test_snmp.rb +119 -0
  69. data/test/test_ssl_ber.rb +40 -0
  70. data/test/testdata.ldif +101 -0
  71. data/testserver/ldapserver.rb +210 -0
  72. data/testserver/testdata.ldif +101 -0
  73. metadata +204 -0
@@ -0,0 +1,67 @@
1
+ dn: cn=config
2
+ objectClass: olcGlobal
3
+ cn: config
4
+ olcPidFile: /var/run/slapd/slapd.pid
5
+ olcArgsFile: /var/run/slapd/slapd.args
6
+ olcLogLevel: none
7
+ olcToolThreads: 1
8
+
9
+ dn: olcDatabase={-1}frontend,cn=config
10
+ objectClass: olcDatabaseConfig
11
+ objectClass: olcFrontendConfig
12
+ olcDatabase: {-1}frontend
13
+ olcSizeLimit: 500
14
+ olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
15
+ olcAccess: {1}to dn.exact="" by * read
16
+ olcAccess: {2}to dn.base="cn=Subschema" by * read
17
+
18
+ dn: olcDatabase=config,cn=config
19
+ objectClass: olcDatabaseConfig
20
+ olcDatabase: config
21
+ olcAccess: to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
22
+
23
+ dn: cn=schema,cn=config
24
+ objectClass: olcSchemaConfig
25
+ cn: schema
26
+
27
+ include: file:///etc/ldap/schema/core.ldif
28
+ include: file:///etc/ldap/schema/cosine.ldif
29
+ include: file:///etc/ldap/schema/nis.ldif
30
+ include: file:///etc/ldap/schema/inetorgperson.ldif
31
+
32
+ dn: cn=module{0},cn=config
33
+ objectClass: olcModuleList
34
+ cn: module{0}
35
+ olcModulePath: /usr/lib/ldap
36
+ olcModuleLoad: back_hdb
37
+
38
+ dn: olcBackend=hdb,cn=config
39
+ objectClass: olcBackendConfig
40
+ olcBackend: hdb
41
+
42
+ dn: olcDatabase=hdb,cn=config
43
+ objectClass: olcDatabaseConfig
44
+ objectClass: olcHdbConfig
45
+ olcDatabase: hdb
46
+ olcDbCheckpoint: 512 30
47
+ olcDbConfig: set_cachesize 1 0 0
48
+ olcDbConfig: set_lk_max_objects 1500
49
+ olcDbConfig: set_lk_max_locks 1500
50
+ olcDbConfig: set_lk_max_lockers 1500
51
+ olcLastMod: TRUE
52
+ olcSuffix: dc=rubyldap,dc=com
53
+ olcDbDirectory: /var/lib/ldap
54
+ olcRootDN: cn=admin,dc=rubyldap,dc=com
55
+ # admin's password: "passworD1"
56
+ olcRootPW: {SHA}LFSkM9eegU6j3PeGG7UuHrT/KZM=
57
+ olcDbIndex: objectClass eq
58
+ olcAccess: to attrs=userPassword,shadowLastChange
59
+ by self write
60
+ by anonymous auth
61
+ by dn="cn=admin,dc=rubyldap,dc=com" write
62
+ by * none
63
+ olcAccess: to dn.base="" by * read
64
+ olcAccess: to *
65
+ by self write
66
+ by dn="cn=admin,dc=rubyldap,dc=com" write
67
+ by * read
@@ -0,0 +1,374 @@
1
+ dn: ou=People,dc=rubyldap,dc=com
2
+ objectClass: top
3
+ objectClass: organizationalUnit
4
+ ou: People
5
+
6
+ dn: ou=Groups,dc=rubyldap,dc=com
7
+ objectClass: top
8
+ objectClass: organizationalUnit
9
+ ou: Groups
10
+
11
+ # Directory Superuser
12
+ dn: uid=admin,dc=rubyldap,dc=com
13
+ uid: admin
14
+ cn: system administrator
15
+ sn: administrator
16
+ objectClass: top
17
+ objectClass: person
18
+ objectClass: organizationalPerson
19
+ objectClass: inetOrgPerson
20
+ displayName: Directory Superuser
21
+ userPassword: passworD1
22
+
23
+ # Users 1-10
24
+
25
+ dn: uid=user1,ou=People,dc=rubyldap,dc=com
26
+ uid: user1
27
+ cn: user1
28
+ sn: user1
29
+ objectClass: top
30
+ objectClass: person
31
+ objectClass: organizationalPerson
32
+ objectClass: inetOrgPerson
33
+ userPassword: passworD1
34
+ mail: user1@rubyldap.com
35
+
36
+ dn: uid=user2,ou=People,dc=rubyldap,dc=com
37
+ uid: user2
38
+ cn: user2
39
+ sn: user2
40
+ objectClass: top
41
+ objectClass: person
42
+ objectClass: organizationalPerson
43
+ objectClass: inetOrgPerson
44
+ userPassword: passworD1
45
+ mail: user2@rubyldap.com
46
+
47
+ dn: uid=user3,ou=People,dc=rubyldap,dc=com
48
+ uid: user3
49
+ cn: user3
50
+ sn: user3
51
+ objectClass: top
52
+ objectClass: person
53
+ objectClass: organizationalPerson
54
+ objectClass: inetOrgPerson
55
+ userPassword: passworD1
56
+ mail: user3@rubyldap.com
57
+
58
+ dn: uid=user4,ou=People,dc=rubyldap,dc=com
59
+ uid: user4
60
+ cn: user4
61
+ sn: user4
62
+ objectClass: top
63
+ objectClass: person
64
+ objectClass: organizationalPerson
65
+ objectClass: inetOrgPerson
66
+ userPassword: passworD1
67
+ mail: user4@rubyldap.com
68
+
69
+ dn: uid=user5,ou=People,dc=rubyldap,dc=com
70
+ uid: user5
71
+ cn: user5
72
+ sn: user5
73
+ objectClass: top
74
+ objectClass: person
75
+ objectClass: organizationalPerson
76
+ objectClass: inetOrgPerson
77
+ userPassword: passworD1
78
+ mail: user5@rubyldap.com
79
+
80
+ dn: uid=user6,ou=People,dc=rubyldap,dc=com
81
+ uid: user6
82
+ cn: user6
83
+ sn: user6
84
+ objectClass: top
85
+ objectClass: person
86
+ objectClass: organizationalPerson
87
+ objectClass: inetOrgPerson
88
+ userPassword: passworD1
89
+ mail: user6@rubyldap.com
90
+
91
+ dn: uid=user7,ou=People,dc=rubyldap,dc=com
92
+ uid: user7
93
+ cn: user7
94
+ sn: user7
95
+ objectClass: top
96
+ objectClass: person
97
+ objectClass: organizationalPerson
98
+ objectClass: inetOrgPerson
99
+ userPassword: passworD1
100
+ mail: user7@rubyldap.com
101
+
102
+ dn: uid=user8,ou=People,dc=rubyldap,dc=com
103
+ uid: user8
104
+ cn: user8
105
+ sn: user8
106
+ objectClass: top
107
+ objectClass: person
108
+ objectClass: organizationalPerson
109
+ objectClass: inetOrgPerson
110
+ userPassword: passworD1
111
+ mail: user8@rubyldap.com
112
+
113
+ dn: uid=user9,ou=People,dc=rubyldap,dc=com
114
+ uid: user9
115
+ cn: user9
116
+ sn: user9
117
+ objectClass: top
118
+ objectClass: person
119
+ objectClass: organizationalPerson
120
+ objectClass: inetOrgPerson
121
+ userPassword: passworD1
122
+ mail: user9@rubyldap.com
123
+
124
+ dn: uid=user10,ou=People,dc=rubyldap,dc=com
125
+ uid: user10
126
+ cn: user10
127
+ sn: user10
128
+ objectClass: top
129
+ objectClass: person
130
+ objectClass: organizationalPerson
131
+ objectClass: inetOrgPerson
132
+ userPassword: passworD1
133
+ mail: user10@rubyldap.com
134
+
135
+ # Emailless User
136
+
137
+ dn: uid=emailless-user1,ou=People,dc=rubyldap,dc=com
138
+ uid: emailless-user1
139
+ cn: emailless-user1
140
+ sn: emailless-user1
141
+ objectClass: top
142
+ objectClass: person
143
+ objectClass: organizationalPerson
144
+ objectClass: inetOrgPerson
145
+ userPassword: passworD1
146
+
147
+ # Groupless User
148
+
149
+ dn: uid=groupless-user1,ou=People,dc=rubyldap,dc=com
150
+ uid: groupless-user1
151
+ cn: groupless-user1
152
+ sn: groupless-user1
153
+ objectClass: top
154
+ objectClass: person
155
+ objectClass: organizationalPerson
156
+ objectClass: inetOrgPerson
157
+ userPassword: passworD1
158
+
159
+ # Admin User
160
+
161
+ dn: uid=admin1,ou=People,dc=rubyldap,dc=com
162
+ uid: admin1
163
+ cn: admin1
164
+ sn: admin1
165
+ objectClass: top
166
+ objectClass: person
167
+ objectClass: organizationalPerson
168
+ objectClass: inetOrgPerson
169
+ userPassword: passworD1
170
+ mail: admin1@rubyldap.com
171
+
172
+ # Groups
173
+
174
+ dn: cn=ghe-users,ou=Groups,dc=rubyldap,dc=com
175
+ cn: ghe-users
176
+ objectClass: groupOfNames
177
+ member: uid=user1,ou=People,dc=rubyldap,dc=com
178
+ member: uid=emailless-user1,ou=People,dc=rubyldap,dc=com
179
+
180
+ dn: cn=all-users,ou=Groups,dc=rubyldap,dc=com
181
+ cn: all-users
182
+ objectClass: groupOfNames
183
+ member: cn=ghe-users,ou=Groups,dc=rubyldap,dc=com
184
+ member: uid=user1,ou=People,dc=rubyldap,dc=com
185
+ member: uid=user2,ou=People,dc=rubyldap,dc=com
186
+ member: uid=user3,ou=People,dc=rubyldap,dc=com
187
+ member: uid=user4,ou=People,dc=rubyldap,dc=com
188
+ member: uid=user5,ou=People,dc=rubyldap,dc=com
189
+ member: uid=user6,ou=People,dc=rubyldap,dc=com
190
+ member: uid=user7,ou=People,dc=rubyldap,dc=com
191
+ member: uid=user8,ou=People,dc=rubyldap,dc=com
192
+ member: uid=user9,ou=People,dc=rubyldap,dc=com
193
+ member: uid=user10,ou=People,dc=rubyldap,dc=com
194
+ member: uid=emailless-user1,ou=People,dc=rubyldap,dc=com
195
+
196
+ dn: cn=ghe-admins,ou=Groups,dc=rubyldap,dc=com
197
+ cn: ghe-admins
198
+ objectClass: groupOfNames
199
+ member: uid=admin1,ou=People,dc=rubyldap,dc=com
200
+
201
+ dn: cn=all-admins,ou=Groups,dc=rubyldap,dc=com
202
+ cn: all-admins
203
+ objectClass: groupOfNames
204
+ member: cn=ghe-admins,ou=Groups,dc=rubyldap,dc=com
205
+ member: uid=admin1,ou=People,dc=rubyldap,dc=com
206
+
207
+ dn: cn=n-member-group10,ou=Groups,dc=rubyldap,dc=com
208
+ cn: n-member-group10
209
+ objectClass: groupOfNames
210
+ member: uid=user1,ou=People,dc=rubyldap,dc=com
211
+ member: uid=user2,ou=People,dc=rubyldap,dc=com
212
+ member: uid=user3,ou=People,dc=rubyldap,dc=com
213
+ member: uid=user4,ou=People,dc=rubyldap,dc=com
214
+ member: uid=user5,ou=People,dc=rubyldap,dc=com
215
+ member: uid=user6,ou=People,dc=rubyldap,dc=com
216
+ member: uid=user7,ou=People,dc=rubyldap,dc=com
217
+ member: uid=user8,ou=People,dc=rubyldap,dc=com
218
+ member: uid=user9,ou=People,dc=rubyldap,dc=com
219
+ member: uid=user10,ou=People,dc=rubyldap,dc=com
220
+
221
+ dn: cn=nested-group1,ou=Groups,dc=rubyldap,dc=com
222
+ cn: nested-group1
223
+ objectClass: groupOfNames
224
+ member: uid=user1,ou=People,dc=rubyldap,dc=com
225
+ member: uid=user2,ou=People,dc=rubyldap,dc=com
226
+ member: uid=user3,ou=People,dc=rubyldap,dc=com
227
+ member: uid=user4,ou=People,dc=rubyldap,dc=com
228
+ member: uid=user5,ou=People,dc=rubyldap,dc=com
229
+
230
+ dn: cn=nested-group2,ou=Groups,dc=rubyldap,dc=com
231
+ cn: nested-group2
232
+ objectClass: groupOfNames
233
+ member: uid=user6,ou=People,dc=rubyldap,dc=com
234
+ member: uid=user7,ou=People,dc=rubyldap,dc=com
235
+ member: uid=user8,ou=People,dc=rubyldap,dc=com
236
+ member: uid=user9,ou=People,dc=rubyldap,dc=com
237
+ member: uid=user10,ou=People,dc=rubyldap,dc=com
238
+
239
+ dn: cn=nested-groups,ou=Groups,dc=rubyldap,dc=com
240
+ cn: nested-groups
241
+ objectClass: groupOfNames
242
+ member: cn=nested-group1,ou=Groups,dc=rubyldap,dc=com
243
+ member: cn=nested-group2,ou=Groups,dc=rubyldap,dc=com
244
+
245
+ dn: cn=n-member-nested-group1,ou=Groups,dc=rubyldap,dc=com
246
+ cn: n-member-nested-group1
247
+ objectClass: groupOfNames
248
+ member: cn=nested-group1,ou=Groups,dc=rubyldap,dc=com
249
+
250
+ dn: cn=deeply-nested-group0.0.0,ou=Groups,dc=rubyldap,dc=com
251
+ cn: deeply-nested-group0.0.0
252
+ objectClass: groupOfNames
253
+ member: uid=user1,ou=People,dc=rubyldap,dc=com
254
+ member: uid=user2,ou=People,dc=rubyldap,dc=com
255
+ member: uid=user3,ou=People,dc=rubyldap,dc=com
256
+ member: uid=user4,ou=People,dc=rubyldap,dc=com
257
+ member: uid=user5,ou=People,dc=rubyldap,dc=com
258
+
259
+ dn: cn=deeply-nested-group0.0.1,ou=Groups,dc=rubyldap,dc=com
260
+ cn: deeply-nested-group0.0.1
261
+ objectClass: groupOfNames
262
+ member: uid=user6,ou=People,dc=rubyldap,dc=com
263
+ member: uid=user7,ou=People,dc=rubyldap,dc=com
264
+ member: uid=user8,ou=People,dc=rubyldap,dc=com
265
+ member: uid=user9,ou=People,dc=rubyldap,dc=com
266
+ member: uid=user10,ou=People,dc=rubyldap,dc=com
267
+
268
+ dn: cn=deeply-nested-group0.0,ou=Groups,dc=rubyldap,dc=com
269
+ cn: deeply-nested-group0.0
270
+ objectClass: groupOfNames
271
+ member: cn=deeply-nested-group0.0.0,ou=Groups,dc=rubyldap,dc=com
272
+ member: cn=deeply-nested-group0.0.1,ou=Groups,dc=rubyldap,dc=com
273
+
274
+ dn: cn=deeply-nested-group0,ou=Groups,dc=rubyldap,dc=com
275
+ cn: deeply-nested-group0
276
+ objectClass: groupOfNames
277
+ member: cn=deeply-nested-group0.0,ou=Groups,dc=rubyldap,dc=com
278
+
279
+ dn: cn=deeply-nested-groups,ou=Groups,dc=rubyldap,dc=com
280
+ cn: deeply-nested-groups
281
+ objectClass: groupOfNames
282
+ member: cn=deeply-nested-group0,ou=Groups,dc=rubyldap,dc=com
283
+
284
+ dn: cn=n-depth-nested-group1,ou=Groups,dc=rubyldap,dc=com
285
+ cn: n-depth-nested-group1
286
+ objectClass: groupOfNames
287
+ member: cn=nested-group1,ou=Groups,dc=rubyldap,dc=com
288
+
289
+ dn: cn=n-depth-nested-group2,ou=Groups,dc=rubyldap,dc=com
290
+ cn: n-depth-nested-group2
291
+ objectClass: groupOfNames
292
+ member: cn=n-depth-nested-group1,ou=Groups,dc=rubyldap,dc=com
293
+
294
+ dn: cn=n-depth-nested-group3,ou=Groups,dc=rubyldap,dc=com
295
+ cn: n-depth-nested-group3
296
+ objectClass: groupOfNames
297
+ member: cn=n-depth-nested-group2,ou=Groups,dc=rubyldap,dc=com
298
+
299
+ dn: cn=n-depth-nested-group4,ou=Groups,dc=rubyldap,dc=com
300
+ cn: n-depth-nested-group4
301
+ objectClass: groupOfNames
302
+ member: cn=n-depth-nested-group3,ou=Groups,dc=rubyldap,dc=com
303
+
304
+ dn: cn=n-depth-nested-group5,ou=Groups,dc=rubyldap,dc=com
305
+ cn: n-depth-nested-group5
306
+ objectClass: groupOfNames
307
+ member: cn=n-depth-nested-group4,ou=Groups,dc=rubyldap,dc=com
308
+
309
+ dn: cn=n-depth-nested-group6,ou=Groups,dc=rubyldap,dc=com
310
+ cn: n-depth-nested-group6
311
+ objectClass: groupOfNames
312
+ member: cn=n-depth-nested-group5,ou=Groups,dc=rubyldap,dc=com
313
+
314
+ dn: cn=n-depth-nested-group7,ou=Groups,dc=rubyldap,dc=com
315
+ cn: n-depth-nested-group7
316
+ objectClass: groupOfNames
317
+ member: cn=n-depth-nested-group6,ou=Groups,dc=rubyldap,dc=com
318
+
319
+ dn: cn=n-depth-nested-group8,ou=Groups,dc=rubyldap,dc=com
320
+ cn: n-depth-nested-group8
321
+ objectClass: groupOfNames
322
+ member: cn=n-depth-nested-group7,ou=Groups,dc=rubyldap,dc=com
323
+
324
+ dn: cn=n-depth-nested-group9,ou=Groups,dc=rubyldap,dc=com
325
+ cn: n-depth-nested-group9
326
+ objectClass: groupOfNames
327
+ member: cn=n-depth-nested-group8,ou=Groups,dc=rubyldap,dc=com
328
+
329
+ dn: cn=head-group,ou=Groups,dc=rubyldap,dc=com
330
+ cn: head-group
331
+ objectClass: groupOfNames
332
+ member: cn=tail-group,ou=Groups,dc=rubyldap,dc=com
333
+ member: uid=user1,ou=People,dc=rubyldap,dc=com
334
+ member: uid=user2,ou=People,dc=rubyldap,dc=com
335
+ member: uid=user3,ou=People,dc=rubyldap,dc=com
336
+ member: uid=user4,ou=People,dc=rubyldap,dc=com
337
+ member: uid=user5,ou=People,dc=rubyldap,dc=com
338
+
339
+ dn: cn=tail-group,ou=Groups,dc=rubyldap,dc=com
340
+ cn: tail-group
341
+ objectClass: groupOfNames
342
+ member: cn=head-group,ou=Groups,dc=rubyldap,dc=com
343
+ member: uid=user6,ou=People,dc=rubyldap,dc=com
344
+ member: uid=user7,ou=People,dc=rubyldap,dc=com
345
+ member: uid=user8,ou=People,dc=rubyldap,dc=com
346
+ member: uid=user9,ou=People,dc=rubyldap,dc=com
347
+ member: uid=user10,ou=People,dc=rubyldap,dc=com
348
+
349
+ dn: cn=recursively-nested-groups,ou=Groups,dc=rubyldap,dc=com
350
+ cn: recursively-nested-groups
351
+ objectClass: groupOfNames
352
+ member: cn=head-group,ou=Groups,dc=rubyldap,dc=com
353
+ member: cn=tail-group,ou=Groups,dc=rubyldap,dc=com
354
+
355
+ # posixGroup
356
+
357
+ dn: cn=posix-group1,ou=Groups,dc=rubyldap,dc=com
358
+ cn: posix-group1
359
+ objectClass: posixGroup
360
+ gidNumber: 1001
361
+ memberUid: user1
362
+ memberUid: user2
363
+ memberUid: user3
364
+ memberUid: user4
365
+ memberUid: user5
366
+
367
+ # missing members
368
+
369
+ dn: cn=missing-users,ou=Groups,dc=rubyldap,dc=com
370
+ cn: missing-users
371
+ objectClass: groupOfNames
372
+ member: uid=user1,ou=People,dc=rubyldap,dc=com
373
+ member: uid=user2,ou=People,dc=rubyldap,dc=com
374
+ member: uid=nonexistent-user,ou=People,dc=rubyldap,dc=com
@@ -0,0 +1,28 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ class TestAddIntegration < LDAPIntegrationTestCase
4
+ def setup
5
+ super
6
+ @ldap.authenticate "cn=admin,dc=rubyldap,dc=com", "passworD1"
7
+
8
+ @dn = "uid=added-user1,ou=People,dc=rubyldap,dc=com"
9
+ end
10
+
11
+ def test_add
12
+ attrs = {
13
+ :objectclass => %w(top inetOrgPerson organizationalPerson person),
14
+ :uid => "added-user1",
15
+ :cn => "added-user1",
16
+ :sn => "added-user1",
17
+ :mail => "added-user1@rubyldap.com"
18
+ }
19
+
20
+ assert @ldap.add(:dn => @dn, :attributes => attrs), @ldap.get_operation_result.inspect
21
+
22
+ assert result = @ldap.search(:base => @dn, :scope => Net::LDAP::SearchScope_BaseObject).first
23
+ end
24
+
25
+ def teardown
26
+ @ldap.delete :dn => @dn
27
+ end
28
+ end