Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    def test_creation(self):
        with self.app.test_request_context('/'):
            db.initialize()

            role1 = WBRoleModel(rolename='a')
            role2 = WBRoleModel(rolename='b')
            db.session.add_all([role1, role2])
            db.session.commit()

            ace1 = RecordACLModel(record_type='TestRecordType1',
                                  record_id=1,
                                  user_role_id=role1.id,
                                  permission='read')
            ace2 = RecordACLModel(record_type='TestRecordType1',
                                  record_id=1,
                                  user_role_id=role1.id,
                                  permission='update')
            ace3 = RecordACLModel(record_type='TestRecordType1',
                                  record_id=1,
                                  user_role_id=role1.id,
                                  permission='delete')
            ace4 = RecordACLModel(record_type='TestRecordType1',
                                  record_id=1,
                                  user_role_id=role2.id,
                                  permission='read')
            ace5 = RecordACLModel(record_type='TestRecordType1',
                                  record_id=1,
                                  user_role_id=role2.id,
                                  permission='update')
            ace6 = RecordACLModel(record_type='TestRecordType1',
                                  record_id=1,
                                  user_role_id=role2.id,
                                  permission='delete')
            db.session.add_all([ace1, ace2, ace3, ace4, ace5, ace6])
            db.session.commit()

            ace7 = RecordACLModel(record_type='TestRecordType1',
                                  record_id=1,
                                  user_role_id=role2.id,
                                  permission='transmogrify')
            db.session.add(ace7)
            if db.engine.name == 'sqlite':
                self.assertRaises(IntegrityError, db.session.commit)
                db.session.rollback()
            elif db.engine.name == 'mysql':
                self.assertRaises(Warning, db.session.commit)
                db.session.rollback()
            else:
                db.session.commit
Exemplo n.º 5
0
    def test_duplicate(self):
        with self.app.test_request_context('/'):
            db.initialize()

            role1 = WBRoleModel(rolename='a')
            db.session.add(role1)
            db.session.commit()

            ace1 = RecordACLModel(record_type='TestRecordType1',
                                  record_id=1,
                                  user_role_id=role1.id,
                                  permission='read')
            ace2 = RecordACLModel(record_type='TestRecordType1',
                                  record_id=1,
                                  user_role_id=role1.id,
                                  permission='read')
            db.session.add_all([ace1, ace2])
            self.assertRaises(IntegrityError, db.session.commit)
            db.session.rollback()
Exemplo n.º 6
0
    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()
Exemplo n.º 7
0
    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()
Exemplo n.º 8
0
def populate_db():
    db.initialize()

    anonymous_role_id = WBRoleModel.get_anonymous_role_id()

    admin_role_id = UserModel.get_admin_role_id()
    admin_role = WBRoleModel.query.get(admin_role_id);

    user_role_id = UserModel.get_user_role_id()
    user_role = WBRoleModel.query.get(user_role_id);

    data = {'username': "******", 'password': '******', 'name': "Alice Allard", 'roles': [user_role]}
    user = UserModel(**data)
    db.session.add(user)
    db.session.commit()
    alice_id = user.id

    data = {'username': "******", 'password': '******', 'name': "Bob Binette", 'roles': [user_role]}
    user = UserModel(**data)
    db.session.add(user)
    db.session.commit()
    bob_id = user.id

    data = {'username': "******", 'password': '******', 'name': "Charles Charette", 'roles': [admin_role]}
    user = UserModel(**data)
    db.session.add(user)
    db.session.commit()
    charles_id = user.id

    root_id = FolderNodeModel.get_root_id()

    data = {'title': 'usr', 'parent_node_id': root_id, 'owner_id': alice_id}
    vs = FolderNodeModel(**data)
    db.session.add(vs)

    data = {'title': 'var', 'parent_node_id': root_id, 'owner_id': alice_id}
    vs = FolderNodeModel(**data)
    db.session.add(vs)
    db.session.commit()
    var_id = vs.id

    data = {'title': 'home', 'parent_node_id': root_id, 'owner_id': bob_id}
    vs = FolderNodeModel(**data)
    db.session.add(vs)
    db.session.commit()
    home_id = vs.id

    data = [
        {'record_type': 'ContentNode', 'record_id': home_id, 'user_role_id': anonymous_role_id, 'permission': 'read'},
    ]
    for d in data:
        acl = RecordACLModel(**d)
        db.session.add(acl)
    db.session.commit()

    data = {'title': 'Lorem', 'body': 'Lorem ipsum dolor'}
    vs = DocumentModel(**data)
    db.session.add(vs)
    db.session.commit()

    data = {'document_id': vs.id, 'parent_node_id': home_id, 'owner_id': alice_id}
    doc = DocumentNodeModel(**data)
    db.session.add(doc)
    db.session.commit()

    data = {'title': 'Sit amet', 'body': 'Consectetur adipiscing elit'}
    vs = DocumentModel(**data)
    db.session.add(vs)
    db.session.commit()

    data = {'document_id': vs.id, 'parent_node_id': var_id, 'owner_id': alice_id}
    doc = DocumentNodeModel(**data)
    db.session.add(doc)
    db.session.commit()

    return 'DB Initialization Done'