コード例 #1
0
    def test_resource_groups_for_any_perm_just_group_perms_limited(self,
                                                                   db_session):
        self.maxDiff = 99999
        self.set_up_user_group_and_perms(db_session)
        user6 = add_user(db_session, 6, 'user 6')
        user7 = add_user(db_session, 7, 'user 7')
        perm2 = GroupResourcePermission(
            perm_name='group_perm2',
            resource_id=self.resource.resource_id
        )
        self.group.resource_permissions.append(perm2)
        self.group.users.append(user6)
        self.group.users.append(user7)
        perms = self.resource.groups_for_perm(
            '__any_permission__', limit_group_permissions=True,
            db_session=db_session)
        second = [
            PermissionTuple(None, 'group_perm', 'group', self.group,
                            self.resource, False, True),
            PermissionTuple(None, 'group_perm2', 'group', self.group,
                            self.resource, False, True),
            PermissionTuple(None, 'group_perm', 'group', self.group2,
                            self.resource, False, True),
        ]

        check_one_in_other(perms, second)
コード例 #2
0
    def test_resource_users_for_any_perm_excluding_group_perms(self, db_session):
        self.maxDiff = 99999
        self.set_up_user_group_and_perms(db_session)
        user6 = add_user(db_session, 6, "user 6")
        user7 = add_user(db_session, 7, "user 7")
        perm2 = GroupResourcePermission(
            perm_name="group_perm2", resource_id=self.resource.resource_id
        )
        self.group.resource_permissions.append(perm2)
        self.group.users.append(user6)
        self.group.users.append(user7)
        perms = ResourceService.users_for_perm(
            self.resource,
            "__any_permission__",
            limit_group_permissions=True,
            skip_group_perms=True,
            db_session=db_session,
        )
        second = [
            PermissionTuple(
                self.user, "test_perm2", "user", None, self.resource, False, True
            ),
            PermissionTuple(
                self.user, "foo_perm", "user", None, self.resource, False, True
            ),
        ]

        check_one_in_other(perms, second)
コード例 #3
0
    def test_by_user_and_perm(self, db_session):
        add_user(db_session)
        user_permission = UserPermission.by_user_and_perm(1, 'root',
                                                          db_session=db_session)

        assert user_permission.user_id == 1
        assert user_permission.perm_name == 'root'
コード例 #4
0
    def test_by_user_and_perm_wrong_permname(self, db_session):
        add_user(db_session)
        user_permission = UserPermissionService.by_user_and_perm(
            1, "wrong", db_session=db_session
        )

        assert user_permission is None
コード例 #5
0
    def test_by_user_and_perm(self, db_session):
        add_user(db_session)
        user_permission = UserPermissionService.by_user_and_perm(
            1, "root", db_session=db_session
        )

        assert user_permission.user_id == 1
        assert user_permission.perm_name == "root"
コード例 #6
0
    def test_by_username_andsecurity_code_wrong_code(self, db_session):
        add_user(db_session)
        queried_user = User.by_user_name_and_security_code(
            user_name='username',
            security_code='wrong_code',
            db_session=db_session
        )

        assert queried_user is None
コード例 #7
0
    def test_by_user_names_like(self, db_session):
        user1 = add_user(db_session, 'user1', 'email1')
        add_user(db_session, 'luser2', 'email2')
        add_user(db_session, 'noname', 'email3')

        queried_users = User.user_names_like('user%',
                                             db_session=db_session).all()
        assert len(queried_users) == 1
        assert user1 == queried_users[0]
コード例 #8
0
    def test_users(self, db_session):
        user1 = add_user(db_session, 'user1', 'email1')
        user2 = add_user(db_session, 'user2', 'email2')

        group = add_group(db_session, )
        group.users.append(user1)
        group.users.append(user2)

        assert group.users[0] == user1
        assert group.users[1] == user2
コード例 #9
0
    def test_users(self, db_session):
        user1 = add_user(db_session, "user1", "email1")
        user2 = add_user(db_session, "user2", "email2")

        group = add_group(db_session)
        group.users.append(user1)
        group.users.append(user2)

        assert group.users[0] == user1
        assert group.users[1] == user2
