diff options
author | Jan Cholasta <jcholast@redhat.com> | 2012-03-29 09:12:36 -0400 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2012-04-05 15:04:45 +0200 |
commit | cdebb29fecdd959808b4f0ea0245e371eba06eae (patch) | |
tree | 38b8ea4a5d0f6df846e29e6cf5b39930defd0914 /tests | |
parent | 51b34d5c4249e540510993fe600d222f22fcda16 (diff) | |
download | freeipa-cdebb29fecdd959808b4f0ea0245e371eba06eae.tar.gz freeipa-cdebb29fecdd959808b4f0ea0245e371eba06eae.tar.xz freeipa-cdebb29fecdd959808b4f0ea0245e371eba06eae.zip |
Check whether the default user group is POSIX when adding new user with --noprivate.
ticket 2572
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_xmlrpc/test_group_plugin.py | 4 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_user_plugin.py | 163 | ||||
-rw-r--r-- | tests/util.py | 8 |
3 files changed, 172 insertions, 3 deletions
diff --git a/tests/test_xmlrpc/test_group_plugin.py b/tests/test_xmlrpc/test_group_plugin.py index 44682b69c..d322c2dcd 100644 --- a/tests/test_xmlrpc/test_group_plugin.py +++ b/tests/test_xmlrpc/test_group_plugin.py @@ -752,7 +752,7 @@ class test_group(Declarative): dict( desc='Create %r without User Private Group' % user1, command=( - 'user_add', [user1], dict(givenname=u'Test', sn=u'User1', noprivate=True) + 'user_add', [user1], dict(givenname=u'Test', sn=u'User1', noprivate=True, gidnumber=1000) ), expected=dict( value=user1, @@ -768,7 +768,7 @@ class test_group(Declarative): sn=[u'User1'], uid=[user1], uidnumber=[fuzzy_digits], - gidnumber=[fuzzy_digits], + gidnumber=[u'1000'], displayname=[u'Test User1'], cn=[u'Test User1'], initials=[u'TU'], diff --git a/tests/test_xmlrpc/test_user_plugin.py b/tests/test_xmlrpc/test_user_plugin.py index b21737f89..8bd2d1637 100644 --- a/tests/test_xmlrpc/test_user_plugin.py +++ b/tests/test_xmlrpc/test_user_plugin.py @@ -25,7 +25,7 @@ Test the `ipalib/plugins/user.py` module. from ipalib import api, errors from tests.test_xmlrpc import objectclasses -from tests.util import assert_equal +from tests.util import assert_equal, assert_not_equal from xmlrpc_test import Declarative, fuzzy_digits, fuzzy_uuid, fuzzy_password, fuzzy_string, fuzzy_dergeneralizedtime from ipalib.dn import * @@ -43,6 +43,12 @@ def upg_check(response): response['result']['gidnumber']) return True +def not_upg_check(response): + """Check that the user was not assigned to the corresponding private group.""" + assert_not_equal(response['result']['uidnumber'], + response['result']['gidnumber']) + return True + class test_user(Declarative): cleanup_commands = [ @@ -1085,4 +1091,159 @@ class test_user(Declarative): expected=lambda x: True, ), + dict( + desc='Delete %r' % user1, + command=('user_del', [user1], {}), + expected=dict( + result=dict(failed=u''), + summary=u'Deleted user "%s"' % user1, + value=user1, + ), + ), + + dict( + desc='Create %r without UPG' % user1, + command=( + 'user_add', [user1], dict(givenname=u'Test', sn=u'User1', noprivate=True) + ), + expected=errors.NotFound(reason='Default group for new users is not POSIX'), + ), + + dict( + desc='Create %r without UPG with GID explicitly set' % user2, + command=( + 'user_add', [user2], dict(givenname=u'Test', sn=u'User2', noprivate=True, gidnumber=1000) + ), + expected=dict( + value=user2, + summary=u'Added user "tuser2"', + result=dict( + gecos=[u'Test User2'], + givenname=[u'Test'], + description=[], + homedirectory=[u'/home/tuser2'], + krbprincipalname=[u'tuser2@' + api.env.realm], + loginshell=[u'/bin/sh'], + objectclass=objectclasses.user_base, + sn=[u'User2'], + uid=[user2], + uidnumber=[fuzzy_digits], + gidnumber=[u'1000'], + displayname=[u'Test User2'], + cn=[u'Test User2'], + initials=[u'TU'], + ipauniqueid=[fuzzy_uuid], + krbpwdpolicyreference=lambda x: [DN(i) for i in x] == \ + [DN(('cn','global_policy'),('cn',api.env.realm), + ('cn','kerberos'),api.env.basedn)], + memberof_group=[u'ipausers'], + has_keytab=False, + has_password=False, + dn=lambda x: DN(x) == \ + DN(('uid','tuser2'),('cn','users'),('cn','accounts'), + api.env.basedn), + ), + ), + ), + + dict( + desc='Delete %r' % user2, + command=('user_del', [user2], {}), + expected=dict( + result=dict(failed=u''), + summary=u'Deleted user "%s"' % user2, + value=user2, + ), + ), + + dict( + desc='Change default user group', + command=( + 'config_mod', [], dict(ipadefaultprimarygroup=group1), + ), + expected=lambda x: True, + ), + + dict( + desc='Create %r without UPG' % user1, + command=( + 'user_add', [user1], dict(givenname=u'Test', sn=u'User1', noprivate=True) + ), + expected=dict( + value=user1, + summary=u'Added user "tuser1"', + result=dict( + gecos=[u'Test User1'], + givenname=[u'Test'], + description=[], + homedirectory=[u'/home/tuser1'], + krbprincipalname=[u'tuser1@' + api.env.realm], + loginshell=[u'/bin/sh'], + objectclass=objectclasses.user_base, + sn=[u'User1'], + uid=[user1], + uidnumber=[fuzzy_digits], + gidnumber=[fuzzy_digits], + displayname=[u'Test User1'], + cn=[u'Test User1'], + initials=[u'TU'], + ipauniqueid=[fuzzy_uuid], + krbpwdpolicyreference=lambda x: [DN(i) for i in x] == \ + [DN(('cn','global_policy'),('cn',api.env.realm), + ('cn','kerberos'),api.env.basedn)], + memberof_group=[group1], + has_keytab=False, + has_password=False, + dn=lambda x: DN(x) == \ + DN(('uid','tuser1'),('cn','users'),('cn','accounts'), + api.env.basedn), + ), + ), + extra_check = not_upg_check, + ), + + dict( + desc='Create %r without UPG with GID explicitly set' % user2, + command=( + 'user_add', [user2], dict(givenname=u'Test', sn=u'User2', noprivate=True, gidnumber=1000) + ), + expected=dict( + value=user2, + summary=u'Added user "tuser2"', + result=dict( + gecos=[u'Test User2'], + givenname=[u'Test'], + description=[], + homedirectory=[u'/home/tuser2'], + krbprincipalname=[u'tuser2@' + api.env.realm], + loginshell=[u'/bin/sh'], + objectclass=objectclasses.user_base, + sn=[u'User2'], + uid=[user2], + uidnumber=[fuzzy_digits], + gidnumber=[u'1000'], + displayname=[u'Test User2'], + cn=[u'Test User2'], + initials=[u'TU'], + ipauniqueid=[fuzzy_uuid], + krbpwdpolicyreference=lambda x: [DN(i) for i in x] == \ + [DN(('cn','global_policy'),('cn',api.env.realm), + ('cn','kerberos'),api.env.basedn)], + memberof_group=[group1], + has_keytab=False, + has_password=False, + dn=lambda x: DN(x) == \ + DN(('uid','tuser2'),('cn','users'),('cn','accounts'), + api.env.basedn), + ), + ), + ), + + dict( + desc='Reset default user group', + command=( + 'config_mod', [], dict(ipadefaultprimarygroup=u'ipausers'), + ), + expected=lambda x: True, + ), ] diff --git a/tests/util.py b/tests/util.py index 7929321a1..54a8dd14f 100644 --- a/tests/util.py +++ b/tests/util.py @@ -107,6 +107,14 @@ def assert_equal(val1, val2): assert val1 == val2, '%r != %r' % (val1, val2) +def assert_not_equal(val1, val2): + """ + Assert ``val1`` and ``val2`` are the same type and of non-equal value. + """ + assert type(val1) is type(val2), '%r != %r' % (val1, val2) + assert val1 != val2, '%r == %r' % (val1, val2) + + class Fuzzy(object): """ Perform a fuzzy (non-strict) equality tests. |