~ubuntu-branches/ubuntu/trusty/freeipa/trusty

« back to all changes in this revision

Viewing changes to tests/test_xmlrpc/test_attr.py

  • Committer: Package Import Robot
  • Author(s): Timo Aaltonen
  • Date: 2013-03-07 14:10:03 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20130307141003-kz4lq9vj4x692mqq
Tags: 3.1.2-0ubuntu1
* Merge from unreleased debian git.
  - new upstream release
  - doesn't use chkconfig anymore (LP: #1025018, #1124093)
  - drop -U from the ntpdate options (LP: #1149468)

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
from ipalib import api, errors
25
25
from tests.test_xmlrpc import objectclasses
26
26
from xmlrpc_test import Declarative, fuzzy_digits, fuzzy_uuid
27
 
from ipalib.dn import *
 
27
from ipapython.dn import DN
28
28
 
29
29
user1=u'tuser1'
30
30
 
37
37
    tests = [
38
38
 
39
39
        dict(
 
40
            desc='Try to add user %r with single-value attribute set via '
 
41
                 'option and --addattr' % user1,
 
42
            command=(
 
43
                'user_add', [user1], dict(givenname=u'Test', sn=u'User1',
 
44
                    addattr=u'sn=User2')
 
45
            ),
 
46
            expected=errors.OnlyOneValueAllowed(attr='sn'),
 
47
        ),
 
48
 
 
49
        dict(
40
50
            desc='Create %r' % user1,
41
51
            command=(
42
 
                'user_add', [user1], dict(givenname=u'Test', sn=u'User1')
 
52
                'user_add', [user1], dict(givenname=u'Test', sn=u'User1',
 
53
                    setattr=None)
43
54
            ),
44
55
            expected=dict(
45
56
                value=user1,
55
66
                    uid=[user1],
56
67
                    uidnumber=[fuzzy_digits],
57
68
                    gidnumber=[fuzzy_digits],
 
69
                    mail=[u'%s@%s' % (user1, api.env.domain)],
58
70
                    displayname=[u'Test User1'],
59
71
                    cn=[u'Test User1'],
60
72
                    initials=[u'TU'],
61
73
                    ipauniqueid=[fuzzy_uuid],
62
 
                    krbpwdpolicyreference=lambda x: [DN(i) for i in x] == \
63
 
                        [DN(('cn','global_policy'),('cn',api.env.realm),
64
 
                            ('cn','kerberos'),api.env.basedn)],
65
 
                    mepmanagedentry=lambda x: [DN(i) for i in x] == \
66
 
                        [DN(('cn',user1),('cn','groups'),('cn','accounts'),
67
 
                            api.env.basedn)],
 
74
                    krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm),
 
75
                                              ('cn','kerberos'),api.env.basedn)],
 
76
                    mepmanagedentry=[DN(('cn',user1),('cn','groups'),('cn','accounts'),
 
77
                                        api.env.basedn)],
68
78
                    memberof_group=[u'ipausers'],
69
 
                    dn=lambda x: DN(x) == \
70
 
                        DN(('uid','tuser1'),('cn','users'),('cn','accounts'),
71
 
                           api.env.basedn),
 
79
                    dn=DN(('uid','tuser1'),('cn','users'),('cn','accounts'),
 
80
                          api.env.basedn),
72
81
                    has_keytab=False,
73
82
                    has_password=False,
74
83
                ),
210
219
 
211
220
 
212
221
        dict(
 
222
            desc='Delete one phone number for %r' % user1,
 
223
            command=(
 
224
                'user_mod', [user1], dict(delattr=u'telephoneNumber=301-555-1212')
 
225
            ),
 
226
            expected=dict(
 
227
                result=dict(
 
228
                    givenname=[u'Finkle'],
 
229
                    homedirectory=[u'/home/tuser1'],
 
230
                    loginshell=[u'/bin/sh'],
 
231
                    sn=[u'User1'],
 
232
                    uid=[user1],
 
233
                    uidnumber=[fuzzy_digits],
 
234
                    gidnumber=[fuzzy_digits],
 
235
                    mail=[u'test@example.com', u'test2@example.com'],
 
236
                    memberof_group=[u'ipausers'],
 
237
                    telephonenumber=[u'202-888-9833', u'703-555-1212'],
 
238
                    nsaccountlock=False,
 
239
                    has_keytab=False,
 
240
                    has_password=False,
 
241
                ),
 
242
                summary=u'Modified user "tuser1"',
 
243
                value=user1,
 
244
            ),
 
245
        ),
 