コード例 #10
0
    def test_by_user_names_one_none(self, db_session):
        user1 = add_user(db_session, 'user1', 'email1')
        add_user(db_session, 'user2', 'email2')
        user3 = add_user(db_session, 'user3', 'email3')

        queried_users = User.by_user_names(['user1', None, 'user3'],
                                           db_session=db_session).all()

        assert len(queried_users) == 2
        assert user1 == queried_users[0]
        assert user3 == queried_users[1]
コード例 #11
0
    def test_resource_groups_for_any_perm_additional_users(self, db_session):
        self.maxDiff = 99999
        self.set_up_user_group_and_perms(db_session)
        user6 = add_user(db_session, 6, "user 6")
        user7 = add_user(db_session, 7, "user 7")
        perm2 = GroupResourcePermission(
            perm_name="group_perm2", resource_id=self.resource.resource_id
        )
        self.group.resource_permissions.append(perm2)
        self.group.users.append(user6)
        self.group.users.append(user7)
        perms = ResourceService.groups_for_perm(
            self.resource, "__any_permission__", db_session=db_session
        )
        second = [
            PermissionTuple(
                self.user, "group_perm", "group", self.group, self.resource, False, True
            ),
            PermissionTuple(
                user6, "group_perm", "group", self.group, self.resource, False, True
            ),
            PermissionTuple(
                user7, "group_perm", "group", self.group, self.resource, False, True
            ),
            PermissionTuple(
                self.user,
                "group_perm2",
                "group",
                self.group,
                self.resource,
                False,
                True,
            ),
            PermissionTuple(
                user6, "group_perm2", "group", self.group, self.resource, False, True
            ),
            PermissionTuple(
                user7, "group_perm2", "group", self.group, self.resource, False, True
            ),
            PermissionTuple(
                self.user4,
                "group_perm",
                "group",
                self.group2,
                self.resource,
                False,
                True,
            ),
        ]

        check_one_in_other(perms, second)
コード例 #12
0
    def test_resources_ids_with_perm(self, db_session):
        created_user = add_user(db_session)
        resource1 = add_resource(db_session, 1, "test_resource1")
        resource2 = add_resource(db_session, 2, "test_resource2")
        resource3 = add_resource(db_session, 3, "test_resource3")

        permission1 = UserResourcePermission(
            perm_name="test_perm",
            user_id=created_user.id,
            resource_id=resource1.resource_id,
        )
        permission2 = UserResourcePermission(
            perm_name="test_perm",
            user_id=created_user.id,
            resource_id=resource2.resource_id,
        )
        permission3 = UserResourcePermission(
            perm_name="test_perm",
            user_id=created_user.id,
            resource_id=resource3.resource_id,
        )

        resource1.user_permissions.append(permission1)
        resource2.user_permissions.append(permission2)
        resource3.user_permissions.append(permission3)

        db_session.flush()
        resources = UserService.resources_with_perms(
            created_user, ["test_perm"], resource_ids=[1, 3], db_session=db_session
        ).all()
        assert resources == [resource1, resource3]
コード例 #13
0
 def test_get(self, db_session):
     user = add_user(db_session)
     perm = UserPermissionService.get(
         user_id=user.id, perm_name="root", db_session=db_session
     )
     assert perm.user_id == user.id
     assert perm.perm_name == "root"
コード例 #14
0
 def test_resources_with_perm_type_other_found(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, 'test_resource')
     resource2 = add_resource_b(db_session, 2, 'test_resource')
     resource3 = add_resource(db_session, 3, 'test_resource')
     resource4 = add_resource_b(db_session, 4, 'test_resource')
     db_session.flush()
     permission = UserResourcePermission(perm_name='test_perm',
                                         user_id=created_user.id,
                                         resource_id=resource.resource_id)
     resource.user_permissions.append(permission)
     permission2 = UserResourcePermission(perm_name='test_perm',
                                          user_id=created_user.id,
                                          resource_id=resource2.resource_id)
     resource2.user_permissions.append(permission2)
     permission3 = UserResourcePermission(perm_name='test_perm',
                                          user_id=created_user.id,
                                          resource_id=resource3.resource_id)
     resource3.user_permissions.append(permission3)
     permission4 = UserResourcePermission(perm_name='test_perm',
                                          user_id=created_user.id,
                                          resource_id=resource4.resource_id)
     resource4.user_permissions.append(permission4)
     db_session.flush()
     resources = created_user.resources_with_perms(['test_perm'],
                                                   resource_types=[
                                                       'test_resource_b'],
                                                   db_session=db_session).all()
     assert len(resources) == 2
