From d9c4fb3707d85aa400f7042df2fbf7088f18739e Mon Sep 17 00:00:00 2001 From: Denis Costa Date: Mon, 24 Oct 2016 17:42:38 -0200 Subject: Fixes tests. I also split Athenticaton class into two. So I keep the same API for old code and have different things in two different classes. #795 --- service/pixelated/authentication.py | 28 +++++++++++++++------------- service/test/unit/test_authentication.py | 18 ++++++++---------- 2 files changed, 23 insertions(+), 23 deletions(-) (limited to 'service') diff --git a/service/pixelated/authentication.py b/service/pixelated/authentication.py index 4b268435..c9961476 100644 --- a/service/pixelated/authentication.py +++ b/service/pixelated/authentication.py @@ -1,32 +1,34 @@ import re -from email.utils import parseaddr + class Authentication(object): + def __init__(self, username, token, uuid, session_id, user_attributes): + self.username = username + self.token = token + self.uuid = uuid + self.session_id = session_id + self._user_attributes = user_attributes + + def is_admin(self): + return self._user_attributes.get('is_admin', False) + +class Authenticator(object): def __init__(self, domain): self.domain = domain - # self.token = token - # self.uuid = uuid - # self.session_id = session_id - # self._user_attributes = user_attributes def authenticate(self, username, password): self.username = self.validate_username(username) self.srp_auth(username, password) def validate_username(self, username): - if '@' not in username: return True - extracted_username = self.extract_username(username) - if self.username_with_domain(extracted_username) == username: + if '@' not in username: return True - else: - return False + extracted_username = self.extract_username(username) + return self.username_with_domain(extracted_username) == username def extract_username(self, username): return re.search('^([^@]+)@?.*$', username).group(1) def username_with_domain(self, username): return '%s@%s' % (username, self.domain) - - def is_admin(self): - return self._user_attributes.get('is_admin', False) diff --git a/service/test/unit/test_authentication.py b/service/test/unit/test_authentication.py index 2fb97d69..34138b5e 100644 --- a/service/test/unit/test_authentication.py +++ b/service/test/unit/test_authentication.py @@ -1,34 +1,32 @@ from twisted.trial import unittest -from leap.bitmask.bonafide._srp import SRPAuthError -from pixelated.authentication import Authentication +from pixelated.authentication import Authenticator -class AuthenticationTest(unittest.TestCase): - +class AuthenticatorTest(unittest.TestCase): def test_authenticates_with_username_and_password(self): self.fail() def test_validate_username_accepts_username(self): - auth = Authentication('domain.org') + auth = Authenticator('domain.org') self.assertTrue(auth.validate_username('username')) def test_validate_username_accepts_email_address(self): - auth = Authentication('domain.org') + auth = Authenticator('domain.org') self.assertTrue(auth.validate_username('username@domain.org')) def test_validate_username_denies_other_domains(self): - auth = Authentication('domain.org') + auth = Authenticator('domain.org') self.assertFalse(auth.validate_username('username@wrongdomain.org')) def test_username_with_domain(self): - auth = Authentication('domain.org') + auth = Authenticator('domain.org') self.assertEqual('user@domain.org', auth.username_with_domain('user')) def test_extract_username_extracts_from_plain_username(self): - auth = Authentication('domain.org') + auth = Authenticator('domain.org') self.assertEqual(auth.extract_username('user'), 'user') def test_extract_username_extracts_from_email_address(self): - auth = Authentication('domain.org') + auth = Authenticator('domain.org') self.assertEqual(auth.extract_username('user@domain.org'), 'user') -- cgit v1.2.3