246
 
 
247
 
 
248
        dict(
 
249
            desc='Try deleting the number again for %r' % user1,
 
250
            command=(
 
251
                'user_mod', [user1], dict(delattr=u'telephoneNumber=301-555-1212')
 
252
            ),
 
253
            expected=errors.AttrValueNotFound(attr=u'telephonenumber',
 
254
                value=u'301-555-1212')
 
255
        ),
 
256
 
 
257
 
 
258
        dict(
 
259
            desc='Add and delete one phone number for %r' % user1,
 
260
            command=(
 
261
                'user_mod', [user1], dict(addattr=u'telephoneNumber=301-555-1212',
 
262
                                          delattr=u'telephoneNumber=202-888-9833')
 
263
            ),
 
264
            expected=dict(
 
265
                result=dict(
 
266
                    givenname=[u'Finkle'],
 
267
                    homedirectory=[u'/home/tuser1'],
 
268
                    loginshell=[u'/bin/sh'],
 
269
                    sn=[u'User1'],
 
270
                    uid=[user1],
 
271
                    uidnumber=[fuzzy_digits],
 
272
                    gidnumber=[fuzzy_digits],
 
273
                    mail=[u'test@example.com', u'test2@example.com'],
 
274
                    memberof_group=[u'ipausers'],
 
275
                    telephonenumber=[u'301-555-1212', u'703-555-1212'],
 
276
                    nsaccountlock=False,
 
277
                    has_keytab=False,
 
278
                    has_password=False,
 
279
                ),
 
280
                summary=u'Modified user "tuser1"',
 
281
                value=user1,
 
282
            ),
 
283
        ),
 
284
 
 
285
 
 
286
        dict(
 
287
            desc='Add and delete the same phone number for %r' % user1,
 
288
            command=(
 
289
                'user_mod', [user1], dict(addattr=(u'telephoneNumber=301-555-1212',
 
290
                                                   u'telephoneNumber=202-888-9833'),
 
291
                                          delattr=u'telephoneNumber=301-555-1212')
 
292
            ),
 
293
            expected=dict(
 
294
                result=dict(
 
295
                    givenname=[u'Finkle'],
 
296
                    homedirectory=[u'/home/tuser1'],
 
297
                    loginshell=[u'/bin/sh'],
 
298
                    sn=[u'User1'],
 
299
                    uid=[user1],
 
300
                    uidnumber=[fuzzy_digits],
 
301
                    gidnumber=[fuzzy_digits],
 
302
                    mail=[u'test@example.com', u'test2@example.com'],
 
303
                    memberof_group=[u'ipausers'],
 
304
                    telephonenumber=[u'703-555-1212', u'301-555-1212', u'202-888-9833'],
 
305
                    nsaccountlock=False,
 
306
                    has_keytab=False,
 
307
                    has_password=False,
 
308
                ),
 
309
                summary=u'Modified user "tuser1"',
 
310
                value=user1,
 
311
            ),
 
312
        ),
 
313
 
 
314
 
 
315
        dict(
 
316
            desc='Set and delete a phone number for %r' % user1,
 
317
            command=(
 
318
                'user_mod', [user1], dict(setattr=(u'telephoneNumber=301-555-1212',
 
319
                                                   u'telephoneNumber=202-888-9833'),
 
320
                                          delattr=u'telephoneNumber=301-555-1212')
 
321
            ),
 
322
            expected=dict(
 
323
                result=dict(
 
324
                    givenname=[u'Finkle'],
 
325
                    homedirectory=[u'/home/tuser1'],
 
326
                    loginshell=[u'/bin/sh'],
 
327
                    sn=[u'User1'],
 
328
                    uid=[user1],
 
329
                    uidnumber=[fuzzy_digits],
 
330
                    gidnumber=[fuzzy_digits],
 
331
                    mail=[u'test@example.com', u'test2@example.com'],
 
332
                    memberof_group=[u'ipausers'],
 
333
                    telephonenumber=[u'202-888-9833'],
 
334
                    nsaccountlock=False,
 
335
                    has_keytab=False,
 
336
                    has_password=False,
 
337
                ),
 
338
                summary=u'Modified user "tuser1"',
 
339
                value=user1,
 
340
            ),
 
341
        ),
 
