# coding=utf-8 import pytest from sqlalchemy.orm.exc import NoResultFound from tracim_backend.lib.core.userworkspace import RoleApi from tracim_backend.models import User from tracim_backend.models.roles import WorkspaceRoles from tracim_backend.tests import DefaultTest from tracim_backend.fixtures.users_and_groups import Base as BaseFixture from tracim_backend.fixtures.content import Content as ContentFixture class TestRoleApi(DefaultTest): fixtures = [BaseFixture, ContentFixture] def test_unit__get_one__ok__nominal_case(self): admin = self.session.query(User)\ .filter(User.email == 'admin@admin.admin').one() rapi = RoleApi( current_user=admin, session=self.session, config=self.config, ) rapi.get_one(admin.user_id, 1) def test_unit__get_one__err__role_does_not_exist(self): admin = self.session.query(User)\ .filter(User.email == 'admin@admin.admin').one() rapi = RoleApi( current_user=admin, session=self.session, config=self.config, ) with pytest.raises(NoResultFound): rapi.get_one(admin.user_id, 100) # workspace 100 does not exist def test_unit__create_one__nominal_case(self): admin = self.session.query(User)\ .filter(User.email == 'admin@admin.admin').one() workspace = self._create_workspace_and_test( 'workspace_1', admin ) bob = self.session.query(User)\ .filter(User.email == 'bob@fsf.local').one() rapi = RoleApi( current_user=admin, session=self.session, config=self.config, ) created_role = rapi.create_one( user=bob, workspace=workspace, role_level=WorkspaceRoles.CONTENT_MANAGER.level, with_notif=False, ) obtain_role = rapi.get_one(bob.user_id, workspace.workspace_id) assert created_role == obtain_role def test_unit__get_all_for_usages(self): admin = self.session.query(User)\ .filter(User.email == 'admin@admin.admin').one() rapi = RoleApi( current_user=admin, session=self.session, config=self.config, ) workspace = self._create_workspace_and_test( 'workspace_1', admin ) roles = rapi.get_all_for_workspace(workspace) len(roles) == 1 roles[0].user_id == admin.user_id roles[0].role == WorkspaceRoles.WORKSPACE_MANAGER.level