コード例 #15
0
    def test_resources_ids_with_perm(self, db_session):
        created_user = add_user(db_session)
        resource1 = add_resource(db_session, 1, 'test_resource1')
        resource2 = add_resource(db_session, 2, 'test_resource2')
        resource3 = add_resource(db_session, 3, 'test_resource3')

        permission1 = UserResourcePermission(perm_name='test_perm',
                                             user_id=created_user.id,
                                             resource_id=resource1.resource_id)
        permission2 = UserResourcePermission(perm_name='test_perm',
                                             user_id=created_user.id,
                                             resource_id=resource2.resource_id)
        permission3 = UserResourcePermission(perm_name='test_perm',
                                             user_id=created_user.id,
                                             resource_id=resource3.resource_id)

        resource1.user_permissions.append(permission1)
        resource2.user_permissions.append(permission2)
        resource3.user_permissions.append(permission3)

        db_session.flush()
        resources = created_user.resources_with_perms(['test_perm'],
                                                      resource_ids=[1, 3],
                                                      db_session=db_session).all()
        assert resources == [resource1, resource3]
コード例 #16
0
 def test_owned_permissions(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, 'test_resource')
     created_user.resources.append(resource)
     db_session.flush()
     resources = created_user.resources_with_perms(
         ['test_perm'], db_session=db_session).all()
     assert resources[0] == resource
コード例 #17
0
 def test_logon_bad_pass(self, db_session, pyramid_app, username, password):
     user = add_user(db_session, user_name="username1", email="email")
     db_session.add(user)
     db_session.flush()
     result = pyramid_app.post(
         "/sign_in", params={"login": username, "password": password}
     ).json
     assert result["view"] == "bad_auth"
コード例 #18
0
    def test_regenerate_security_code(self, db_session):
        created_user = add_user(db_session)
        old_code = created_user.security_code
        created_user.regenerate_security_code()
        new_code = created_user.security_code

        assert old_code != new_code
        assert len(new_code) == 64
コード例 #19
0
 def test_gravatar_url_with_params(self, db_session):
     import six.moves.urllib.parse as parser
     user = add_user(db_session)
     user.email = '[email protected]'
     gravatar_url = user.gravatar_url(s=100, r='pg')
     parsed_url = parser.urlparse(gravatar_url)
     qs_dict = parser.parse_qs(parsed_url.query)
     assert qs_dict == {'s': ['100'], 'd': ['mm'], 'r': ['pg']}
コード例 #20
0
 def test_owned_permissions(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, "test_resource")
     created_user.resources.append(resource)
     db_session.flush()
     resources = UserService.resources_with_perms(
         created_user, ["test_perm"], db_session=db_session
     ).all()
     assert resources[0] == resource
コード例 #21
0
 def test_populate_obj_obj(self, db_session):
     created_user = add_user(db_session)
     # reset password
     created_user.user_password = None
     test_obj = DummyUserObj()
     created_user.populate_obj_from_obj(test_obj)
     assert created_user.user_name == test_obj.user_name
     assert created_user.user_password == test_obj.user_password
     assert created_user.email == test_obj.email
コード例 #22
0
 def test_user_permissions(self, db_session):
     created_user = add_user(db_session)
     permissions = created_user.permissions
     expected = [
         PermissionTuple(created_user, 'alter_users', 'user', None, None,
                         False, True),
         PermissionTuple(created_user, 'root', 'user', None, None, False,
                         True)]
     check_one_in_other(permissions, expected)
コード例 #23
0
 def test_logon_bad_pass(self, db_session, pyramid_app, username, password):
     user = add_user(db_session, user_name="username1", email="email")
     db_session.add(user)
     db_session.flush()
     result = pyramid_app.post("/sign_in",
                               params={
                                   "login": username,
                                   "password": password
                               }).json
     assert result["view"] == "bad_auth"
コード例 #24
0
 def test_resources_with_wrong_perm(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, 'test_resource')
     permission = UserResourcePermission(
         perm_name='test_perm_bad',
         user_id=created_user.id,
         resource_id=resource.resource_id
     )
     with pytest.raises(AssertionError):
         resource.user_permissions.append(permission)
