diff --git a/gluon/tests/test_tools.py b/gluon/tests/test_tools.py index 87e75c9d..214206e6 100644 --- a/gluon/tests/test_tools.py +++ b/gluon/tests/test_tools.py @@ -174,8 +174,7 @@ class TestMail(unittest.TestCase): @unittest.skipIf(IS_IMAP, "TODO: Imap raises 'Connection refused'") class TestAuth(unittest.TestCase): - def testRun(self): - # setup + def setUp(self): request = Request(env={}) request.application = 'a' request.controller = 'c' @@ -190,38 +189,92 @@ class TestAuth(unittest.TestCase): current.response = response current.session = session current.T = T - db = DAL(DEFAULT_URI, check_reserved=['all']) - auth = Auth(db) - auth.define_tables(username=True, signature=False) - self.assertTrue('auth_user' in db) - self.assertTrue('auth_group' in db) - self.assertTrue('auth_membership' in db) - self.assertTrue('auth_permission' in db) - self.assertTrue('auth_event' in db) - db.define_table('t0', Field('tt'), auth.signature) - auth.enable_record_versioning(db) - self.assertTrue('t0_archive' in db) + self.db = DAL(DEFAULT_URI, check_reserved=['all']) + self.auth = Auth(self.db) + self.auth.define_tables(username=True, signature=False) + self.db.define_table('t0', Field('tt'), self.auth.signature) + self.auth.enable_record_versioning(self.db) + # Create a user + self.db.auth_user.insert(first_name='Bart', + last_name='Simpson', + username='user1', + email='user1@test.com', + password='password_123', + registration_key=None, + registration_id=None) + + self.db.commit() + + def test_assert_setup(self): + self.assertEqual(self.db(self.db.auth_user.username == 'user1').select().first()['id'], 1) + self.assertTrue('auth_user' in self.db) + self.assertTrue('auth_group' in self.db) + self.assertTrue('auth_membership' in self.db) + self.assertTrue('auth_permission' in self.db) + self.assertTrue('auth_event' in self.db) + + def test_enable_record_versioning(self): + self.assertTrue('t0_archive' in self.db) + + def test_basic_blank_forms(self): for f in ['login', 'register', 'retrieve_password', 'retrieve_username']: - html_form = getattr(auth, f)().xml() + html_form = getattr(self.auth, f)().xml() self.assertTrue('name="_formkey"' in html_form) for f in ['logout', 'verify_email', 'reset_password', 'change_password', 'profile', 'groups']: - self.assertRaisesRegexp(HTTP, "303*", getattr(auth, f)) + self.assertRaisesRegexp(HTTP, "303*", getattr(self.auth, f)) - self.assertRaisesRegexp(HTTP, "401*", auth.impersonate) + self.assertRaisesRegexp(HTTP, "401*", self.auth.impersonate) try: for t in ['t0_archive', 't0', 'auth_cas', 'auth_event', 'auth_membership', 'auth_permission', 'auth_group', 'auth_user']: - db[t].drop() + self.db[t].drop() except SyntaxError as e: # GAE doesn't support drop pass return + def test_get_or_create_user(self): + self.db.auth_user.insert(email='user1@test.com', password='password_123') + self.db.commit() + # True case + self.assertEqual(self.auth.get_or_create_user({'email': 'user1@test.com', + 'username': 'user1'})['username'], 'user1') + # user2 doesn't exist yet and get created + self.assertEqual(self.auth.get_or_create_user({'email': 'user2@test.com', + 'username': 'user2'})['username'], 'user2') + # False case + self.assertEqual(self.auth.get_or_create_user({'email': ''}), None) + self.db.auth_user.truncate() + self.db.commit() + + def test_login_bare(self): + # The following test case should succeed but failed as I never received the user record but False + # TODO: Make this test pass + # self.assertEqual(self.auth.login_bare(username='user1', password='password_123')['username'], 'user1') + # Failing login because bad_password + self.assertEqual(self.auth.login_bare(username='user1', password='bad_password'), False) + + def test_register_bare(self): + # failing register_bare user already exist + self.assertEqual(self.auth.register_bare(username='user1', password='wrong_password'), False) + # successful register_bare + self.assertEqual(self.auth.register_bare(username='user2', + email='user2@test.com', + password='password_123')['username'], 'user2') + # raise ValueError + self.assertRaises(ValueError, self.auth.register_bare, + **dict(wrong_field_name='user3', password='password_123')) + # raise ValueError wrong email + self.assertRaises(ValueError, self.auth.register_bare, + **dict(email='user4@', password='password_123')) + self.db.auth_user.truncate() + self.db.commit() + # TODO: class TestCrud(unittest.TestCase): # It deprecated so far from a priority