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 DynamicClientRegistrationRequest { Address = Endpoint, Document = new DynamicClientRegistrationDocument() }; request.Headers.Add("custom", "custom"); request.Properties.Add("custom", "custom"); var response = await client.RegisterClientAsync(request); var httpRequest = handler.Request; httpRequest.Method.Should().Be(HttpMethod.Post); httpRequest.RequestUri.Should().Be(new Uri(Endpoint)); httpRequest.Content.Should().NotBeNull(); 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> /// Send a dynamic registration 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 <DynamicClientRegistrationResponse> RegisterClientAsync(this HttpMessageInvoker client, DynamicClientRegistrationRequest request, CancellationToken cancellationToken = default) { var clone = request.Clone(); clone.Method = HttpMethod.Post; clone.Content = new StringContent(JsonSerializer.Serialize(request.Document), Encoding.UTF8, "application/json"); clone.Prepare(); if (request.Token.IsPresent()) { clone.SetBearerToken(request.Token); } HttpResponseMessage response; try { response = await client.SendAsync(clone, cancellationToken).ConfigureAwait(); } catch (Exception ex) { return(ProtocolResponse.FromException <DynamicClientRegistrationResponse>(ex)); } return(await ProtocolResponse.FromHttpResponseAsync <DynamicClientRegistrationResponse>(response).ConfigureAwait()); }