def is_user_permitted_to_validate(project_id, user_id): """ Check if the user is allowed to validate on the project in scope """ if UserService.is_user_blocked(user_id): return False, ValidatingNotAllowed.USER_NOT_ON_ALLOWED_LIST project = ProjectService.get_project_by_id(project_id) if ProjectStatus( project.status ) != ProjectStatus.PUBLISHED and not UserService.is_user_a_project_manager( user_id): return False, ValidatingNotAllowed.PROJECT_NOT_PUBLISHED if project.enforce_validator_role and not UserService.is_user_validator( user_id): return False, ValidatingNotAllowed.USER_NOT_VALIDATOR if project.license_id: if not UserService.has_user_accepted_license( user_id, project.license_id): return False, ValidatingNotAllowed.USER_NOT_ACCEPTED_LICENSE if project.private: # Check user is in allowed users try: next(user for user in project.allowed_users if user.id == user_id) except StopIteration: return False, ValidatingNotAllowed.USER_NOT_ON_ALLOWED_LIST return True, 'User allowed to validate'
def test_admin_role_is_recognized_as_a_validator(self, mock_user): # Arrange stub_user = User() stub_user.role = UserRole.ADMIN.value mock_user.return_value = stub_user # Act / Assert self.assertTrue(UserService.is_user_validator(123))
def test_mapper_role_is_not_recognized_as_a_validator(self, mock_user): # Arrange stub_user = User() stub_user.role = UserRole.MAPPER.value mock_user.return_value = stub_user # Act / Assert self.assertFalse(UserService.is_user_validator(123))