public void ProcessParsesResultAsync() { var requestMock = new MockWebRequest(); requestMock.SetupResponse("responsetext"); var expected = new BluePayPost20ResponseV3(); var parserMock = new Mock <IBluePayResponseParser <BluePayPost20ResponseV3> >(); parserMock.Setup(p => p.ParseAsync(It.Is((TextReader tr) => tr.ReadToEnd() == "responsetext"))) .ReturnsAsync(expected); var proxy = new BluePay20PostClient( endpoint: "https://example.org", parser: parserMock.Object, webRequestProvider: (url) => { Assert.AreEqual("https://example.org", url); return(requestMock.Object); }); var response = proxy.ProcessAsync(new BluePayMessage()).Result; Assert.AreSame(expected, response); }
public void ProcessWrapsExceptionAsync() { var responseMock = new Mock <WebResponse>(); responseMock.Setup(r => r.GetResponseStream()) .Returns(new MemoryStream(Encoding.UTF8.GetBytes("response error"))); var expected = new BluePayPost20ResponseV3(); var parserMock = new Mock <IBluePayResponseParser <BluePayPost20ResponseV3> >(); parserMock.Setup(p => p.ParseAsync(It.Is((TextReader tr) => tr.ReadToEnd() == "response error"))) .ReturnsAsync(expected); var inner = new WebException("inner", null, WebExceptionStatus.UnknownError, responseMock.Object); var proxy = new BluePay20PostClient( endpoint: "https://example.org", parser: parserMock.Object, webRequestProvider: (url) => { throw inner; }); var response = proxy.ProcessAsync(new BluePayMessage()).Result; Assert.AreSame(expected, response); }