refuse account name with whitespace

This commit is contained in:
David Rousselie
2010-06-04 08:29:43 +02:00
parent 13052b4668
commit a452f26d29
4 changed files with 32 additions and 3 deletions

View File

@@ -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"""

View File

@@ -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",

View File

@@ -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"