def test_unlock_success(self): password = Password(raw='test_password', hasher=Sha256Hasher) profile = Profile(name='test_name', password=password) repo = ProfileRepository(config()) saved = repo.create(profile) self.assertTrue(saved) payload = {'name': profile.name} token = Token(salt='test_salt', payload=payload, builder=JWTToken) session = Session(token=token, locked=False, profile_id=saved.id) repo_sec = SecurityRepository(config()) session_id = repo_sec.register(session) session = repo_sec.get(session_id) self.assertIsInstance(session, Session) self.assertEqual(session.token, token.build().decode()) self.assertEqual(session.profile_id, str(saved.id)) self.assertFalse(session.locked) repo_sec.lock(id=session_id) session = repo_sec.get(session_id) self.assertTrue(session.locked) repo_sec.unlock(id=session_id) session = repo_sec.get(session_id) self.assertFalse(session.locked)
def test_get_list(self): password = Password(raw='test_password', hasher=Sha256Hasher) profile = Profile(name='test_name', password=password) password2 = Password(raw='test_password', hasher=Sha256Hasher) profile2 = Profile(name='test_name', password=password) repo = ProfileRepository(config()) repo.create(profile) repo.create(profile2) docs = repo.get_list({'filter': {'name': 'test_name'}}) self.assertIsInstance(docs, list) self.assertEqual(2, len(docs)) doc1 = docs[0] self.assertEqual(doc1.name, profile.name)
def test_register_name_exist(self): password = Password(raw='test_password', hasher=Sha256Hasher) profile = Profile(name='test_name', password=password) repo = ProfileRepository(config()) saved = repo.create(profile) adapter = RegisterAdapter(repo) with self.assertRaises(ValidationError): adapter.register(saved.name, 'test_pass')
def test_remove_success(self): password = Password(raw='test_password', hasher=Sha256Hasher) profile = Profile(name='test_name', password=password) repo = ProfileRepository(config()) self.assertTrue(repo.create(profile)) self.assertTrue(repo.remove(profile.name)) doc = repo.get_detail(profile.name) self.assertIsNone(doc)
def test_get_by_name(self): password = Password(raw='test_password', hasher=Sha256Hasher) profile = Profile(name='test_name', password=password) repo = ProfileRepository(config()) self.assertTrue(repo.create(profile)) doc = repo.get_detail(profile.name) self.assertIsNotNone(doc) self.assertEqual(doc.name, profile.name)
def test_create_success(self): password = Password(raw='test_password', hasher=Sha256Hasher) profile = Profile(name='test_name', password=password) repo = ProfileRepository(config()) saved = repo.create(profile) self.assertTrue(saved) self.assertEqual(saved.name, profile.name) self.assertEqual(saved.password, profile.password.to_hash()) self.assertIsNotNone(saved.id)
def test_remove_success(self): password = Password(raw='test_password', hasher=Sha256Hasher) profile = Profile(name='test_name', password=password) repo = ProfileRepository(config()) saved = repo.create(profile) self.assertTrue(saved) payload = {'name': profile.name} token = Token(salt='test_salt', payload=payload, builder=JWTToken) session = Session(token=token, locked=False, profile_id=saved.id) repo_sec = SecurityRepository(config()) session_id = repo_sec.register(session) self.assertIsInstance(session_id, str) self.assertTrue(repo_sec.remove(session_id)) self.assertFalse(repo_sec.is_exist())
def test_create_invalid_profile(self): with self.assertRaises(VarTypeError): repo = ProfileRepository(config()) repo.create('testing')