private TestImplementation PrepareClient(string responseData, bool withOptions = true, LogVerbosity verbosity = LogVerbosity.Warning, TextWriter tw = null) { var expectedBytes = Encoding.UTF8.GetBytes(responseData); var responseStream = new MemoryStream(); responseStream.Write(expectedBytes, 0, expectedBytes.Length); responseStream.Seek(0, SeekOrigin.Begin); var response = new Mock <IResponse>(); response.Setup(c => c.GetResponseStream()).Returns(responseStream); var request = new Mock <IRequest>(); request.Setup(c => c.Headers).Returns(new WebHeaderCollection()); request.Setup(c => c.Uri).Returns(new Uri("http://www.test.com")); request.Setup(c => c.GetResponse()).Returns(Task.FromResult(response.Object)); var factory = new Mock <IRequestFactory>(); factory.Setup(c => c.Create(It.IsAny <string>())) .Returns(request.Object); TestImplementation client; if (withOptions) { client = new TestImplementation(new ExchangeOptions() { ApiCredentials = new ApiCredentials("Test", "Test2"), LogVerbosity = verbosity, LogWriter = tw }); } else { client = new TestImplementation(); } client.RequestFactory = factory.Object; return(client); }
private TestImplementation PrepareExceptionClient(string responseData, string exceptionMessage, int statusCode, bool credentials = true) { var expectedBytes = Encoding.UTF8.GetBytes(responseData); var responseStream = new MemoryStream(); responseStream.Write(expectedBytes, 0, expectedBytes.Length); responseStream.Seek(0, SeekOrigin.Begin); var we = new WebException(); var r = new HttpWebResponse(); var re = new HttpResponseMessage(); typeof(HttpResponseMessage).GetField("_statusCode", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(re, (HttpStatusCode)statusCode); typeof(HttpWebResponse).GetField("_httpResponseMessage", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(r, re); typeof(WebException).GetField("_message", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(we, exceptionMessage); typeof(WebException).GetField("_response", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(we, r); var response = new Mock <IResponse>(); response.Setup(c => c.GetResponseStream()).Throws(we); var request = new Mock <IRequest>(); request.Setup(c => c.Headers).Returns(new WebHeaderCollection()); request.Setup(c => c.GetResponse()).Returns(Task.FromResult(response.Object)); var factory = new Mock <IRequestFactory>(); factory.Setup(c => c.Create(It.IsAny <string>())) .Returns(request.Object); TestImplementation client = credentials ? new TestImplementation(new ExchangeOptions() { ApiCredentials = new ApiCredentials("Test", "Test2") }) : new TestImplementation(); client.RequestFactory = factory.Object; return(client); }