refuse account name with whitespace
This commit is contained in:
@@ -38,7 +38,7 @@ class SetRegisterHandler(object):
|
||||
self.component = component
|
||||
self.account_manager = component.account_manager
|
||||
self.__logger = logging.getLogger("jcl.jabber.SetRegisterHandler")
|
||||
self.field_name_regexp = re.compile("^[^@]+$")
|
||||
self.field_name_regexp = re.compile("^[^@\s]+$")
|
||||
|
||||
def filter(self, info_query, lang_class, x_data):
|
||||
"""Filter requests to be handled"""
|
||||
|
||||
@@ -56,7 +56,7 @@ class SetRegisterHandler_TestCase(JCLTestCase):
|
||||
result = self.handler.handle(iq_set, Lang.en, None, x_data)
|
||||
self.assertEquals(result, None)
|
||||
|
||||
def test_handle_invalid_name(self):
|
||||
def test_handle_invalid_name_with_invalid_char(self):
|
||||
"""Test with invalid supplied name"""
|
||||
iq_set = Iq(stanza_type="set",
|
||||
from_jid="user1@test.com/res",
|
||||
@@ -73,6 +73,23 @@ class SetRegisterHandler_TestCase(JCLTestCase):
|
||||
self.assertEquals(error.get_text(), Lang.en.field_error \
|
||||
% ("name", Lang.en.arobase_in_name_forbidden))
|
||||
|
||||
def test_handle_invalid_name_with_whitespace(self):
|
||||
"""Test with invalid supplied name"""
|
||||
iq_set = Iq(stanza_type="set",
|
||||
from_jid="user1@test.com/res",
|
||||
to_jid="jcl.test.com")
|
||||
x_data = Form("submit")
|
||||
x_data.add_field(name="name",
|
||||
value="wrong name",
|
||||
field_type="text-single")
|
||||
result = self.handler.handle(iq_set, Lang.en, None, x_data)
|
||||
self.assertEquals(len(result), 1)
|
||||
self.assertEquals(result[0].xmlnode.prop("type"), "error")
|
||||
error = result[0].get_error()
|
||||
self.assertEquals(error.get_condition().name, "not-acceptable")
|
||||
self.assertEquals(error.get_text(), Lang.en.field_error \
|
||||
% ("name", Lang.en.arobase_in_name_forbidden))
|
||||
|
||||
def test_handle_invalid_empty_name(self):
|
||||
"""Test with empty supplied name"""
|
||||
iq_set = Iq(stanza_type="set",
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
__revision__ = "$Id: account.py,v 1.3 2005/09/18 20:24:07 dax Exp $"
|
||||
|
||||
import datetime
|
||||
import re
|
||||
|
||||
from sqlobject.inheritance import InheritableSQLObject
|
||||
from sqlobject.col import StringCol, IntCol, BoolCol, ForeignKey, DateTimeCol
|
||||
@@ -34,7 +35,7 @@ from sqlobject.joins import MultipleJoin
|
||||
from sqlobject.sqlbuilder import AND
|
||||
|
||||
from jcl.lang import Lang
|
||||
from jcl.error import MandatoryFieldError
|
||||
from jcl.error import FieldError, MandatoryFieldError
|
||||
import jcl.model as model
|
||||
|
||||
OFFLINE = "offline"
|
||||
@@ -61,6 +62,16 @@ def mandatory_field(field_name, field_value):
|
||||
raise MandatoryFieldError(field_name)
|
||||
return field_value
|
||||
|
||||
def no_whitespace_field(field_name, field_value):
|
||||
""" Check that `field_value` does not contain any whitespace character
|
||||
Arguments:
|
||||
- `field_name`: Field name
|
||||
- `field_value`: Field value to check
|
||||
"""
|
||||
if re.compile("\s").search(field_value) is not None:
|
||||
raise FieldError(field_name, message_property="no_whitespace_in_field")
|
||||
return field_value
|
||||
|
||||
class User(InheritableSQLObject):
|
||||
class sqlmeta:
|
||||
table = "user_table"
|
||||
|
||||
Reference in New Issue
Block a user