コード例 #25
0
    def test_user_paginator_usernames(self, db_session):
        user1 = add_user(db_session, "user1", "email1")
        user2 = add_user(db_session, "user2", "email2")
        user3 = add_user(db_session, "user3", "email3")

        group = add_group(db_session)
        group.users.append(user1)
        group.users.append(user2)
        group.users.append(user3)

        # TODO: users count when filtering on names?
        paginator = GroupService.get_user_paginator(group, 1, user_ids=[1, 3])

        assert paginator.page == 1
        assert paginator.first_item == 1
        assert paginator.last_item == 2
        assert paginator.items == [user1, user3]
        assert paginator.item_count == 2
        assert paginator.page_count == 1
コード例 #26
0
    def test_by_username_andsecurity_code_not_existing(self, db_session):
        created_user = add_user(db_session)
        security_code = created_user.security_code
        queried_user = User.by_user_name_and_security_code(
            user_name='not_existing_user',
            security_code=security_code,
            db_session=db_session
        )

        assert queried_user is None
コード例 #27
0
    def test_by_username_andsecurity_code_none(self, db_session):
        created_user = add_user(db_session)
        security_code = created_user.security_code
        found = User.by_user_name_and_security_code(
            user_name=None,
            security_code=security_code,
            db_session=db_session
        )

        assert found is None
コード例 #28
0
    def test_user_paginator_usernames(self, db_session):
        user1 = add_user(db_session, 'user1', 'email1')
        user2 = add_user(db_session, 'user2', 'email2')
        user3 = add_user(db_session, 'user3', 'email3')

        group = add_group(db_session, )
        group.users.append(user1)
        group.users.append(user2)
        group.users.append(user3)

        # TODO: users count when filtering on names?
        paginator = group.get_user_paginator(1, user_ids=[1, 3])

        assert paginator.page == 1
        assert paginator.first_item == 1
        assert paginator.last_item == 2
        assert paginator.items == [user1, user3]
        assert paginator.item_count == 2
        assert paginator.page_count == 1
コード例 #29
0
 def test_by_external_id_and_provider(self, db_session):
     user = add_user(db_session)
     identity = ExternalIdentity(external_user_name='foo',
                                 external_id='foo',
                                 provider_name='facebook')
     user.external_identities.append(identity)
     # db_session.flush()
     found = ExternalIdentityService.by_external_id_and_provider(
         provider_name='facebook', external_id='foo', db_session=db_session)
     assert identity == found
コード例 #30
0
 def test_resources_with_wrong_perm(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, "test_resource")
     permission = UserResourcePermission(
         perm_name="test_perm_bad",
         user_id=created_user.id,
         resource_id=resource.resource_id,
     )
     with pytest.raises(AssertionError):
         resource.user_permissions.append(permission)
コード例 #31
0
 def test_user_permissions(self, db_session):
     created_user = add_user(db_session)
     permissions = UserService.permissions(created_user, db_session=db_session)
     expected = [
         PermissionTuple(
             created_user, "alter_users", "user", None, None, False, True
         ),
         PermissionTuple(created_user, "root", "user", None, None, False, True),
     ]
     check_one_in_other(permissions, expected)
コード例 #32
0
 def test_index_logged(self, db_session, pyramid_app):
     user = add_user(db_session, user_name="username1", email="email")
     db_session.add(user)
     db_session.flush()
     result = pyramid_app.post(
         "/sign_in", params={"login": "******", "password": "******"}
     )
     result = pyramid_app.post("/", headers=result.headers).json
     assert result["view"] == "index"
     assert result["username"] == "username1"
コード例 #33
0
 def test_populate_obj_obj_include(self, db_session):
     created_user = add_user(db_session)
     # reset password
     created_user.user_password = None
     test_obj = DummyUserObj()
     created_user.populate_obj_from_obj(test_obj,
                                        include_keys=["user_password"])
     assert created_user.user_name != test_obj.user_name
     assert created_user.user_password == test_obj.user_password
     assert created_user.email != test_obj.email
コード例 #34
0
 def test_populate_obj_obj_exclude(self, db_session):
     created_user = add_user(db_session)
     # reset password
     created_user.user_password = None
     test_obj = DummyUserObj()
     created_user.populate_obj_from_obj(test_obj,
                                        exclude_keys=['user_password'])
     assert created_user.user_name == test_obj.user_name
     assert created_user.user_password == None
     assert created_user.email == test_obj.email
