def test_unlock_tasks_for_validation_raises_error_if_user_doesnt_own_the_lock( self, mock_task): mock_task.return_value = self.unlock_task_stub validated_task = ValidatedTask() validated_task.task_id = 1 validated_tasks = [validated_task] unlock_dto = UnlockAfterValidationDTO() unlock_dto.project_id = 1 unlock_dto.validated_tasks = validated_tasks unlock_dto.user_id = 12 # Act / Assert with self.assertRaises(ValidatorServiceError): ValidatorService.unlock_tasks_after_validation(unlock_dto)
def test_unlock_tasks_for_validation_raises_error_if_task_not_found( self, mock_task): # Arrange mock_task.return_value = None validated_task = ValidatedTask() validated_task.task_id = 1 validated_tasks = [validated_task] unlock_dto = UnlockAfterValidationDTO() unlock_dto.project_id = 1 unlock_dto.validated_tasks = validated_tasks # Act / Assert with self.assertRaises(NotFound): ValidatorService.unlock_tasks_after_validation(unlock_dto)
def test_unlock_tasks_for_validation_raises_error_if_task_not_locked( self, mock_task): # Arrange self.unlock_task_stub.task_locked = False mock_task.return_value = self.unlock_task_stub validated_task = ValidatedTask() validated_task.task_id = 1 validated_tasks = [validated_task] unlock_dto = UnlockAfterValidationDTO() unlock_dto.project_id = 1 unlock_dto.validated_tasks = validated_tasks # Act / Assert with self.assertRaises(ValidatorServiceError): ValidatorService.unlock_tasks_after_validation(unlock_dto)
def post(self, project_id): """ Set tasks as validated --- tags: - tasks produces: - application/json parameters: - in: header name: Authorization description: Base64 encoded session token required: true type: string default: Token sessionTokenHere== - in: header name: Accept-Language description: Language user is requesting type: string required: true default: en - name: project_id in: path description: Project ID the task is associated with required: true type: integer default: 1 - in: body name: body required: true description: JSON object for unlocking a task schema: properties: validatedTasks: type: array items: schema: $ref: "#/definitions/ValidatedTask" responses: 200: description: Task unlocked 400: description: Client Error 401: description: Unauthorized - Invalid credentials 403: description: Forbidden 404: description: Task not found 500: description: Internal Server Error """ try: validated_dto = UnlockAfterValidationDTO(request.get_json()) validated_dto.project_id = project_id validated_dto.user_id = token_auth.current_user() validated_dto.preferred_locale = request.environ.get( "HTTP_ACCEPT_LANGUAGE") validated_dto.validate() except DataError as e: current_app.logger.error(f"Error validating request: {str(e)}") return {"Error": "Task unlock failed"}, 400 try: tasks = ValidatorService.unlock_tasks_after_validation( validated_dto) return tasks.to_primitive(), 200 except ValidatorServiceError: return {"Error": "Task unlock failed"}, 403 except NotFound: return {"Error": "Task unlock failed"}, 404 except Exception as e: error_msg = f"Validator Lock API - unhandled error: {str(e)}" current_app.logger.critical(error_msg) return {"Error": "Task unlock failed"}, 500