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)
Beispiel #2
0
    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)
Beispiel #5
0
 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 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))
Beispiel #7
0
 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)
Beispiel #9
0
 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)
Beispiel #11
0
 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])
Beispiel #12
0
 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)
Beispiel #13
0
 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'})
Beispiel #15
0
 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
Beispiel #16
0
    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()
Beispiel #17
0
 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_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')