コード例 #35
0
 def test_populate_obj_obj_include(self, db_session):
     created_user = add_user(db_session)
     # reset password
     created_user.user_password = None
     test_obj = DummyUserObj()
     created_user.populate_obj_from_obj(test_obj,
                                        include_keys=['user_password'])
     assert created_user.user_name != test_obj.user_name
     assert created_user.user_password == test_obj.user_password
     assert created_user.email != test_obj.email
コード例 #36
0
    def test_by_username_andsecurity_code_not_existing(self, db_session):
        created_user = add_user(db_session)
        security_code = created_user.security_code
        queried_user = UserService.by_user_name_and_security_code(
            user_name="not_existing_user",
            security_code=security_code,
            db_session=db_session,
        )

        assert queried_user is None
コード例 #37
0
    def test_resource_groups_for_any_perm_just_group_perms_limited_empty_group(
        self, db_session
    ):
        self.maxDiff = 99999
        self.set_up_user_group_and_perms(db_session)
        user6 = add_user(db_session, 6, "user 6")
        user7 = add_user(db_session, 7, "user 7")
        perm2 = GroupResourcePermission(
            perm_name="group_perm2", resource_id=self.resource.resource_id
        )
        self.group.resource_permissions.append(perm2)
        self.group.users.append(user6)
        self.group.users.append(user7)

        group3 = add_group(db_session, "Empty group")
        perm3 = GroupResourcePermission(
            perm_name="group_permx", resource_id=self.resource.resource_id
        )
        group3.resource_permissions.append(perm3)
        perms = ResourceService.groups_for_perm(
            self.resource,
            "__any_permission__",
            limit_group_permissions=True,
            db_session=db_session,
        )

        second = [
            PermissionTuple(
                None, "group_perm", "group", self.group, self.resource, False, True
            ),
            PermissionTuple(
                None, "group_perm2", "group", self.group, self.resource, False, True
            ),
            PermissionTuple(
                None, "group_perm", "group", self.group2, self.resource, False, True
            ),
            PermissionTuple(
                None, "group_permx", "group", group3, self.resource, False, True
            ),
        ]

        check_one_in_other(perms, second)
コード例 #38
0
 def test_resources_with_wrong_group_permission(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, 'test_resource')
     group = add_group(db_session, )
     group.users.append(created_user)
     group_permission = GroupResourcePermission(
         perm_name='test_perm_bad',
         group_id=group.id,
         resource_id=resource.resource_id)
     with pytest.raises(AssertionError):
         resource.group_permissions.append(group_permission)
コード例 #39
0
 def test_user_permissions(self, db_session):
     created_user = add_user(db_session)
     permissions = UserService.permissions(created_user,
                                           db_session=db_session)
     expected = [
         PermissionTuple(created_user, "alter_users", "user", None, None,
                         False, True),
         PermissionTuple(created_user, "root", "user", None, None, False,
                         True),
     ]
     check_one_in_other(permissions, expected)
コード例 #40
0
    def test_gravatar_url_with_params(self, db_session):
        # pylint: disable=E0401
        import six.moves.urllib.parse as parser

        # pylint: enable=E0401
        user = add_user(db_session)
        user.email = "[email protected]"
        gravatar_url = UserService.gravatar_url(user, s=100, r="pg")
        parsed_url = parser.urlparse(gravatar_url)
        qs_dict = parser.parse_qs(parsed_url.query)
        assert qs_dict == {"s": ["100"], "d": ["mm"], "r": ["pg"]}
コード例 #41
0
    def test_user_paginator(self, db_session):
        user1 = add_user(db_session, 'user1', 'email1')
        user2 = add_user(db_session, 'user2', 'email2')

        group = add_group(db_session, )
        group.users.append(user1)
        group.users.append(user2)
        users_count = len(group.users)
        get_params = {'foo': 'bar', 'baz': 'xxx'}

        paginator = group.get_user_paginator(1, users_count,
                                             GET_params=get_params)

        assert paginator.page == 1
        assert paginator.first_item == 1
        assert paginator.last_item == 2
        assert paginator.items == [user1, user2]
        assert paginator.items == [user1, user2]
        assert paginator.items == [user1, user2]
        assert paginator.items == [user1, user2]
