public static async Task Use_Scopes_To_Change_And_Then_Restore_Behavior() { // Arrange var builder = new HttpRequestInterceptionBuilder() .ForHost("public.je-apis.com") .WithJsonContent(new { value = 1 }); var options = new HttpClientInterceptorOptions() .Register(builder); string json1; string json2; string json3; // Act using (var client = options.CreateHttpClient()) { json1 = await client.GetStringAsync("http://public.je-apis.com"); using (options.BeginScope()) { options.Register(builder.WithJsonContent(new { value = 2 })); json2 = await client.GetStringAsync("http://public.je-apis.com"); } json3 = await client.GetStringAsync("http://public.je-apis.com"); } // Assert json1.ShouldNotBe(json2); json1.ShouldBe(json3); }
public static async Task Options_Can_Be_Scoped() { // Arrange var url = "https://google.com/"; var payload = new MyObject() { Message = "Hello world!" }; var options = new HttpClientInterceptorOptions() .RegisterGetJson(url, payload, statusCode: HttpStatusCode.NotFound); // Act - begin first scope using (options.BeginScope()) { // Assert - original registration await HttpAssert.GetAsync(options, url, HttpStatusCode.NotFound); // Arrange - first update to registration options.RegisterGetJson(url, payload, statusCode: HttpStatusCode.InternalServerError); // Assert - first updated registration await HttpAssert.GetAsync(options, url, HttpStatusCode.InternalServerError); // Act - begin second scope using (options.BeginScope()) { // Arrange - second update to registration options.RegisterGetJson(url, payload, statusCode: HttpStatusCode.RequestTimeout); // Assert - second updated registration await HttpAssert.GetAsync(options, url, HttpStatusCode.RequestTimeout); } // Assert - first updated registration await HttpAssert.GetAsync(options, url, HttpStatusCode.InternalServerError); } // Assert - original registration await HttpAssert.GetAsync(options, url, HttpStatusCode.NotFound); }