342
 
 
343
 
 
344
        dict(
213
345
            desc='Try setting givenname to None with setattr in %r' % user1,
214
346
            command=(
215
347
                'user_mod', [user1], dict(setattr=(u'givenname='))
223
355
            command=(
224
356
                'user_mod', [user1], dict(givenname=None)
225
357
            ),
226
 
            expected=errors.RequirementError(name='givenname'),
 
358
            expected=errors.RequirementError(name='first'),
227
359
        ),
228
360
 
229
361
 
243
375
                    gidnumber=[fuzzy_digits],
244
376
                    mail=[u'test@example.com', u'test2@example.com'],
245
377
                    memberof_group=[u'ipausers'],
246
 
                    telephonenumber=[u'301-555-1212', u'202-888-9833', u'703-555-1212'],
 
378
                    telephonenumber=[u'202-888-9833'],
247
379
                    nsaccountlock=False,
248
380
                    has_keytab=False,
249
381
                    has_password=False,
270
402
                    gidnumber=[fuzzy_digits],
271
403
                    mail=[u'test@example.com', u'test2@example.com'],
272
404
                    memberof_group=[u'ipausers'],
273
 
                    telephonenumber=[u'301-555-1212', u'202-888-9833', u'703-555-1212'],
274
 
                    nsaccountlock=False,
275
 
                    has_keytab=False,
276
 
                    has_password=False,
277
 
                ),
278
 
                summary=u'Modified user "tuser1"',
279
 
                value=user1,
280
 
            ),
 
405
                    telephonenumber=[u'202-888-9833'],
 
406
                    nsaccountlock=False,
 
407
                    has_keytab=False,
 
408
                    has_password=False,
 
409
                ),
 
410
                summary=u'Modified user "tuser1"',
 
411
                value=user1,
 
412
            ),
 
413
        ),
 
414
 
 
415
        dict(
 
416
            desc='Lock %r using setattr' % user1,
 
417
            command=(
 
418
                'user_mod', [user1], dict(setattr=u'nsaccountlock=TrUe')
 
419
            ),
 
420
            expected=dict(
 
421
                result=dict(
 
422
                    givenname=[u'Finkle'],
 
423
                    homedirectory=[u'/home/tuser1'],
 
424
                    loginshell=[u'/bin/sh'],
 
425
                    sn=[u'User1'],
 
426
                    uid=[user1],
 
427
                    uidnumber=[fuzzy_digits],
 
428
                    gidnumber=[fuzzy_digits],
 
429
                    mail=[u'test@example.com', u'test2@example.com'],
 
430
                    memberof_group=[u'ipausers'],
 
431
                    telephonenumber=[u'202-888-9833'],
 
432
                    nsaccountlock=True,
 
433
                    has_keytab=False,
 
434
                    has_password=False,
 
435
                ),
 
436
                summary=u'Modified user "tuser1"',
 
437
                value=user1,
 
438
            ),
 
439
        ),
 
440
 
 
441
        dict(
 
442
            desc='Unlock %r using addattr&delattr' % user1,
 
443
            command=(
 
444
                'user_mod', [user1], dict(
 
445
                    addattr=u'nsaccountlock=FaLsE',
 
446
                    delattr=u'nsaccountlock=TRUE')
 
447
            ),
 
448
            expected=dict(
 
449
                result=dict(
 
450
                    givenname=[u'Finkle'],
 
451
                    homedirectory=[u'/home/tuser1'],
 
452
                    loginshell=[u'/bin/sh'],
 
453
                    sn=[u'User1'],
 
454
                    uid=[user1],
 
455
                    uidnumber=[fuzzy_digits],
 
456
                    gidnumber=[fuzzy_digits],
 
457
                    mail=[u'test@example.com', u'test2@example.com'],
 
458
                    memberof_group=[u'ipausers'],
 
459
                    telephonenumber=[u'202-888-9833'],
 
460
                    nsaccountlock=False,
 
461
                    has_keytab=False,
 
462
                    has_password=False,
 
463
                ),
 
464
                summary=u'Modified user "tuser1"',
 
465
                value=user1,
 
466
            ),
 
467
        ),
 