コード例 #42
0
 def test_resources_with_perm(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, 'test_resource')
     permission = UserResourcePermission(perm_name='test_perm',
                                         user_id=created_user.id,
                                         resource_id=resource.resource_id)
     resource.user_permissions.append(permission)
     db_session.flush()
     resources = created_user.resources_with_perms(
         ['test_perm'], db_session=db_session).all()
     assert resources[0] == resource
コード例 #43
0
    def test_user_paginator(self, db_session):
        user1 = add_user(db_session, "user1", "email1")
        user2 = add_user(db_session, "user2", "email2")

        group = add_group(db_session)
        group.users.append(user1)
        group.users.append(user2)
        users_count = len(group.users)
        get_params = {"foo": "bar", "baz": "xxx"}

        paginator = GroupService.get_user_paginator(
            group, 1, users_count, GET_params=get_params
        )

        assert paginator.page == 1
        assert paginator.first_item == 1
        assert paginator.last_item == 2
        assert paginator.items == [user1, user2]
        assert paginator.items == [user1, user2]
        assert paginator.items == [user1, user2]
        assert paginator.items == [user1, user2]
コード例 #44
0
 def test_get(self, db_session):
     user = add_user(db_session)
     identity = ExternalIdentity(external_user_name='foo',
                                 external_id='foo',
                                 provider_name='facebook')
     user.external_identities.append(identity)
     db_session.flush()
     found = ExternalIdentityService.get(provider_name='facebook',
                                         external_id='foo',
                                         local_user_id=user.id,
                                         db_session=db_session)
     assert identity == found
コード例 #45
0
 def test_index_logged(self, db_session, pyramid_app):
     user = add_user(db_session, user_name="username1", email="email")
     db_session.add(user)
     db_session.flush()
     result = pyramid_app.post("/sign_in",
                               params={
                                   "login": "******",
                                   "password": "******"
                               })
     result = pyramid_app.post("/", headers=result.headers).json
     assert result["view"] == "index"
     assert result["username"] == "username1"
コード例 #46
0
 def test_populate_obj_appstruct_include(self, db_session):
     created_user = add_user(db_session)
     # reset password
     created_user.user_password = None
     app_struct = {
         'user_name': 'new_name',
         'user_password': '******',
         'email': '*****@*****.**'
     }
     created_user.populate_obj(app_struct, include_keys=['user_password'])
     assert created_user.user_name != app_struct['user_name']
     assert created_user.user_password == app_struct['user_password']
     assert created_user.email != app_struct['email']
コード例 #47
0
 def test_resources_with_perm(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, "test_resource")
     permission = UserResourcePermission(
         perm_name="test_perm",
         user_id=created_user.id,
         resource_id=resource.resource_id,
     )
     resource.user_permissions.append(permission)
     db_session.flush()
     resources = UserService.resources_with_perms(
         created_user, ["test_perm"], db_session=db_session).all()
     assert resources[0] == resource
コード例 #48
0
 def test_populate_obj_appstruct_include(self, db_session):
     created_user = add_user(db_session)
     # reset password
     created_user.user_password = None
     app_struct = {
         "user_name": "new_name",
         "user_password": "******",
         "email": "*****@*****.**",
     }
     created_user.populate_obj(app_struct, include_keys=["user_password"])
     assert created_user.user_name != app_struct["user_name"]
     assert created_user.user_password == app_struct["user_password"]
     assert created_user.email != app_struct["email"]
コード例 #49
0
 def test_owned_permissions(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, "test_resource")
     created_user.resources.append(resource)
     db_session.flush()
     resources = UserService.resources_with_perms(
         created_user, ["test_perm"], db_session=db_session).all()
     assert resources[0] == resource
     permission = ResourceService.direct_perms_for_user(
         resource, created_user)[0]
     assert permission.owner is True
     assert permission.allowed is True
     assert permission.user.id == created_user.id
