public async Task Http_request_should_have_correct_format() { var handler = new NetworkHandler(HttpStatusCode.NotFound, "not found"); var client = new HttpClient(handler); var request = new JsonWebKeySetRequest { Address = _endpoint }; request.Headers.Add("custom", "custom"); request.Properties.Add("custom", "custom"); var response = await client.GetJsonWebKeySetAsync(request); var httpRequest = handler.Request; httpRequest.Method.Should().Be(HttpMethod.Get); httpRequest.RequestUri.Should().Be(new Uri(_endpoint)); httpRequest.Content.Should().BeNull(); var headers = httpRequest.Headers; headers.Count().Should().Be(2); headers.Should().Contain(h => h.Key == "custom" && h.Value.First() == "custom"); var properties = httpRequest.Properties; properties.Count.Should().Be(1); var prop = properties.First(); prop.Key.Should().Be("custom"); ((string)prop.Value).Should().Be("custom"); }
/// <summary> /// Sends a JSON web key set document request /// </summary> /// <param name="client">The client.</param> /// <param name="request">The request</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> public static async Task <JsonWebKeySetResponse> GetJsonWebKeySetAsync(this HttpMessageInvoker client, JsonWebKeySetRequest request, CancellationToken cancellationToken = default) { var clone = request.Clone(); clone.Method = HttpMethod.Get; clone.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/jwk-set+json")); clone.Prepare(); HttpResponseMessage response; try { response = await client.SendAsync(clone, cancellationToken).ConfigureAwait(false); string responseContent = null; if (response.Content != null) { responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false); } if (!response.IsSuccessStatusCode) { return(await ProtocolResponse.FromHttpResponseAsync <JsonWebKeySetResponse>(response, $"Error connecting to {clone.RequestUri.AbsoluteUri}: {response.ReasonPhrase}").ConfigureAwait(false)); } } catch (Exception ex) { return(ProtocolResponse.FromException <JsonWebKeySetResponse>(ex, $"Error connecting to {clone.RequestUri.AbsoluteUri}. {ex.Message}.")); } return(await ProtocolResponse.FromHttpResponseAsync <JsonWebKeySetResponse>(response)); }