468
 
 
469
        dict(
 
470
            desc='Try adding a new group search fields config entry',
 
471
            command=(
 
472
                'config_mod', [], dict(addattr=u'ipagroupsearchfields=newattr')
 
473
            ),
 
474
            expected=errors.OnlyOneValueAllowed(attr='ipagroupsearchfields'),
 
475
        ),
 
476
 
 
477
        dict(
 
478
            desc='Try adding a new cert subject base config entry',
 
479
            command=(
 
480
                'config_mod', [], dict(addattr=u'ipacertificatesubjectbase=0=DOMAIN.COM')
 
481
            ),
 
482
            expected=errors.ValidationError(name='ipacertificatesubjectbase',
 
483
                error='attribute is not configurable'),
 
484
        ),
 
485
 
 
486
        dict(
 
487
            desc='Try deleting a required config entry',
 
488
            command=(
 
489
                'config_mod', [], dict(delattr=u'ipasearchrecordslimit=100')
 
490
            ),
 
491
            expected=errors.RequirementError(name='ipasearchrecordslimit'),
 
492
        ),
 
493
 
 
494
        dict(
 
495
            desc='Try setting nonexistent attribute',
 
496
            command=('config_mod', [], dict(setattr=u'invalid_attr=false')),
 
497
            expected=errors.ObjectclassViolation(
 
498
                info='attribute "invalid_attr" not allowed'),
 
499
        ),
 
500
 
 
501
        dict(
 
502
            desc='Try setting out-of-range krbpwdmaxfailure',
 
503
            command=('pwpolicy_mod', [], dict(setattr=u'krbpwdmaxfailure=-1')),
 
504
            expected=errors.ValidationError(name='krbpwdmaxfailure',
 
505
                error='must be at least 0'),
 
506
        ),
 
507
 
 
508
        dict(
 
509
            desc='Try setting out-of-range maxfail',
 
510
            command=('pwpolicy_mod', [], dict(krbpwdmaxfailure=u'-1')),
 
511
            expected=errors.ValidationError(name='maxfail',
 
512
                error='must be at least 0'),
 
513
        ),
 
514
 
 
515
        dict(
 
516
            desc='Try setting non-numeric krbpwdmaxfailure',
 
517
            command=('pwpolicy_mod', [], dict(setattr=u'krbpwdmaxfailure=abc')),
 
518
            expected=errors.ConversionError(name='krbpwdmaxfailure',
 
519
                error='must be an integer'),
 
520
        ),
 
521
 
 
522
        dict(
 
523
            desc='Try setting non-numeric maxfail',
 
524
            command=('pwpolicy_mod', [], dict(krbpwdmaxfailure=u'abc')),
 
525
            expected=errors.ConversionError(name='maxfail',
 
526
                error='must be an integer'),
 
527
        ),
 
528
 
 
529
        dict(
 
530
            desc='Try deleting bogus attribute',
 
531
            command=('config_mod', [], dict(delattr=u'bogusattribute=xyz')),
 
532
            expected=errors.ValidationError(name='bogusattribute',
 
533
                error='No such attribute on this entry'),
 
534
        ),
 
535
 
 
536
        dict(
 
537
            desc='Try deleting empty attribute',
 
538
            command=('config_mod', [],
 
539
                dict(delattr=u'ipaCustomFields=See Also,seealso,false')),
 
540
            expected=errors.ValidationError(name='ipacustomfields',
 
541
                error='No such attribute on this entry'),
 
542
        ),
 
543
 
 
544
        dict(
 
545
            desc='Set and delete one value, plus try deleting a missing one',
 
546
            command=('config_mod', [], dict(
 
547
                delattr=[u'ipaCustomFields=See Also,seealso,false',
 
548
                    u'ipaCustomFields=Country,c,false'],
 
549
                addattr=u'ipaCustomFields=See Also,seealso,false')),
 
550
            expected=errors.AttrValueNotFound(attr='ipacustomfields',
 
551
                value='Country,c,false'),
 
552
        ),
 
553
 
 
554
        dict(
 
555
            desc='Try to delete an operational attribute with --delattr',
 
556
            command=('config_mod', [], dict(
 
557
                delattr=u'creatorsName=cn=directory manager')),
 
558
            expected=errors.DatabaseError(
 
559
                desc='Server is unwilling to perform', info=''),
281
560
        ),
282
561
 
283
562
    ]