コード例 #50
0
    def test_resource_users_for_any_perm_limited_group_perms_empty_group(
            self, db_session):
        self.maxDiff = 99999
        self.set_up_user_group_and_perms(db_session)
        user6 = add_user(db_session, 6, "user 6")
        user7 = add_user(db_session, 7, "user 7")
        perm2 = GroupResourcePermission(perm_name="group_perm2",
                                        resource_id=self.resource.resource_id)
        self.group.resource_permissions.append(perm2)
        self.group.users.append(user6)
        self.group.users.append(user7)
        group3 = add_group(db_session, "Empty group")
        perm3 = GroupResourcePermission(perm_name="group_permx",
                                        resource_id=self.resource.resource_id)
        group3.resource_permissions.append(perm3)

        perms = ResourceService.users_for_perm(
            self.resource,
            "__any_permission__",
            limit_group_permissions=True,
            db_session=db_session,
        )

        second = [
            PermissionTuple(None, "group_perm", "group", self.group,
                            self.resource, False, True),
            PermissionTuple(None, "group_perm2", "group", self.group,
                            self.resource, False, True),
            PermissionTuple(self.user, "test_perm2", "user", None,
                            self.resource, False, True),
            PermissionTuple(self.user, "foo_perm", "user", None, self.resource,
                            False, True),
            PermissionTuple(None, "group_perm", "group", self.group2,
                            self.resource, False, True),
            PermissionTuple(None, "group_permx", "group", group3,
                            self.resource, False, True),
        ]

        check_one_in_other(perms, second)
コード例 #51
0
    def test_resource_users_for_any_perm_excluding_group_perms(
            self, db_session):
        self.maxDiff = 99999
        self.set_up_user_group_and_perms(db_session)
        user6 = add_user(db_session, 6, 'user 6')
        user7 = add_user(db_session, 7, 'user 7')
        perm2 = GroupResourcePermission(perm_name='group_perm2',
                                        resource_id=self.resource.resource_id)
        self.group.resource_permissions.append(perm2)
        self.group.users.append(user6)
        self.group.users.append(user7)
        perms = self.resource.users_for_perm('__any_permission__',
                                             limit_group_permissions=True,
                                             skip_group_perms=True,
                                             db_session=db_session)
        second = [
            PermissionTuple(self.user, 'test_perm2', 'user', None,
                            self.resource, False, True),
            PermissionTuple(self.user, 'foo_perm', 'user', None, self.resource,
                            False, True)
        ]

        check_one_in_other(perms, second)
コード例 #52
0
    def test_resource_users_for_any_perm_limited_group_perms_empty_group(
            self, db_session):
        self.maxDiff = 99999
        self.set_up_user_group_and_perms(db_session)
        user6 = add_user(db_session, 6, 'user 6')
        user7 = add_user(db_session, 7, 'user 7')
        perm2 = GroupResourcePermission(perm_name='group_perm2',
                                        resource_id=self.resource.resource_id)
        self.group.resource_permissions.append(perm2)
        self.group.users.append(user6)
        self.group.users.append(user7)
        group3 = add_group(db_session, 'Empty group')
        perm3 = GroupResourcePermission(perm_name='group_permx',
                                        resource_id=self.resource.resource_id)
        group3.resource_permissions.append(perm3)

        perms = self.resource.users_for_perm('__any_permission__',
                                             limit_group_permissions=True,
                                             db_session=db_session)

        second = [
            PermissionTuple(None, 'group_perm', 'group', self.group,
                            self.resource, False, True),
            PermissionTuple(None, 'group_perm2', 'group', self.group,
                            self.resource, False, True),
            PermissionTuple(self.user, 'test_perm2', 'user', None,
                            self.resource, False, True),
            PermissionTuple(self.user, 'foo_perm', 'user', None, self.resource,
                            False, True),
            PermissionTuple(None, 'group_perm', 'group', self.group2,
                            self.resource, False, True),
            PermissionTuple(None, 'group_permx', 'group', group3,
                            self.resource, False, True),
        ]

        check_one_in_other(perms, second)
コード例 #53
0
    def test_resource_groups_for_any_perm_just_group_perms_limited(
            self, db_session):
        self.maxDiff = 99999
        self.set_up_user_group_and_perms(db_session)
        user6 = add_user(db_session, 6, 'user 6')
        user7 = add_user(db_session, 7, 'user 7')
        perm2 = GroupResourcePermission(perm_name='group_perm2',
                                        resource_id=self.resource.resource_id)
        self.group.resource_permissions.append(perm2)
        self.group.users.append(user6)
        self.group.users.append(user7)
        perms = self.resource.groups_for_perm('__any_permission__',
                                              limit_group_permissions=True,
                                              db_session=db_session)
        second = [
            PermissionTuple(None, 'group_perm', 'group', self.group,
                            self.resource, False, True),
            PermissionTuple(None, 'group_perm2', 'group', self.group,
                            self.resource, False, True),
            PermissionTuple(None, 'group_perm', 'group', self.group2,
                            self.resource, False, True),
        ]

        check_one_in_other(perms, second)
