diff options
-rw-r--r-- | ipalib/plugins/user.py | 26 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_attr.py | 1 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_automember_plugin.py | 2 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_group_plugin.py | 2 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_krbtpolicy.py | 1 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_nesting.py | 4 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_netgroup_plugin.py | 2 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_range_plugin.py | 1 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_selinuxusermap_plugin.py | 1 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_user_plugin.py | 25 |
10 files changed, 58 insertions, 7 deletions
diff --git a/ipalib/plugins/user.py b/ipalib/plugins/user.py index bf25bc3c3..3f0050917 100644 --- a/ipalib/plugins/user.py +++ b/ipalib/plugins/user.py @@ -28,6 +28,7 @@ from ipalib.request import context from ipalib import _, ngettext from ipalib import output from ipapython.ipautil import ipa_generate_password +from ipapython.ipavalidate import Email import posixpath from ipalib.util import validate_sshpubkey, output_sshpubkey if api.env.in_server and api.env.context in ['lite', 'server']: @@ -367,19 +368,26 @@ class user(LDAPObject): ), ) - def _normalize_email(self, email, config=None): + def _normalize_and_validate_email(self, email, config=None): if not config: config = self.backend.get_ipa_config()[1] # check if default email domain should be added - if email and 'ipadefaultemaildomain' in config: + defaultdomain = config.get('ipadefaultemaildomain', [None])[0] + if email: norm_email = [] if not isinstance(email, (list, tuple)): email = [email] for m in email: - if isinstance(m, basestring) and m.find('@') == -1: - norm_email.append(m + u'@' + config['ipadefaultemaildomain'][0]) + if isinstance(m, basestring): + if '@' not in m and defaultdomain: + m = m + u'@' + defaultdomain + if not Email(m): + raise errors.ValidationError(name='email', error=_('invalid e-mail format: %(email)s') % dict(email=m)) + norm_email.append(m) else: + if not Email(m): + raise errors.ValidationError(name='email', error=_('invalid e-mail format: %(email)s') % dict(email=m)) norm_email.append(m) return norm_email @@ -509,7 +517,13 @@ class user_add(LDAPCreate): setattr(context, 'randompassword', entry_attrs['userpassword']) if 'mail' in entry_attrs: - entry_attrs['mail'] = self.obj._normalize_email(entry_attrs['mail'], config) + entry_attrs['mail'] = self.obj._normalize_and_validate_email(entry_attrs['mail'], config) + else: + # No e-mail passed in. If we have a default e-mail domain set + # then we'll add it automatically. + defaultdomain = config.get('ipadefaultemaildomain', [None])[0] + if defaultdomain: + entry_attrs['mail'] = self.obj._normalize_and_validate_email(keys[-1], config) if 'manager' in entry_attrs: entry_attrs['manager'] = self.obj._normalize_manager(entry_attrs['manager']) @@ -593,7 +607,7 @@ class user_mod(LDAPUpdate): ) ) if 'mail' in entry_attrs: - entry_attrs['mail'] = self.obj._normalize_email(entry_attrs['mail']) + entry_attrs['mail'] = self.obj._normalize_and_validate_email(entry_attrs['mail']) if 'manager' in entry_attrs: entry_attrs['manager'] = self.obj._normalize_manager(entry_attrs['manager']) validate_nsaccountlock(entry_attrs) diff --git a/tests/test_xmlrpc/test_attr.py b/tests/test_xmlrpc/test_attr.py index 799c77939..f5353e1b2 100644 --- a/tests/test_xmlrpc/test_attr.py +++ b/tests/test_xmlrpc/test_attr.py @@ -56,6 +56,7 @@ class test_attr(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], displayname=[u'Test User1'], cn=[u'Test User1'], initials=[u'TU'], diff --git a/tests/test_xmlrpc/test_automember_plugin.py b/tests/test_xmlrpc/test_automember_plugin.py index 36a510939..fcd9facb4 100644 --- a/tests/test_xmlrpc/test_automember_plugin.py +++ b/tests/test_xmlrpc/test_automember_plugin.py @@ -807,6 +807,7 @@ class test_automember(Declarative): uid=[manager1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (manager1, api.env.domain)], displayname=[u'Michael Scott'], cn=[u'Michael Scott'], initials=[u'MS'], @@ -844,6 +845,7 @@ class test_automember(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], manager=[DN(('uid', 'mscott'), ('cn', 'users'), ('cn', 'accounts'), api.env.basedn)], displayname=[u'Test User1'], cn=[u'Test User1'], diff --git a/tests/test_xmlrpc/test_group_plugin.py b/tests/test_xmlrpc/test_group_plugin.py index de4635d3c..77a419b0c 100644 --- a/tests/test_xmlrpc/test_group_plugin.py +++ b/tests/test_xmlrpc/test_group_plugin.py @@ -688,6 +688,7 @@ class test_group(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], displayname=[u'Test User1'], cn=[u'Test User1'], initials=[u'TU'], @@ -804,6 +805,7 @@ class test_group(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[u'1000'], + mail=[u'%s@%s' % (user1, api.env.domain)], displayname=[u'Test User1'], cn=[u'Test User1'], initials=[u'TU'], diff --git a/tests/test_xmlrpc/test_krbtpolicy.py b/tests/test_xmlrpc/test_krbtpolicy.py index fc2bf54cf..c61e754d2 100644 --- a/tests/test_xmlrpc/test_krbtpolicy.py +++ b/tests/test_xmlrpc/test_krbtpolicy.py @@ -105,6 +105,7 @@ class test_krbtpolicy(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], displayname=[u'Test User1'], cn=[u'Test User1'], initials=[u'TU'], diff --git a/tests/test_xmlrpc/test_nesting.py b/tests/test_xmlrpc/test_nesting.py index c28b7096b..6af9c9d23 100644 --- a/tests/test_xmlrpc/test_nesting.py +++ b/tests/test_xmlrpc/test_nesting.py @@ -171,6 +171,7 @@ class test_nesting(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], displayname=[u'Test User1'], cn=[u'Test User1'], initials=[u'TU'], @@ -208,6 +209,7 @@ class test_nesting(Declarative): uid=[user2], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user2, api.env.domain)], displayname=[u'Test User2'], cn=[u'Test User2'], initials=[u'TU'], @@ -245,6 +247,7 @@ class test_nesting(Declarative): uid=[user3], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user3, api.env.domain)], displayname=[u'Test User3'], cn=[u'Test User3'], initials=[u'TU'], @@ -282,6 +285,7 @@ class test_nesting(Declarative): uid=[user4], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user4, api.env.domain)], displayname=[u'Test User4'], cn=[u'Test User4'], initials=[u'TU'], diff --git a/tests/test_xmlrpc/test_netgroup_plugin.py b/tests/test_xmlrpc/test_netgroup_plugin.py index b54291a64..7a0dc5fad 100644 --- a/tests/test_xmlrpc/test_netgroup_plugin.py +++ b/tests/test_xmlrpc/test_netgroup_plugin.py @@ -282,6 +282,7 @@ class test_netgroup(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], displayname=[u'Test User1'], cn=[u'Test User1'], initials=[u'TU'], @@ -318,6 +319,7 @@ class test_netgroup(Declarative): uid=[user2], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user2, api.env.domain)], displayname=[u'Test User2'], cn=[u'Test User2'], initials=[u'TU'], diff --git a/tests/test_xmlrpc/test_range_plugin.py b/tests/test_xmlrpc/test_range_plugin.py index 4b7aa0893..d7d4dac0f 100644 --- a/tests/test_xmlrpc/test_range_plugin.py +++ b/tests/test_xmlrpc/test_range_plugin.py @@ -109,6 +109,7 @@ class test_range(Declarative): displayname=[u'Test User1'], cn=[u'Test User1'], initials=[u'TU'], + mail=[u'%s@%s' % (user1, api.env.domain)], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), ('cn','kerberos'),api.env.basedn)], diff --git a/tests/test_xmlrpc/test_selinuxusermap_plugin.py b/tests/test_xmlrpc/test_selinuxusermap_plugin.py index b44829413..aa2d0cac9 100644 --- a/tests/test_xmlrpc/test_selinuxusermap_plugin.py +++ b/tests/test_xmlrpc/test_selinuxusermap_plugin.py @@ -201,6 +201,7 @@ class test_selinuxusermap(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], 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 f146b34bc..d374e02f0 100644 --- a/tests/test_xmlrpc/test_user_plugin.py +++ b/tests/test_xmlrpc/test_user_plugin.py @@ -2,7 +2,6 @@ # Rob Crittenden <rcritten@redhat.com> # Pavel Zuna <pzuna@redhat.com> # Jason Gerard DeRose <jderose@redhat.com> -# John Dennis <jdennis@redhat.com> # # Copyright (C) 2008, 2009 Red Hat # see file 'COPYING' for use and warranty information @@ -117,6 +116,7 @@ class test_user(Declarative): gidnumber=[fuzzy_digits], displayname=[u'Test User1'], cn=[u'Test User1'], + mail=[u'%s@%s' % (user1, api.env.domain)], initials=[u'TU'], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), @@ -157,6 +157,7 @@ class test_user(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], memberof_group=[u'ipausers'], nsaccountlock=False, has_keytab=False, @@ -199,6 +200,7 @@ class test_user(Declarative): 'displayname': [u'Test User1'], 'cn': [u'Test User1'], 'initials': [u'TU'], + 'mail': [u'%s@%s' % (user1, api.env.domain)], }, ], summary=u'1 user matched', @@ -244,6 +246,7 @@ class test_user(Declarative): has_password=False, uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], ), ], summary=u'1 user matched', @@ -284,6 +287,7 @@ class test_user(Declarative): has_password=False, uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], ), ], summary=u'2 users matched', @@ -427,6 +431,7 @@ class test_user(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], memberof_group=[u'ipausers'], nsaccountlock=False, has_keytab=False, @@ -461,6 +466,7 @@ class test_user(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], memberof_group=[u'ipausers'], nsaccountlock=False, has_keytab=False, @@ -485,6 +491,7 @@ class test_user(Declarative): uid=[renameduser1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], memberof_group=[u'ipausers'], nsaccountlock=False, has_keytab=False, @@ -515,6 +522,7 @@ class test_user(Declarative): uid=[user1], uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user1, api.env.domain)], memberof_group=[u'ipausers'], nsaccountlock=False, has_keytab=False, @@ -575,6 +583,7 @@ class test_user(Declarative): gidnumber=[fuzzy_digits], displayname=[u'Test User1'], cn=[u'Test User1'], + mail=[u'%s@%s' % (user1, api.env.domain)], initials=[u'TU'], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), @@ -611,6 +620,7 @@ class test_user(Declarative): gidnumber=[fuzzy_digits], displayname=[u'Test User2'], cn=[u'Test User2'], + mail=[u'%s@%s' % (user2, api.env.domain)], initials=[u'TU'], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), @@ -647,6 +657,7 @@ class test_user(Declarative): uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], memberof_group=[u'ipausers'], + mail=[u'%s@%s' % (user2, api.env.domain)], nsaccountlock=False, has_keytab=False, has_password=False, @@ -676,6 +687,7 @@ class test_user(Declarative): has_password=False, uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], + mail=[u'%s@%s' % (user2, api.env.domain)], manager=[user1], ), ], @@ -825,6 +837,7 @@ class test_user(Declarative): displayname=[u'Test User1'], cn=[u'Test User1'], initials=[u'TU'], + mail=[u'%s@%s' % (user1, api.env.domain)], street=[u'123 Maple Rd'], l=[u'Anytown'], st=[u'MD'], @@ -874,6 +887,7 @@ class test_user(Declarative): gidnumber=[fuzzy_digits], displayname=[u'Test User1'], cn=[u'Test User1'], + mail=[u'%s@%s' % (user1, api.env.domain)], initials=[u'TU'], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), @@ -922,6 +936,7 @@ class test_user(Declarative): gidnumber=[fuzzy_digits], displayname=[u'Test User2'], cn=[u'Test User2'], + mail=[u'%s@%s' % (user2, api.env.domain)], initials=[u'TU'], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), @@ -950,6 +965,7 @@ class test_user(Declarative): uidnumber=[fuzzy_digits], gidnumber=[fuzzy_digits], memberof_group=[u'ipausers'], + mail=[u'%s@%s' % (user2, api.env.domain)], nsaccountlock=False, has_keytab=True, has_password=True, @@ -992,6 +1008,7 @@ class test_user(Declarative): gidnumber=[fuzzy_digits], displayname=[u'Test User1'], cn=[u'Test User1'], + mail=[u'%s@%s' % (user1, api.env.domain)], initials=[u'TU'], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), @@ -1064,6 +1081,7 @@ class test_user(Declarative): gidnumber=[fuzzy_digits], displayname=[u'Test User1'], cn=[u'Test User1'], + mail=[u'%s@%s' % (user1, api.env.domain)], initials=[u'TU'], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), @@ -1126,6 +1144,7 @@ class test_user(Declarative): displayname=[u'Test User1'], cn=[u'Test User1'], initials=[u'TU'], + mail=[u'%s@%s' % (user1, api.env.domain)], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), ('cn','kerberos'),api.env.basedn)], @@ -1186,6 +1205,7 @@ class test_user(Declarative): gidnumber=[u'1000'], displayname=[u'Test User2'], cn=[u'Test User2'], + mail=[u'%s@%s' % (user2, api.env.domain)], initials=[u'TU'], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), @@ -1238,6 +1258,7 @@ class test_user(Declarative): gidnumber=[fuzzy_digits], displayname=[u'Test User1'], cn=[u'Test User1'], + mail=[u'%s@%s' % (user1, api.env.domain)], initials=[u'TU'], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), @@ -1273,6 +1294,7 @@ class test_user(Declarative): gidnumber=[u'1000'], displayname=[u'Test User2'], cn=[u'Test User2'], + mail=[u'%s@%s' % (user2, api.env.domain)], initials=[u'TU'], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), @@ -1330,6 +1352,7 @@ class test_user(Declarative): displayname=[u'Second Admin'], cn=[u'Second Admin'], initials=[u'SA'], + mail=[u'%s@%s' % (admin2, api.env.domain)], ipauniqueid=[fuzzy_uuid], krbpwdpolicyreference=[DN(('cn','global_policy'),('cn',api.env.realm), ('cn','kerberos'),api.env.basedn)], |