def setUp(self): self.resource_name = 'TestResource' super(ApiAccessTestCase, self).setUp() with self.app.test_request_context('/'): db.initialize() # Create some roles self.r1 = WBRoleModel(rolename='admin') db.session.add(self.r1) self.r2 = WBRoleModel(rolename='manager') db.session.add(self.r2) self.r3 = WBRoleModel(rolename='user') db.session.add(self.r3) db.session.commit() # Create some users self.u1 = WBUserModel(username='******', password='******', roles=[self.r1]) db.session.add(self.u1) self.u2 = WBUserModel(username='******', password='******', roles=[self.r2]) db.session.add(self.u2) self.u3 = WBUserModel(username='******', password='******', roles=[self.r3]) db.session.add(self.u3) db.session.commit() self.u1 = self.u1.id self.u2 = self.u2.id self.u3 = self.u3.id self.r1 = self.r1.id self.r2 = self.r2.id self.r3 = self.r3.id
def setUp(self): super(RecordAPITestCase, self).setUp() self.api = Api(self.app) with self.app.test_request_context('/'): db.initialize() # Create some roles self.r1 = WBRoleModel(rolename='admin') db.session.add(self.r1) self.r2 = WBRoleModel(rolename='manager') db.session.add(self.r2) self.r3 = WBRoleModel(rolename='user') db.session.add(self.r3) db.session.commit() # Create some users self.u1 = WBUserModel(username='******', password='******', roles=[self.r1]) db.session.add(self.u1) self.u2 = WBUserModel(username='******', password='******', roles=[self.r2]) db.session.add(self.u2) self.u3 = WBUserModel(username='******', password='******', roles=[self.r3]) db.session.add(self.u3) db.session.commit() self.u1 = self.u1.id self.u2 = self.u2.id self.u3 = self.u3.id # Create some data self.d1 = MyTestModel(title='Alice in Wonderland', author='Lewis Caroll', owner_id=self.u1) db.session.add(self.d1) self.d2 = MyTestModel(title='SpongeBob', author='Stephen Hillenburg', owner_id=self.u2) db.session.add(self.d2) self.d3 = MyTestModel(title='Où est Charlie?', author='Martin Handford', owner_id=self.u3) db.session.add(self.d3) db.session.commit() self.d1 = self.d1.id self.d2 = self.d2.id self.d3 = self.d3.id
def test_unique_name(self): """Test that we cannot add two users with the same username.""" with self.app.test_request_context('/'): db.initialize() db.session.add(WBUserModel(username='******', password='******')) db.session.commit() db.session.add(WBUserModel(username='******', password='******')) self.assertRaises(IntegrityError, db.session.commit) db.session.rollback() # Check that duplicate password do not raise an exception. db.session.add(WBUserModel(username='******', password='******')) db.session.commit()
def test_roles(self): """Test user role assignment.""" with self.app.test_request_context('/'): db.initialize() user = WBUserModel(username='******', password='******') db.session.add(user) role_names = ['a', 'b', 'c', 'd'] roles = [] for r in role_names: role = WBRoleModel(rolename=r) db.session.add(role) user.roles.append(role) roles.append(role) db.session.commit() read_user = WBUserModel.query.get(user.id) self.assertEqual(read_user.roles, roles) read_user.roles.remove(roles[2]) db.session.add(user) db.session.commit() read_user = WBUserModel.query.get(user.id) self.assertNotIn(roles[2], read_user.roles) self.assertIn(roles[3], read_user.roles) role = WBRoleModel(rolename='e') user.roles.append(role) db.session.add(user) db.session.commit() read_user = WBUserModel.query.get(user.id) self.assertIn(role, read_user.roles)
def test_store_hashed_password(self): """Test that the password is stored as a hash.""" with self.app.test_request_context('/'): password = self.str_n(1024) self.assertEqual(len(password), 1024) hashed_password = WBUserModel.hash_password(password) self.assertEqual(len(hashed_password), 64) db.initialize() user = WBUserModel(username='******', password=password) db.session.add(user) db.session.commit() read_user = WBUserModel.query.get(user.id) self.assertEqual(read_user.id, user.id) self.assertEqual(read_user.hashed_password, hashed_password)
def test_field_limits(self): """Test that length limit on username is enforced.""" with self.app.test_request_context('/'): db.initialize() long_username = self.str_n(51) self.assertEqual(len(long_username), 51) user = WBUserModel(username=long_username, password='******') db.session.add(user) if db.engine.name == 'mysql': self.assertRaises(Warning, db.session.commit) db.session.rollback() elif db.engine.name == 'postgresql': # FIXME: Should be # self.assertRaises(psycopg2.DataError, # db.session.commit), but does not work. self.assertRaises(Exception, db.session.commit) db.session.rollback() else: db.session.commit() user = WBUserModel.query.order_by(WBUserModel.id).first() if db.engine.name == 'sqlite': # sqlite ignore field length. self.assertEqual(user.username, long_username) else: self.assertIsNone(user)
def setUp(self): super(SessionTestCase, self).setUp() add_session_management_urls(self.app) with self.app.test_request_context('/'): db.initialize() # Create a user self.u1 = WBUserModel(username='******', password='******', roles=[]) db.session.add(self.u1) db.session.commit() self.u1 = self.u1.id
def setUp(self): super(AuthenticatorTestCase, self).setUp() add_session_management_urls(self.app) self.app.add_url_rule('/test', 'test', needs_authenticated_user_function, methods=['GET']) with self.app.test_request_context('/'): db.initialize() # Create a user self.u1 = WBUserModel(username='******', password='******', roles=[]) db.session.add(self.u1) db.session.commit() self.u1 = self.u1.id
def test_creation(self): with self.app.test_request_context('/'): db.initialize() user = WBUserModel(username='******', password='******') db.session.add(user) db.session.commit() session = WBSessionModel(user.id) db.session.add(session) db.session.commit() read_session = WBSessionModel.query.get(session.id) self.assertEqual(read_session.user_id, user.id) self.assertEqual(len(read_session.session_id), 2 * WBSessionModel.session_id_byte_length) self.assertEqual(len(read_session.secret), 2 * WBSessionModel.secret_byte_length) self.assertEqual(read_session.created, read_session.accessed) self.assertAlmostEqual(read_session.created, arrow.utcnow(), delta=timedelta(seconds=1))
def test_touch(self): with self.app.test_request_context('/'): db.initialize() user = WBUserModel(username='******', password='******') db.session.add(user) db.session.commit() WBSessionModel.session_max_idle_time = 3 session = WBSessionModel(user.id) db.session.add(session) db.session.commit() sleep(1) self.assertTrue(session.touch()) read_session = WBSessionModel.query.get(session.id) self.assertTrue(read_session) self.assertNotEqual(read_session.created, read_session.accessed) self.assertNotAlmostEqual(read_session.created, arrow.utcnow(), delta=timedelta(seconds=1)) self.assertAlmostEqual(read_session.accessed, arrow.utcnow(), delta=timedelta(seconds=2)) sleep(1) self.assertTrue(session.touch()) read_session = WBSessionModel.query.get(session.id) self.assertTrue(read_session) self.assertNotEqual(read_session.created, read_session.accessed) self.assertNotAlmostEqual(read_session.created, arrow.utcnow(), delta=timedelta(seconds=1)) self.assertAlmostEqual(read_session.accessed, arrow.utcnow(), delta=timedelta(seconds=2)) sleep(4) self.assertFalse(session.touch()) read_session = WBSessionModel.query.get(session.id) self.assertFalse(read_session)
def setUp(self): super(RecordAccessTestCase, self).setUp() with self.app.test_request_context('/'): db.initialize() # Create some roles self.r1 = WBRoleModel(rolename='admin') db.session.add(self.r1) self.r2 = WBRoleModel(rolename='manager') db.session.add(self.r2) self.r3 = WBRoleModel(rolename='user') db.session.add(self.r3) db.session.commit() # Create some users self.u1 = WBUserModel(username='******', password='******', roles=[self.r1]) db.session.add(self.u1) self.u2 = WBUserModel(username='******', password='******', roles=[self.r2]) db.session.add(self.u2) self.u3 = WBUserModel(username='******', password='******', roles=[self.r3]) db.session.add(self.u3) db.session.commit() self.u1 = self.u1.id self.u2 = self.u2.id self.u3 = self.u3.id self.r1 = self.r1.id self.r2 = self.r2.id self.r3 = self.r3.id # Create some data self.d1 = MyModel(title='a', owner_id=self.u1) db.session.add(self.d1) self.d2 = MyModel(title='a', owner_id=self.u1) db.session.add(self.d2) self.d3 = MyModel(title='a', owner_id=self.u2) db.session.add(self.d3) self.d4 = MyModel(title='a', owner_id=self.u3) db.session.add(self.d4) db.session.commit() self.d1 = self.d1.id self.d2 = self.d2.id self.d3 = self.d3.id self.d4 = self.d4.id # Add some access control records anon = WBRoleModel.get_anonymous_role_id() db.session.add_all( make_record_acl( record_types=['My'], record_ids=[self.d1, self.d2, self.d3, self.d4], user_role_ids=[self.r1], permissions=['read', 'update', 'delete'])) db.session.add_all( make_record_acl( record_types=['My'], record_ids=[self.d1, self.d2, self.d3, self.d4], user_role_ids=[self.r2], permissions=['read'])) db.session.add_all( make_record_acl(record_types=['My'], record_ids=[self.d3, self.d4], user_role_ids=[self.r2], permissions=['update', 'delete'])) db.session.add_all( make_record_acl( record_types=['My'], record_ids=[self.d1, self.d2, self.d3, self.d4], user_role_ids=[self.r3], permissions=['read'])) db.session.add_all( make_record_acl(record_types=['My'], record_ids=[self.d3, self.d4], user_role_ids=[anon], permissions=['read'])) db.session.commit()