2
# Rob Crittenden <rcritten@redhat.com>
3
# Pavel Zuna <pzuna@redhat.com>
5
# Copyright (C) 2009 Red Hat
6
# see file 'COPYING' for use and warranty information
8
# This program is free software; you can redistribute it and/or modify
9
# it under the terms of the GNU General Public License as published by
10
# the Free Software Foundation, either version 3 of the License, or
11
# (at your option) any later version.
13
# This program is distributed in the hope that it will be useful,
14
# but WITHOUT ANY WARRANTY; without even the implied warranty of
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
# GNU General Public License for more details.
18
# You should have received a copy of the GNU General Public License
19
# along with this program. If not, see <http://www.gnu.org/licenses/>.
21
Test the `ipalib/plugins/netgroup.py` module.
26
from ipalib import api
27
from ipalib import errors
28
from ipaserver.plugins.ldap2 import ldap2
29
from xmlrpc_test import (Declarative, fuzzy_digits, fuzzy_uuid,
30
fuzzy_netgroupdn, add_sid, add_oc)
31
from ipatests.test_xmlrpc import objectclasses
32
from ipapython.dn import DN
34
# Global so we can save the value between tests
37
# See if our LDAP server is up and we can talk to it over GSSAPI
38
ccache = krbV.default_context().default_ccache().name
40
netgroup1 = u'netgroup1'
41
netgroup2 = u'netgroup2'
42
netgroup_single = u'a'
44
host1 = u'ipatesthost.%s' % api.env.domain
45
host_dn1 = DN(('fqdn',host1),('cn','computers'),('cn','accounts'),
48
unknown_host = u'unknown'
50
unknown_host2 = u'unknown2'
53
hostgroup_dn1 = DN(('cn',hostgroup1),('cn','hostgroups'),('cn','accounts'),
58
# user2 is a member of testgroup
63
invalidnetgroup1=u'+badnetgroup'
64
invalidnisdomain1=u'domain1,domain2'
65
invalidnisdomain2=u'+invalidnisdomain'
66
invalidhost=u'+invalid&host'
68
class test_netgroup(Declarative):
70
Test the `netgroup` plugin.
74
('netgroup_del', [netgroup1], {}),
75
('netgroup_del', [netgroup2], {}),
76
('host_del', [host1], {}),
77
('hostgroup_del', [hostgroup1], {}),
78
('user_del', [user1], {}),
79
('user_del', [user2], {}),
80
('group_del', [group1], {}),
86
desc='Try to retrieve non-existent %r' % netgroup1,
87
command=('netgroup_show', [netgroup1], {}),
88
expected=errors.NotFound(
89
reason=u'%s: netgroup not found' % netgroup1),
94
desc='Try to update non-existent %r' % netgroup1,
95
command=('netgroup_mod', [netgroup1],
96
dict(description=u'Updated hostgroup 1')
98
expected=errors.NotFound(
99
reason=u'%s: netgroup not found' % netgroup1),
104
desc='Try to delete non-existent %r' % netgroup1,
105
command=('netgroup_del', [netgroup1], {}),
106
expected=errors.NotFound(
107
reason=u'%s: netgroup not found' % netgroup1),
112
desc='Test an invalid netgroup name %r' % invalidnetgroup1,
113
command=('netgroup_add', [invalidnetgroup1], dict(description=u'Test')),
114
expected=errors.ValidationError(name='name',
115
error=u'may only include letters, numbers, _, -, and .'),
120
desc='Test an invalid nisdomain1 name %r' % invalidnisdomain1,
121
command=('netgroup_add', [netgroup1],
122
dict(description=u'Test',nisdomainname=invalidnisdomain1)),
123
expected=errors.ValidationError(name='nisdomain',
124
error='may only include letters, numbers, _, -, and .'),
129
desc='Test an invalid nisdomain2 name %r' % invalidnisdomain2,
130
command=('netgroup_add', [netgroup1],
131
dict(description=u'Test',nisdomainname=invalidnisdomain2)),
132
expected=errors.ValidationError(name='nisdomain',
133
error='may only include letters, numbers, _, -, and .'),
138
desc='Create %r' % netgroup1,
139
command=('netgroup_add', [netgroup1],
140
dict(description=u'Test netgroup 1')
144
summary=u'Added netgroup "%s"' % netgroup1,
148
objectclass=objectclasses.netgroup,
149
description=[u'Test netgroup 1'],
150
nisdomainname=['%s' % api.env.domain],
151
ipauniqueid=[fuzzy_uuid],
158
desc='Create %r' % netgroup2,
159
command=('netgroup_add', [netgroup2],
160
dict(description=u'Test netgroup 2')
164
summary=u'Added netgroup "%s"' % netgroup2,
168
objectclass=objectclasses.netgroup,
169
description=[u'Test netgroup 2'],
170
nisdomainname=['%s' % api.env.domain],
171
ipauniqueid=[fuzzy_uuid],
178
desc='Create netgroup with name containing only one letter: %r' % netgroup_single,
179
command=('netgroup_add', [netgroup_single],
180
dict(description=u'Test netgroup_single')
183
value=netgroup_single,
184
summary=u'Added netgroup "%s"' % netgroup_single,
187
cn=[netgroup_single],
188
objectclass=objectclasses.netgroup,
189
description=[u'Test netgroup_single'],
190
nisdomainname=['%s' % api.env.domain],
191
ipauniqueid=[fuzzy_uuid],
198
desc='Delete %r' % netgroup_single,
199
command=('netgroup_del', [netgroup_single], {}),
201
value=netgroup_single,
202
summary=u'Deleted netgroup "%s"' % netgroup_single,
203
result=dict(failed=u''),
209
desc='Try to create duplicate %r' % netgroup1,
210
command=('netgroup_add', [netgroup1],
211
dict(description=u'Test netgroup 1')
213
expected=errors.DuplicateEntry(
214
message=u'netgroup with name "%s" already exists' % netgroup1),
219
desc='Create host %r' % host1,
220
command=('host_add', [host1],
222
description=u'Test host 1',
223
l=u'Undisclosed location 1',
229
summary=u'Added host "%s"' % host1,
233
description=[u'Test host 1'],
234
l=[u'Undisclosed location 1'],
235
krbprincipalname=[u'host/%s@%s' % (host1, api.env.realm)],
236
objectclass=objectclasses.host,
237
ipauniqueid=[fuzzy_uuid],
238
managedby_host=[host1],
247
desc='Create %r' % hostgroup1,
248
command=('hostgroup_add', [hostgroup1],
249
dict(description=u'Test hostgroup 1')
253
summary=u'Added hostgroup "%s"' % hostgroup1,
257
objectclass=objectclasses.hostgroup,
258
description=[u'Test hostgroup 1'],
259
mepmanagedentry=[DN(('cn',hostgroup1),('cn','ng'),('cn','alt'),
261
ipauniqueid=[fuzzy_uuid],
268
desc='Create %r' % user1,
270
'user_add', [user1], dict(givenname=u'Test', sn=u'User1')
274
summary=u'Added user "%s"' % user1,
276
gecos=[u'Test User1'],
278
homedirectory=[u'/home/%s' % user1],
279
krbprincipalname=[u'%s@%s' % (user1, api.env.realm)],
280
loginshell=[u'/bin/sh'],
281
objectclass=add_oc(objectclasses.user, u'ipantuserattrs'),
284
uidnumber=[fuzzy_digits],
285
gidnumber=[fuzzy_digits],
286
mail=[u'%s@%s' % (user1, api.env.domain)],
287
displayname=[u'Test User1'],
290
ipauniqueid=[fuzzy_uuid],
291
mepmanagedentry=[DN(('cn',user1),('cn','groups'),('cn','accounts'),
293
memberof_group=[u'ipausers'],
296
dn=DN(('uid',user1),('cn','users'),('cn','accounts'),
303
desc='Create %r' % user2,
305
'user_add', [user2], dict(givenname=u'Test', sn=u'User2')
309
summary=u'Added user "%s"' % user2,
311
gecos=[u'Test User2'],
313
homedirectory=[u'/home/%s' % user2],
314
krbprincipalname=[u'%s@%s' % (user2, api.env.realm)],
315
loginshell=[u'/bin/sh'],
316
objectclass=add_oc(objectclasses.user, u'ipantuserattrs'),
319
uidnumber=[fuzzy_digits],
320
gidnumber=[fuzzy_digits],
321
mail=[u'%s@%s' % (user2, api.env.domain)],
322
displayname=[u'Test User2'],
325
ipauniqueid=[fuzzy_uuid],
326
mepmanagedentry=[DN(('cn',user2),('cn','groups'),('cn','accounts'),
328
memberof_group=[u'ipausers'],
331
dn=DN(('uid',user2),('cn','users'),('cn','accounts'),
339
desc='Create %r' % group1,
341
'group_add', [group1], dict(description=u'Test desc 1')
345
summary=u'Added group "%s"' % group1,
348
description=[u'Test desc 1'],
349
gidnumber=[fuzzy_digits],
350
objectclass=objectclasses.group + [u'posixgroup'],
351
ipauniqueid=[fuzzy_uuid],
352
dn=DN(('cn',group1),('cn','groups'),('cn','accounts'),
360
desc='Add user %r to group %r' % (user2, group1),
362
'group_add_member', [group1], dict(user=user2)
373
'dn': DN(('cn',group1),('cn','groups'),('cn','accounts'),
375
'member_user': (user2,),
376
'gidnumber': [fuzzy_digits],
378
'description': [u'Test desc 1'],
385
desc='Add invalid host %r to netgroup %r' % (invalidhost, netgroup1),
386
command=('netgroup_add_member', [netgroup1], dict(host=invalidhost)),
387
expected=errors.ValidationError(name='host',
388
error='only letters, numbers, _, and - are allowed. ' +
389
u'DNS label may not start or end with -'),
394
desc='Add host %r to netgroup %r' % (host1, netgroup1),
396
'netgroup_add_member', [netgroup1], dict(host=host1)
414
'dn': fuzzy_netgroupdn,
415
'memberhost_host': (host1,),
417
'description': [u'Test netgroup 1'],
418
'nisdomainname': [u'%s' % api.env.domain],
425
desc='Add hostgroup %r to netgroup %r' % (hostgroup1, netgroup1),
427
'netgroup_add_member', [netgroup1], dict(hostgroup=hostgroup1)
445
'dn': fuzzy_netgroupdn,
446
'memberhost_host': (host1,),
447
'memberhost_hostgroup': (hostgroup1,),
449
'description': [u'Test netgroup 1'],
450
'nisdomainname': [u'%s' % api.env.domain],
457
desc='Search for netgroups using no_user',
458
command=('netgroup_find', [], dict(no_user=user1)),
462
summary=u'2 netgroups matched',
465
'dn': fuzzy_netgroupdn,
466
'memberhost_host': (host1,),
467
'memberhost_hostgroup': (hostgroup1,),
469
'description': [u'Test netgroup 1'],
470
'nisdomainname': [u'%s' % api.env.domain],
473
'dn': fuzzy_netgroupdn,
475
'description': [u'Test netgroup 2'],
476
'nisdomainname': [u'%s' % api.env.domain],
483
desc="Check %r doesn't match when searching for %s" % (netgroup1, user1),
484
command=('netgroup_find', [], dict(user=user1)),
488
summary=u'0 netgroups matched',
494
desc='Add user %r to netgroup %r' % (user1, netgroup1),
496
'netgroup_add_member', [netgroup1], dict(user=user1)
514
'dn': fuzzy_netgroupdn,
515
'memberhost_host': (host1,),
516
'memberhost_hostgroup': (hostgroup1,),
517
'memberuser_user': (user1,),
519
'description': [u'Test netgroup 1'],
520
'nisdomainname': [u'%s' % api.env.domain],
526
desc="Check %r doesn't match when searching for no %s" % (netgroup1, user1),
527
command=('netgroup_find', [], dict(no_user=user1)),
531
summary=u'1 netgroup matched',
534
'dn': fuzzy_netgroupdn,
536
'description': [u'Test netgroup 2'],
537
'nisdomainname': [u'%s' % api.env.domain],
544
desc='Add group %r to netgroup %r' % (group1, netgroup1),
546
'netgroup_add_member', [netgroup1], dict(group=group1)
564
'dn': fuzzy_netgroupdn,
565
'memberhost_host': (host1,),
566
'memberhost_hostgroup': (hostgroup1,),
567
'memberuser_user': (user1,),
568
'memberuser_group': (group1,),
570
'description': [u'Test netgroup 1'],
571
'nisdomainname': [u'%s' % api.env.domain],
578
desc='Add netgroup %r to netgroup %r' % (netgroup2, netgroup1),
580
'netgroup_add_member', [netgroup1], dict(netgroup=netgroup2)
598
'dn': fuzzy_netgroupdn,
599
'memberhost_host': (host1,),
600
'memberhost_hostgroup': (hostgroup1,),
601
'memberuser_user': (user1,),
602
'memberuser_group': (group1,),
603
'member_netgroup': (netgroup2,),
605
'description': [u'Test netgroup 1'],
606
'nisdomainname': [u'%s' % api.env.domain],
613
desc='Add non-existent netgroup to netgroup %r' % (netgroup1),
615
'netgroup_add_member', [netgroup1], dict(netgroup=u'notfound')
621
netgroup=[(u'notfound', u'no such entry')],
633
'dn': fuzzy_netgroupdn,
634
'memberhost_host': (host1,),
635
'memberhost_hostgroup': (hostgroup1,),
636
'memberuser_user': (user1,),
637
'memberuser_group': (group1,),
638
'member_netgroup': (netgroup2,),
640
'description': [u'Test netgroup 1'],
641
'nisdomainname': [u'%s' % api.env.domain],
648
desc='Add duplicate user %r to netgroup %r' % (user1, netgroup1),
650
'netgroup_add_member', [netgroup1], dict(user=user1)
660
user=[('%s' % user1, u'This entry is already a member')],
668
'dn': fuzzy_netgroupdn,
669
'memberhost_host': (host1,),
670
'memberhost_hostgroup': (hostgroup1,),
671
'memberuser_user': (user1,),
672
'memberuser_group': (group1,),
673
'member_netgroup': (netgroup2,),
675
'description': [u'Test netgroup 1'],
676
'nisdomainname': [u'%s' % api.env.domain],
682
desc='Add duplicate group %r to netgroup %r' % (group1, netgroup1),
684
'netgroup_add_member', [netgroup1], dict(group=group1)
693
group=[('%s' % group1, u'This entry is already a member')],
702
'dn': fuzzy_netgroupdn,
703
'memberhost_host': (host1,),
704
'memberhost_hostgroup': (hostgroup1,),
705
'memberuser_user': (user1,),
706
'memberuser_group': (group1,),
707
'member_netgroup': (netgroup2,),
709
'description': [u'Test netgroup 1'],
710
'nisdomainname': [u'%s' % api.env.domain],
717
desc='Add duplicate host %r to netgroup %r' % (host1, netgroup1),
719
'netgroup_add_member', [netgroup1], dict(host=host1)
733
host=[('%s' % host1, u'This entry is already a member')],
737
'dn': fuzzy_netgroupdn,
738
'memberhost_host': (host1,),
739
'memberhost_hostgroup': (hostgroup1,),
740
'memberuser_user': (user1,),
741
'memberuser_group': (group1,),
742
'member_netgroup': (netgroup2,),
744
'description': [u'Test netgroup 1'],
745
'nisdomainname': [u'%s' % api.env.domain],
752
desc='Add duplicate hostgroup %r to netgroup %r' % (hostgroup1, netgroup1),
754
'netgroup_add_member', [netgroup1], dict(hostgroup=hostgroup1)
767
hostgroup=[('%s' % hostgroup1, u'This entry is already a member')],
772
'dn': fuzzy_netgroupdn,
773
'memberhost_host': (host1,),
774
'memberhost_hostgroup': (hostgroup1,),
775
'memberuser_user': (user1,),
776
'memberuser_group': (group1,),
777
'member_netgroup': (netgroup2,),
779
'description': [u'Test netgroup 1'],
780
'nisdomainname': [u'%s' % api.env.domain],
787
desc='Add unknown host %r to netgroup %r' % (unknown_host, netgroup1),
789
'netgroup_add_member', [netgroup1], dict(host=unknown_host)
807
'dn': fuzzy_netgroupdn,
808
'memberhost_host': (host1,),
809
'memberhost_hostgroup': (hostgroup1,),
810
'memberuser_user': (user1,),
811
'memberuser_group': (group1,),
812
'member_netgroup': (netgroup2,),
814
'description': [u'Test netgroup 1'],
815
'nisdomainname': [u'%s' % api.env.domain],
816
'externalhost': [unknown_host],
822
desc='Add invalid host %r to netgroup %r using setattr' %
823
(invalidhost, netgroup1),
825
'netgroup_mod', [netgroup1],
826
dict(setattr='externalhost=%s' % invalidhost)
828
expected=errors.ValidationError(name='externalhost',
829
error='only letters, numbers, _, and - are allowed. ' +
830
'DNS label may not start or end with -'),
834
desc='Add unknown host %r to netgroup %r using addattr' %
835
(unknown_host2, netgroup1),
837
'netgroup_mod', [netgroup1],
838
dict(addattr='externalhost=%s' % unknown_host2)
842
summary=u'Modified netgroup "netgroup1"',
844
'memberhost_host': (host1,),
845
'memberhost_hostgroup': (hostgroup1,),
846
'memberuser_user': (user1,),
847
'memberuser_group': (group1,),
848
'member_netgroup': (netgroup2,),
850
'description': [u'Test netgroup 1'],
851
'nisdomainname': [u'%s' % api.env.domain],
852
'externalhost': [unknown_host, unknown_host2],
858
desc='Remove unknown host %r from netgroup %r using delattr' %
859
(unknown_host2, netgroup1),
861
'netgroup_mod', [netgroup1],
862
dict(delattr='externalhost=%s' % unknown_host2)
866
summary=u'Modified netgroup "netgroup1"',
868
'memberhost_host': (host1,),
869
'memberhost_hostgroup': (hostgroup1,),
870
'memberuser_user': (user1,),
871
'memberuser_group': (group1,),
872
'member_netgroup': (netgroup2,),
874
'description': [u'Test netgroup 1'],
875
'nisdomainname': [u'%s' % api.env.domain],
876
'externalhost': [unknown_host],
882
desc='Retrieve %r' % netgroup1,
883
command=('netgroup_show', [netgroup1], {}),
888
'dn': fuzzy_netgroupdn,
889
'memberhost_host': (host1,),
890
'memberhost_hostgroup': (hostgroup1,),
891
'memberuser_user': (user1,),
892
'memberuser_group': (group1,),
893
'member_netgroup': (netgroup2,),
895
'description': [u'Test netgroup 1'],
896
'nisdomainname': [u'%s' % api.env.domain],
897
'externalhost': [unknown_host],
903
desc='Search for %r' % netgroup1,
904
command=('netgroup_find', [], dict(cn=netgroup1)),
908
summary=u'1 netgroup matched',
911
'dn': fuzzy_netgroupdn,
912
'memberhost_host': (host1,),
913
'memberhost_hostgroup': (hostgroup1,),
914
'memberuser_user': (user1,),
915
'memberuser_group': (group1,),
916
'member_netgroup': (netgroup2,),
918
'description': [u'Test netgroup 1'],
919
'nisdomainname': [u'%s' % api.env.domain],
920
'externalhost': [unknown_host],
927
desc='Search for %r using user' % netgroup1,
928
command=('netgroup_find', [], dict(user=user1)),
932
summary=u'1 netgroup matched',
935
'dn': fuzzy_netgroupdn,
936
'memberhost_host': (host1,),
937
'memberhost_hostgroup': (hostgroup1,),
938
'memberuser_user': (user1,),
939
'memberuser_group': (group1,),
940
'member_netgroup': (netgroup2,),
942
'description': [u'Test netgroup 1'],
943
'nisdomainname': [u'%s' % api.env.domain],
944
'externalhost': [unknown_host],
951
desc='Search for all netgroups using empty member user',
952
command=('netgroup_find', [], dict(user=None)),
956
summary=u'2 netgroups matched',
959
'dn': fuzzy_netgroupdn,
960
'memberhost_host': (host1,),
961
'memberhost_hostgroup': (hostgroup1,),
962
'memberuser_user': (user1,),
963
'memberuser_group': (group1,),
964
'member_netgroup': (netgroup2,),
966
'description': [u'Test netgroup 1'],
967
'nisdomainname': [u'%s' % api.env.domain],
968
'externalhost': [unknown_host],
971
'dn': fuzzy_netgroupdn,
972
'memberof_netgroup': (netgroup1,),
974
'description': [u'Test netgroup 2'],
975
'nisdomainname': [u'%s' % api.env.domain],
982
desc='Update %r' % netgroup1,
983
command=('netgroup_mod', [netgroup1],
984
dict(description=u'Updated netgroup 1')
988
summary=u'Modified netgroup "%s"' % netgroup1,
990
'memberhost_host': (host1,),
991
'memberhost_hostgroup': (hostgroup1,),
992
'memberuser_user': (user1,),
993
'memberuser_group': (group1,),
994
'member_netgroup': (netgroup2,),
996
'description': [u'Updated netgroup 1'],
997
'nisdomainname': [u'%s' % api.env.domain],
998
'externalhost': [unknown_host],
1005
desc='Remove host %r from netgroup %r' % (host1, netgroup1),
1007
'netgroup_remove_member', [netgroup1], dict(host=host1)
1025
'dn': fuzzy_netgroupdn,
1026
'memberhost_hostgroup': (hostgroup1,),
1027
'memberuser_user': (user1,),
1028
'memberuser_group': (group1,),
1029
'member_netgroup': (netgroup2,),
1031
'description': [u'Updated netgroup 1'],
1032
'nisdomainname': [u'%s' % api.env.domain],
1033
'externalhost': [unknown_host],
1040
desc='Remove hostgroup %r from netgroup %r' % (hostgroup1, netgroup1),
1042
'netgroup_remove_member', [netgroup1], dict(hostgroup=hostgroup1)
1060
'dn': fuzzy_netgroupdn,
1061
'memberuser_user': (user1,),
1062
'memberuser_group': (group1,),
1063
'member_netgroup': (netgroup2,),
1065
'description': [u'Updated netgroup 1'],
1066
'nisdomainname': [u'%s' % api.env.domain],
1067
'externalhost': [unknown_host],
1074
desc='Remove user %r from netgroup %r' % (user1, netgroup1),
1076
'netgroup_remove_member', [netgroup1], dict(user=user1)
1094
'dn': fuzzy_netgroupdn,
1095
'memberuser_group': (group1,),
1096
'member_netgroup': (netgroup2,),
1098
'description': [u'Updated netgroup 1'],
1099
'nisdomainname': [u'%s' % api.env.domain],
1100
'externalhost': [unknown_host],
1107
desc='Remove group %r from netgroup %r' % (group1, netgroup1),
1109
'netgroup_remove_member', [netgroup1], dict(group=group1)
1127
'dn': fuzzy_netgroupdn,
1128
'member_netgroup': (netgroup2,),
1130
'description': [u'Updated netgroup 1'],
1131
'nisdomainname': [u'%s' % api.env.domain],
1132
'externalhost': [unknown_host],
1139
desc='Remove netgroup %r from netgroup %r' % (netgroup2, netgroup1),
1141
'netgroup_remove_member', [netgroup1], dict(netgroup=netgroup2)
1159
'dn': fuzzy_netgroupdn,
1161
'description': [u'Updated netgroup 1'],
1162
'nisdomainname': [u'%s' % api.env.domain],
1163
'externalhost': [unknown_host],
1170
desc='Remove host %r from netgroup %r again' % (host1, netgroup1),
1172
'netgroup_remove_member', [netgroup1], dict(host=host1)
1186
host=[('%s' % host1, u'This entry is not a member')]
1190
'dn': fuzzy_netgroupdn,
1192
'description': [u'Updated netgroup 1'],
1193
'nisdomainname': [u'%s' % api.env.domain],
1194
'externalhost': [unknown_host],
1201
desc='Remove hostgroup %r from netgroup %r again' % (hostgroup1, netgroup1),
1203
'netgroup_remove_member', [netgroup1], dict(hostgroup=hostgroup1)
1216
hostgroup=[('%s' % hostgroup1, u'This entry is not a member')],
1221
'dn': fuzzy_netgroupdn,
1223
'description': [u'Updated netgroup 1'],
1224
'nisdomainname': [u'%s' % api.env.domain],
1225
'externalhost': [unknown_host],
1232
desc='Remove user %r from netgroup %r again' % (user1, netgroup1),
1234
'netgroup_remove_member', [netgroup1], dict(user=user1)
1244
user=[('%s' % user1, u'This entry is not a member')],
1252
'dn': fuzzy_netgroupdn,
1254
'description': [u'Updated netgroup 1'],
1255
'nisdomainname': [u'%s' % api.env.domain],
1256
'externalhost': [unknown_host],
1263
desc='Remove group %r from netgroup %r again' % (group1, netgroup1),
1265
'netgroup_remove_member', [netgroup1], dict(group=group1)
1274
group= [('%s' % group1, u'This entry is not a member')],
1283
'dn': fuzzy_netgroupdn,
1285
'description': [u'Updated netgroup 1'],
1286
'nisdomainname': [u'%s' % api.env.domain],
1287
'externalhost': [unknown_host],
1294
desc='Remove netgroup %r from netgroup %r again' % (netgroup2, netgroup1),
1296
'netgroup_remove_member', [netgroup1], dict(netgroup=netgroup2)
1302
netgroup=[('%s' % netgroup2, u'This entry is not a member')],
1314
'dn': fuzzy_netgroupdn,
1316
'description': [u'Updated netgroup 1'],
1317
'nisdomainname': [u'%s' % api.env.domain],
1318
'externalhost': [unknown_host],
1325
desc='Delete %r' % netgroup1,
1326
command=('netgroup_del', [netgroup1], {}),
1329
summary=u'Deleted netgroup "%s"' % netgroup1,
1330
result=dict(failed=u''),
1336
# No way to convert this test just yet.
1338
# def test_6b_netgroup_show(self):
1340
# Confirm the underlying triples
1342
# # Do an LDAP query to the compat area and verify that the entry
1344
# conn = ldap2(shared_instance=False, ldap_uri=api.env.ldap_uri, base_dn=api.env.basedn)
1345
# conn.connect(ccache=ccache)
1347
# entries = conn.find_entries('cn=%s' % self.ng_cn,
1348
# base_dn='cn=ng,cn=compat,%s' % api.env.basedn)
1349
# except errors.NotFound:
1350
# raise nose.SkipTest('compat and nis are not enabled, skipping test')
1353
# triples = entries[0][0][1]['nisnetgrouptriple']
1355
# # This may not prove to be reliable since order is not guaranteed
1356
# # and even which user gets into which triple can be random.
1357
# assert '(nosuchhost,jexample,example.com)' in triples
1358
# assert '(ipatesthost.%s,pexample,example.com)' % api.env.domain in triples