refuse account name with whitespace
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
.coverage
|
.coverage
|
||||||
*flymake.py
|
*flymake.py
|
||||||
.ropeproject
|
.ropeproject
|
||||||
|
*.pyc
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class SetRegisterHandler(object):
|
|||||||
self.component = component
|
self.component = component
|
||||||
self.account_manager = component.account_manager
|
self.account_manager = component.account_manager
|
||||||
self.__logger = logging.getLogger("jcl.jabber.SetRegisterHandler")
|
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):
|
def filter(self, info_query, lang_class, x_data):
|
||||||
"""Filter requests to be handled"""
|
"""Filter requests to be handled"""
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class SetRegisterHandler_TestCase(JCLTestCase):
|
|||||||
result = self.handler.handle(iq_set, Lang.en, None, x_data)
|
result = self.handler.handle(iq_set, Lang.en, None, x_data)
|
||||||
self.assertEquals(result, None)
|
self.assertEquals(result, None)
|
||||||
|
|
||||||
def test_handle_invalid_name(self):
|
def test_handle_invalid_name_with_invalid_char(self):
|
||||||
"""Test with invalid supplied name"""
|
"""Test with invalid supplied name"""
|
||||||
iq_set = Iq(stanza_type="set",
|
iq_set = Iq(stanza_type="set",
|
||||||
from_jid="user1@test.com/res",
|
from_jid="user1@test.com/res",
|
||||||
@@ -73,6 +73,23 @@ class SetRegisterHandler_TestCase(JCLTestCase):
|
|||||||
self.assertEquals(error.get_text(), Lang.en.field_error \
|
self.assertEquals(error.get_text(), Lang.en.field_error \
|
||||||
% ("name", Lang.en.arobase_in_name_forbidden))
|
% ("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):
|
def test_handle_invalid_empty_name(self):
|
||||||
"""Test with empty supplied name"""
|
"""Test with empty supplied name"""
|
||||||
iq_set = Iq(stanza_type="set",
|
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 $"
|
__revision__ = "$Id: account.py,v 1.3 2005/09/18 20:24:07 dax Exp $"
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
import re
|
||||||
|
|
||||||
from sqlobject.inheritance import InheritableSQLObject
|
from sqlobject.inheritance import InheritableSQLObject
|
||||||
from sqlobject.col import StringCol, IntCol, BoolCol, ForeignKey, DateTimeCol
|
from sqlobject.col import StringCol, IntCol, BoolCol, ForeignKey, DateTimeCol
|
||||||
@@ -34,7 +35,7 @@ from sqlobject.joins import MultipleJoin
|
|||||||
from sqlobject.sqlbuilder import AND
|
from sqlobject.sqlbuilder import AND
|
||||||
|
|
||||||
from jcl.lang import Lang
|
from jcl.lang import Lang
|
||||||
from jcl.error import MandatoryFieldError
|
from jcl.error import FieldError, MandatoryFieldError
|
||||||
import jcl.model as model
|
import jcl.model as model
|
||||||
|
|
||||||
OFFLINE = "offline"
|
OFFLINE = "offline"
|
||||||
@@ -61,6 +62,16 @@ def mandatory_field(field_name, field_value):
|
|||||||
raise MandatoryFieldError(field_name)
|
raise MandatoryFieldError(field_name)
|
||||||
return field_value
|
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 User(InheritableSQLObject):
|
||||||
class sqlmeta:
|
class sqlmeta:
|
||||||
table = "user_table"
|
table = "user_table"
|
||||||
|
|||||||
Reference in New Issue
Block a user