public InterceptionBenchmarks() { _options = new HttpClientInterceptorOptions().ThrowsOnMissingRegistration(); var builder = new HttpRequestInterceptionBuilder(); builder .Requests() .ForHttp() .ForHost("www.google.co.uk") .ForPath("search") .ForQuery("q=Just+Eat") .Responds() .WithMediaType("text/html") .WithContent(@"<!DOCTYPE html><html dir=""ltr"" lang=""en""><head><title>Just Eat</title></head></html>") .RegisterWith(_options); builder .Requests() .ForHttps() .ForHost("files.domain.com") .ForPath("setup.exe") .ForQuery(string.Empty) .Responds() .WithMediaType("application/octet-stream") .WithContent(() => new byte[] { 0, 1, 2, 3, 4 }) .RegisterWith(_options); builder .Requests() .ForHttps() .ForHost("api.github.com") .ForPath("orgs/justeat") .ForQuery(string.Empty) .Responds() .WithMediaType("application/json") .WithJsonContent(new { id = 1516790, login = "******", url = "https://api.github.com/orgs/justeat" }) .RegisterWith(_options); builder .Requests() .ForQuery("page=1") .Responds() .WithContentStream(() => File.OpenRead("organization.json")) .RegisterWith(_options); var refitSettings = new RefitSettings() { ContentSerializer = new SystemTextJsonContentSerializer(), }; #pragma warning disable CA2000 _client = _options.CreateHttpClient(); _serviceNewtonsoftJson = RestService.For <IGitHub>(_options.CreateHttpClient("https://api.github.com")); _serviceSystemTextJson = RestService.For <IGitHub>(_options.CreateHttpClient("https://api.github.com"), refitSettings); #pragma warning restore CA2000 }
public static async Task Intercept_Http_Get_For_Json_Object_Using_System_Text_Json() { // Arrange var options = new HttpClientInterceptorOptions(); var builder = new HttpRequestInterceptionBuilder(); builder.Requests().ForGet().ForHttps().ForHost("public.je-apis.com").ForPath("terms") .Responds().WithJsonContent(new { Id = 1, Link = "https://www.just-eat.co.uk/privacy-policy" }) .RegisterWith(options); using var client = options.CreateHttpClient(); // Act using var utf8Json = await client.GetStreamAsync("https://public.je-apis.com/terms"); // Assert using var content = await JsonDocument.ParseAsync(utf8Json); content.RootElement.GetProperty("Id").GetInt32().ShouldBe(1); content.RootElement.GetProperty("Link").GetString().ShouldBe("https://www.just-eat.co.uk/privacy-policy"); }
public static async Task Intercept_Http_Get_For_Json_Object() { // Arrange var options = new HttpClientInterceptorOptions(); var builder = new HttpRequestInterceptionBuilder(); builder.Requests().ForGet().ForHttps().ForHost("public.je-apis.com").ForPath("terms") .Responds().WithJsonContent(new { Id = 1, Link = "https://www.just-eat.co.uk/privacy-policy" }) .RegisterWith(options); using var client = options.CreateHttpClient(); // Act string json = await client.GetStringAsync("https://public.je-apis.com/terms"); // Assert var content = JObject.Parse(json); content.Value <int>("Id").ShouldBe(1); content.Value <string>("Link").ShouldBe("https://www.just-eat.co.uk/privacy-policy"); }