summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2012-07-23 14:00:51 -0400
committerMartin Kosek <mkosek@redhat.com>2012-09-07 13:36:37 +0200
commite4e5bd0595f511703db95e194a15069d449bcdbd (patch)
tree6403da81ccf6639ebb72b00a7f376d585f85b895
parent26dfbe61dd399e9c34f6f5bdeb25a197f1f461cb (diff)
downloadfreeipa-e4e5bd0595f511703db95e194a15069d449bcdbd.tar.gz
freeipa-e4e5bd0595f511703db95e194a15069d449bcdbd.tar.xz
freeipa-e4e5bd0595f511703db95e194a15069d449bcdbd.zip
Set the e-mail attribute using the default domain name by default
https://fedorahosted.org/freeipa/ticket/2810
-rw-r--r--ipalib/plugins/user.py26
-rw-r--r--tests/test_xmlrpc/test_attr.py1
-rw-r--r--tests/test_xmlrpc/test_automember_plugin.py2
-rw-r--r--tests/test_xmlrpc/test_group_plugin.py2
-rw-r--r--tests/test_xmlrpc/test_krbtpolicy.py1
-rw-r--r--tests/test_xmlrpc/test_nesting.py4
-rw-r--r--tests/test_xmlrpc/test_netgroup_plugin.py2
-rw-r--r--tests/test_xmlrpc/test_range_plugin.py1
-rw-r--r--tests/test_xmlrpc/test_selinuxusermap_plugin.py1
-rw-r--r--tests/test_xmlrpc/test_user_plugin.py25
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)],