def test_set_resources_to_role_with_no_resources_and_no_resources_in_db(self): role = Role(name='test') resources = [{'name': 'resource1', 'permissions': ['create']}, {'name': 'resource2', 'permissions': ['create']}] role.set_resources(resources) db.session.add(role) self.assertRoleConstructionIsCorrect(role, 'test', resources=resources)
def setUpClass(cls): initialize_test_config() execution_db_help.setup_dbs() cls.app = create_app() cls.app.testing = True cls.context = cls.app.test_request_context() cls.context.push() cls.test_client = cls.app.test_client(cls) db.create_all() cls.role_rd = Role('message_guest') cls.role_rd.set_resources([{'name': 'messages', 'permissions': ['read', 'delete', 'update']}]) cls.role_r = Role('read_only') cls.role_r.set_resources([{'name': 'messages', 'permissions': ['read', 'update']}]) db.session.add(cls.role_rd) db.session.add(cls.role_r) try: db.session.commit() except IntegrityError: db.session.rollback() cls.user1 = UserWrapper('username', 'password', roles=[cls.role_rd.id]) cls.user2 = UserWrapper('username2', 'password2', roles=[cls.role_r.id]) cls.user3 = UserWrapper('username3', 'password3') cls.all_users = (cls.user1, cls.user2, cls.user3) db.session.add(cls.user1.user) db.session.add(cls.user2.user) db.session.add(cls.user3.user) try: db.session.commit() except IntegrityError: db.session.rollback()
def test_set_resources_to_role_with_existing_resources_no_overlap(self): resources = [{ 'name': 'resource1', 'permissions': ['create'] }, { 'name': 'resource2', 'permissions': ['create'] }, { 'name': 'resource3', 'permissions': ['create'] }] role = Role(name='test', resources=resources) new_resources = [{ 'name': 'resource4', 'permissions': ['create'] }, { 'name': 'resource5', 'permissions': ['create'] }, { 'name': 'resource6', 'permissions': ['create'] }] role.set_resources(new_resources) db.session.add(role) self.assertRoleConstructionIsCorrect(role, 'test', resources=new_resources)
def test_set_resources_update_permissions(self): resources = [{ 'name': 'resource1', 'permissions': ['create'] }, { 'name': 'resource2', 'permissions': ['create'] }, { 'name': 'resource3', 'permissions': ['create'] }] role = Role(name='test', resources=resources) db.session.add(role) db.session.commit() new_resources = [{ 'name': 'resource1', 'permissions': ['read'] }, { 'name': 'resource2', 'permissions': ['update'] }, { 'name': 'resource3', 'permissions': ['delete'] }] role.set_resources(new_resources) db.session.commit() self.assertRoleConstructionIsCorrect(role, 'test', resources=new_resources)
def test_role_as_json(self): resources = [{'name': 'resource1', 'permissions': ['create']}, {'name': 'resource2', 'permissions': ['create']}, {'name': 'resource3', 'permissions': ['create']}] role = Role(name='test', description='desc', resources=resources) role_json = role.as_json() self.assertSetEqual(set(role_json.keys()), {'name', 'description', 'resources', 'id'}) self.assertEqual(role_json['name'], 'test') self.assertEqual(role_json['description'], 'desc') self.assertEqual(len(role_json['resources']), len(resources))
def test_set_resources_to_role_with_existing_resources_with_overlap(self): resources = [{'name': 'resource1', 'permissions': ['create']}, {'name': 'resource2', 'permissions': ['create']}, {'name': 'resource3', 'permissions': ['create']}] role = Role(name='test', resources=resources) new_resources = [{'name': 'resource3', 'permissions': ['create']}, {'name': 'resource4', 'permissions': ['create']}, {'name': 'resource5', 'permissions': ['create']}] role.set_resources(new_resources) db.session.add(role) self.assertRoleConstructionIsCorrect(role, 'test', resources=new_resources)
def test_roles_as_json_with_users_one_user(self): role = Role('role1') db.session.add(role) db.session.commit() user = User('username', 'password') db.session.add(user) user.set_roles([role.id]) expected = {'name': 'role1', 'description': '', 'resources': [], 'users': ['username']} role_json = role.as_json(with_users=True) role_json.pop('id') self.assertDictEqual(role_json, expected)
def test_set_resources_update_permissions(self): resources = [{'name': 'resource1', 'permissions': ['create']}, {'name': 'resource2', 'permissions': ['create']}, {'name': 'resource3', 'permissions': ['create']}] role = Role(name='test', resources=resources) db.session.add(role) db.session.commit() new_resources = [{'name': 'resource1', 'permissions': ['read']}, {'name': 'resource2', 'permissions': ['update']}, {'name': 'resource3', 'permissions': ['delete']}] role.set_resources(new_resources) db.session.commit() self.assertRoleConstructionIsCorrect(role, 'test', resources=new_resources)
def test_save_message_with_roles(self): role = Role('some role') db.session.add(role) user1 = User('aaaaa', 'passssss', roles=[role.id]) user2 = User('bbbbb', 'passs', roles=[role.id]) db.session.add(user1) db.session.add(user2) db.session.commit() message_data = { 'users': [user1.id], 'roles': [role.id], 'subject': 'Re: This thing', 'requires_reauth': False } workflow_execution_id = uuid4() body = [{ 'text': 'Here is something to look at' }, { 'url': 'look.here.com' }] save_message(body, message_data, workflow_execution_id, False) messages = Message.query.all() self.assertEqual(len(messages), 1) message = messages[0] self.assertEqual(len(message.users), 2) for user in message.users: self.assertIn(user, [user1, user2])
def test_role_init_with_resources_none_in_db(self): resources = [{'name': 'resource1', 'permissions': ['create']}, {'name': 'resource2', 'permissions': ['create']}, {'name': 'resource3', 'permissions': ['create']}] role = Role(name='test', resources=resources) db.session.add(role) self.assertRoleConstructionIsCorrect(role, 'test', resources=resources)
def test_create_user_with_roles(self): role = Role('role1') db.session.add(role) db.session.commit() data = {'username': '******', 'password': '******', 'roles': [{'id': role.id}]} response = self.post_with_status_check('/api/users', headers=self.headers, content_type='application/json', data=json.dumps(data), status_code=OBJECT_CREATED) self.assertUserCreatedResponse('username', response)
def test_read_all_roles_with_extra_added_roles(self): role = Role('role1') db.session.add(role) response = self.get_with_status_check('/api/roles', headers=self.headers, status_code=SUCCESS) self.assertSetEqual({role['name'] for role in response}, {'admin', 'role1', 'guest'})
def add_roles_to_db(num_roles): role_names = {'role{}'.format(i) for i in range(1, num_roles + 1)} role_ids = [] roles = [Role(name=name) for name in role_names] for role in roles: db.session.add(role) db.session.commit() for role in roles: role_ids.append(role.id) return role_ids
def setUp(self): self.user = User('username', 'password') self.user2 = User('username2', 'password2') self.role = Role('visitor') db.session.add(self.role) db.session.commit() self.user3 = User('username3', 'password3', roles=[self.role.id]) db.session.add(self.user) db.session.add(self.user2) db.session.add(self.user3) db.session.commit()
def put_patch_update_user_with_roles(self, verb): send_func = self.put_with_status_check if verb == 'put' else self.patch_with_status_check role = Role('role1') db.session.add(role) db.session.commit() user = User('username', 'supersecretshhhhh') db.session.add(user) db.session.commit() data = {'id': user.id, 'roles': [{'id': role.id}]} response = send_func('/api/users', headers=self.headers, content_type='application/json', data=json.dumps(data), status_code=SUCCESS) self.assertDictEqual(response, user.as_json()) self.assertSetEqual({role.name for role in user.roles}, {'role1'})
def test_set_resources_to_role_no_resources_to_add(self): role = Role(name='test') role.set_resources({}) self.assertListEqual(role.resources, [])
def test_role_init_with_description(self): role = Role(name='test', description='desc') self.assertRoleConstructionIsCorrect(role, 'test', description='desc')
def test_role_init_default(self): role = Role(name='test') self.assertRoleConstructionIsCorrect(role, 'test')