コード例 #54
0
 def test_multiple_resources_with_perm(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, 'test_resource')
     permission = UserResourcePermission(perm_name='test_perm',
                                         user_id=created_user.id,
                                         resource_id=resource.resource_id)
     resource.user_permissions.append(permission)
     resource2 = add_resource(db_session, 2, 'test_resource2')
     permission2 = UserResourcePermission(perm_name='test_perm',
                                          user_id=created_user.id,
                                          resource_id=resource2.resource_id)
     resource2.user_permissions.append(permission2)
     resources = created_user.resources_with_perms(
         ['test_perm'], db_session=db_session).all()
     assert resources == [resource, resource2]
コード例 #55
0
 def test_get_resource_permission(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, 'test_resource')
     permission = UserResourcePermission(perm_name='test_perm',
                                         user_id=created_user.id,
                                         resource_id=resource.resource_id)
     resource.user_permissions.append(permission)
     db_session.flush()
     perm = UserResourcePermissionService.get(
         user_id=created_user.id,
         resource_id=resource.resource_id,
         perm_name='test_perm',
         db_session=db_session)
     assert perm.perm_name == 'test_perm'
     assert perm.resource_id == resource.resource_id
     assert perm.user_id == created_user.id
コード例 #56
0
 def test_mixed_perms(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, 'test_resource')
     permission = UserResourcePermission(perm_name='test_perm',
                                         user_id=created_user.id,
                                         resource_id=resource.resource_id)
     resource.user_permissions.append(permission)
     resource2 = add_resource(db_session, 2, 'test_resource')
     created_user.resources.append(resource2)
     resource3 = add_resource(db_session, 3, 'test_resource')
     resource4 = add_resource_b(db_session, 4, 'test_resource')
     db_session.flush()
     resources = created_user.resources_with_perms(
         ['test_perm'], db_session=db_session).all()
     found_ids = [r.resource_id for r in resources]
     assert sorted(found_ids) == [1, 2]
コード例 #57
0
 def test_mixed_perms(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, "test_resource")
     permission = UserResourcePermission(
         perm_name="test_perm",
         user_id=created_user.id,
         resource_id=resource.resource_id,
     )
     resource.user_permissions.append(permission)
     resource2 = add_resource(db_session, 2, "test_resource")
     created_user.resources.append(resource2)
     add_resource(db_session, 3, "test_resource")
     add_resource_b(db_session, 4, "test_resource")
     db_session.flush()
     resources = UserService.resources_with_perms(
         created_user, ["test_perm"], db_session=db_session).all()
     found_ids = [r.resource_id for r in resources]
     assert sorted(found_ids) == [1, 2]
コード例 #58
0
 def test_multiple_resources_with_perm(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, "test_resource")
     permission = UserResourcePermission(
         perm_name="test_perm",
         user_id=created_user.id,
         resource_id=resource.resource_id,
     )
     resource.user_permissions.append(permission)
     resource2 = add_resource(db_session, 2, "test_resource2")
     permission2 = UserResourcePermission(
         perm_name="test_perm",
         user_id=created_user.id,
         resource_id=resource2.resource_id,
     )
     resource2.user_permissions.append(permission2)
     resources = UserService.resources_with_perms(
         created_user, ["test_perm"], db_session=db_session).all()
     assert resources == [resource, resource2]
コード例 #59
0
 def test_resources_with_group_permission(self, db_session):
     created_user = add_user(db_session)
     resource = add_resource(db_session, 1, 'test_resource')
     resource2 = add_resource(db_session, 2, 'test_resource2')
     add_resource(db_session, 3, 'test_resource3')
     group = add_group(db_session, )
     group.users.append(created_user)
     group_permission = GroupResourcePermission(
         perm_name='test_perm',
         group_id=1,
         resource_id=resource.resource_id)
     group_permission2 = GroupResourcePermission(
         perm_name='foo_perm',
         group_id=1,
         resource_id=resource2.resource_id)
     resource.group_permissions.append(group_permission)
     resource2.group_permissions.append(group_permission2)
     db_session.flush()
     resources = created_user.resources_with_perms(
         ['foo_perm'], db_session=db_session).all()
     assert resources[0] == resource2