From 364902bc3f3b33c2b36bb0c2644e931aeeaeb381 Mon Sep 17 00:00:00 2001 From: Enzo Zuccolotto Date: Wed, 8 Apr 2015 21:51:43 -0300 Subject: Validates username before request user creation on leap server -- Issue #147 @anikarni and @enzoz pairing --- service/pixelated/config/register.py | 10 ++++++++++ service/test/unit/config/test_register.py | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 service/test/unit/config/test_register.py (limited to 'service') diff --git a/service/pixelated/config/register.py b/service/pixelated/config/register.py index 3f93aa8d..5e5d94a8 100644 --- a/service/pixelated/config/register.py +++ b/service/pixelated/config/register.py @@ -13,6 +13,7 @@ # # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see . +import re from pixelated.bitmask_libraries.leap_srp import LeapAuthException from pixelated.bitmask_libraries.register import register_new_user @@ -20,6 +21,15 @@ from pixelated.bitmask_libraries.register import register_new_user def register(username, server_name): try: + validate_username(username) register_new_user(username, server_name) except LeapAuthException: print('User already exists') + except ValueError: + print('Only lowercase letters, digits, . - and _ allowed.') + + +def validate_username(username): + accepted_characters = '^[a-z0-9\-\_]*$' + if not re.match(accepted_characters, username): + raise ValueError diff --git a/service/test/unit/config/test_register.py b/service/test/unit/config/test_register.py new file mode 100644 index 00000000..7c09fb2c --- /dev/null +++ b/service/test/unit/config/test_register.py @@ -0,0 +1,20 @@ +import unittest + +from pixelated.config.register import validate_username + + +class TestRegister(unittest.TestCase): + + def test_username_raises_error_when_it_contains_uppercase_letters(self): + with self.assertRaises(ValueError): + validate_username('INVALIDUSERNAME') + + def test_username_raises_error_when_it_contains_special_characters(self): + with self.assertRaises(ValueError): + validate_username('invalid@username') + + def test_username_pass_when_valid(self): + try: + validate_username('valid_username-123') + except: + self.fail('Valid username should not raise an exception') -- cgit v1.2.3 From 4e155a14786b72d77531024dd883b4635c690bec Mon Sep 17 00:00:00 2001 From: Enzo Zuccolotto Date: Fri, 10 Apr 2015 09:53:33 -0300 Subject: Allows dot on username. -- Issue #147 @anikarni and @enzoz pairing --- service/pixelated/config/register.py | 2 +- service/test/unit/config/test_register.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'service') diff --git a/service/pixelated/config/register.py b/service/pixelated/config/register.py index 5e5d94a8..d54b10ff 100644 --- a/service/pixelated/config/register.py +++ b/service/pixelated/config/register.py @@ -30,6 +30,6 @@ def register(username, server_name): def validate_username(username): - accepted_characters = '^[a-z0-9\-\_]*$' + accepted_characters = '^[a-z0-9\-\_\.]*$' if not re.match(accepted_characters, username): raise ValueError diff --git a/service/test/unit/config/test_register.py b/service/test/unit/config/test_register.py index 7c09fb2c..7db2b000 100644 --- a/service/test/unit/config/test_register.py +++ b/service/test/unit/config/test_register.py @@ -15,6 +15,6 @@ class TestRegister(unittest.TestCase): def test_username_pass_when_valid(self): try: - validate_username('valid_username-123') + validate_username('a.valid_username-123') except: self.fail('Valid username should not raise an exception') -- cgit v1.2.3