public void Execute_UnicodeCharacters() { var handler = new TestBodyMessageHandler() { GZipEnabled = false, ResponseObject = new MockResponse { Id = 100, Name = @"مرحبا العالم" }, ExpectedRequestObject = new MockRequest { Name = @"مرحبا العالم! 您好,世界!" } }; var initializer = new BaseClientService.Initializer() { GZipEnabled = false, HttpClientFactory = new MockHttpClientFactory(handler) }; using (var service = new MockClientService(initializer)) { handler.Serializer = service.Serializer; var request = new TestClientServiceRequest(service, "GET", handler.ExpectedRequestObject); var response = request.Execute(); Assert.That(handler.Calls, Is.EqualTo(1)); // The returned response should contain ETag, check that the service add the right ETag property on // the response. handler.ResponseObject.ETag = handler.ResponseETag; Assert.That(response, Is.EqualTo(handler.ResponseObject)); } }
/// <summary>A subtest for testing execute as stream (async and sync).</summary> private void SubtestExecuteAsStream(bool async) { var handler = new TestBodyMessageHandler { GZipEnabled = false, ResponseObject = new MockResponse { Id = 100, Name = "sample name" }, ExpectedRequestObject = new MockRequest { Name = "long long name" } }; var initializer = new BaseClientService.Initializer { GZipEnabled = false, HttpClientFactory = new MockHttpClientFactory(handler) }; using (var service = new MockClientService(initializer)) { handler.Serializer = service.Serializer; var request = new TestClientServiceRequest(service, "GET", handler.ExpectedRequestObject); MockResponse response = null; Stream stream = null; if (async) { request.ExecuteAsStreamAsync().ContinueWith(t => { stream = t.Result; }, TaskContinuationOptions.OnlyOnRanToCompletion).Wait(); } else { stream = request.ExecuteAsStream(); } // Read the object. var str = ExtractStringFromStream(stream); response = service.Serializer.Deserialize <MockResponse>(str); Assert.That(handler.Calls, Is.EqualTo(1)); Assert.That(response, Is.EqualTo(handler.ResponseObject)); } }
/// <summary>A subtest for testing GZip and sync-async calls.</summary> /// <param name="gzip">Defines if GZip is enabled</param> /// <param name="async">Defines which method is going to be called (Execute or ExecuteAsync)</param> private void SubtestExecute_GZip(bool gzip, bool async) { var handler = new TestBodyMessageHandler() { GZipEnabled = gzip, ResponseObject = new MockResponse { Id = 100, Name = "sample name" }, ExpectedRequestObject = new MockRequest { Name = "long long name" } }; var initializer = new BaseClientService.Initializer() { GZipEnabled = gzip, HttpClientFactory = new MockHttpClientFactory(handler) }; using (var service = new MockClientService(initializer)) { handler.Serializer = service.Serializer; var request = new TestClientServiceRequest(service, "POST", handler.ExpectedRequestObject); MockResponse response = null; if (async) { var task = request.ExecuteAsync(); response = task.Result; } else { response = request.Execute(); } // Note: Even if GZipEnabled is true, we don't need to extract the real string from the GZip stream, // because in a real request we use HttpClientHandler which its AutomaticDecompression is set to // System.Net.DecompressionMethods.GZip. Assert.That(handler.Calls, Is.EqualTo(1)); // The returned response should contain ETag, check that the service adds the right ETag property on // the response. handler.ResponseObject.ETag = handler.ResponseETag; Assert.That(response, Is.EqualTo(handler.ResponseObject)); } }