public void Test_HandleBad_WritesFlagAndWrapsError() { var bad = new BadRequestWrapper { Exception = new DivideByZeroException() }; var handlingContext = new HandlingContext(Mock.Of <HttpContext>(), Mock.Of <Encoding>(), Mock.Of <RequestDelegate>()); requestHandlerMock.Setup(x => x.GetError(It.IsAny <DivideByZeroException>())) .Returns(new Error <object>()); var result = requestHandlerMock.Object.HandleBad(bad, handlingContext); handlingContext.WriteResponse.Should().BeTrue(); result.Should().NotBeNull(); requestHandlerMock.Verify(x => x.GetError(It.IsAny <DivideByZeroException>())); requestHandlerMock.Verify(x => x.HandleBad(It.IsAny <BadRequestWrapper>(), It.IsAny <HandlingContext>())); }
protected internal virtual JsonServerResponseWrapper HandleBad(BadRequestWrapper badRequestWrapper, HandlingContext context) { log.LogTrace($"{nameof(HandleBad)}: converting exception to json response"); context.WriteResponse = true; var error = GetError(badRequestWrapper.Exception); var errorResponse = new ErrorResponse <object> { Error = new Error <object> { Code = error.Code, Message = error.Message, Data = error.GetData() } }; var value = JToken.FromObject(errorResponse, headerJsonRpcSerializer.Serializer); return(new JsonServerResponseWrapper(value, null, null)); // TODO any cases when need to pass through? // TODO it can break protocol because we can not distinguish between bad rpc request and absense of rpc route/action, for example }