public async Task Should_set_rpc_result_to_requst() { var reqMsg = new Message(0x100500, 1, new TestRequest {TestId = 1}); var rpcResult = new RpcResult { ReqMsgId = reqMsg.MsgId, Result = new TestResponse {TestId = 1, TestText = "THIS IS RESPONSE!"} }; var resMsg = new Message(0x200600, 2, rpcResult); var request = new Mock<IRequest>(); request.SetupGet(r => r.Message).Returns(reqMsg); var requestsManager = new Mock<IRequestsManager>(); requestsManager.Setup(manager => manager.Get(reqMsg.MsgId)).Returns(request.Object); var handler = new RpcResultHandler(requestsManager.Object); await handler.HandleAsync(resMsg); requestsManager.Verify(manager => manager.Get(It.IsAny<ulong>()), Times.Once); requestsManager.Verify(manager => manager.Get(reqMsg.MsgId), Times.Once); request.Verify(r => r.SetResponse(It.IsAny<object>()), Times.Once); request.Verify(r => r.SetResponse(rpcResult.Result), Times.Once); }
public async Task Should_set_exception_on_rpc_error_response() { var reqMsg = new Message(0x100500, 1, new TestRequest {TestId = 1}); var rpcResult = new RpcResult { ReqMsgId = reqMsg.MsgId, Result = new RpcError {ErrorCode = 400, ErrorMessage = "BAD_REQUEST"} }; var resMsg = new Message(0x200600, 2, rpcResult); var request = new Mock<IRequest>(); request.SetupGet(r => r.Message).Returns(reqMsg); var requestsManager = new Mock<IRequestsManager>(); requestsManager.Setup(manager => manager.Get(reqMsg.MsgId)).Returns(request.Object); var handler = new RpcResultHandler(requestsManager.Object); await handler.HandleAsync(resMsg); requestsManager.Verify(manager => manager.Get(It.IsAny<ulong>()), Times.Once); requestsManager.Verify(manager => manager.Get(reqMsg.MsgId), Times.Once); request.Verify(r => r.SetException(It.IsAny<Exception>()), Times.Once); request.Verify( r => r.SetException(It.Is<RpcErrorException>(exception => exception.Error == rpcResult.Result)), Times.Once); }