public async Task ShouldSetAcceptHeaderInRequest() { // arrange const string requestUri = "/fake"; const string charset = "utf-8"; const double quality = 1.02; const string mediaType = "text/html"; string value = $"{mediaType};charset={charset};q={quality}"; HttpClient client = new HttpClient(); IHttpClientVerbBuilder <HttpClient> builder = new HttpClientVerbBuilder <HttpClient>(client); // act HttpRequestMessage httpRequest = await client .Request() .Get(requestUri) .Header("Accept", value) .BuildHttpRequestAsync(); MediaTypeWithQualityHeaderValue header = httpRequest.Headers.Accept.FirstOrDefault(); // assert Assert.NotNull(header); Assert.True(header.MediaType == mediaType); Assert.True(header.CharSet == charset); Assert.StrictEqual(header.Quality, quality); }
public async Task ShouldHttpMethodGet() { // arrange const string requestUri = "/fake"; string method = null; CancellationToken cancellationToken = CancellationToken.None; var webHostBuilder = new WebHostBuilder() .Configure(app => { app.Run(async context => { method = context.Request.Method; context.Response.StatusCode = 200; }); }); TestServer server = new TestServer(webHostBuilder); HttpClient client = server.CreateClient(); IHttpClientVerbBuilder <HttpClient> builder = new HttpClientVerbBuilder <HttpClient>(client); // act HttpResponseMessage response = await client .Request() .Get(requestUri) .SendAsync(cancellationToken); // assert Assert.True(response.IsSuccessStatusCode); Assert.Matches("GET", method); }
public void ShouldBuildPostHttpMethod() { // arrange const string url = "http://fakeurl/"; var httpClient = new MockedHttpClient(); IHttpClientVerbBuilder <MockedHttpClient> builder = new HttpClientVerbBuilder <MockedHttpClient>(httpClient); // act IHttpClientQueryBuilder queryBuilder = builder.Post(url); // assert Assert.Matches(queryBuilder.HttpMethod.Method, "POST"); }
public async Task ShouldGetSuccessfulHttpResponseWithNonNullableDateTimeQueryString() { // arrange DateTime value = new DateTime(2010, 5, 11, 10, 30, 02, 03); const string requestUri = "/fake"; CancellationToken cancellationToken = CancellationToken.None; var webHostBuilder = new WebHostBuilder() .Configure(app => { app.Run(async context => { DateTime parsedResult; string r = context.Request.Query.FirstOrDefault(q => q.Key == nameof(value)).Value.FirstOrDefault(); DateTime.TryParse(r, out parsedResult); context.Response.ContentType = "application/json"; var resultPayload = JsonConvert.SerializeObject(new FakePayload { NonNullDateTime = parsedResult }); await context.Response.WriteAsync(resultPayload, cancellationToken); }); }); TestServer server = new TestServer(webHostBuilder); HttpClient client = server.CreateClient(); IHttpClientVerbBuilder <HttpClient> builder = new HttpClientVerbBuilder <HttpClient>(client); // act HttpResponseMessage response = await client .Request() .Get(requestUri) .Query(nameof(value), value) .SendAsync(cancellationToken); // assert Assert.True(response.IsSuccessStatusCode); Assert.NotNull(response.Content); var result = await response.Content.FromJsonAsync <FakePayload>(cancellationToken); Assert.True(result.NonNullDateTime.Year == value.Year); Assert.True(result.NonNullDateTime.Month == value.Month); Assert.True(result.NonNullDateTime.Day == value.Day); Assert.True(result.NonNullDateTime.Hour == value.Hour); Assert.True(result.NonNullDateTime.Minute == value.Minute); Assert.True(result.NonNullDateTime.Second == value.Second); Assert.True(result.NonNullDateTime.Millisecond == value.Millisecond); }
public async Task ShouldSetAuthorizationHeaderInRequest(string scheme, string parameter) { // arrange const string requestUri = "/fake"; HttpClient client = new HttpClient(); IHttpClientVerbBuilder <HttpClient> builder = new HttpClientVerbBuilder <HttpClient>(client); // act HttpRequestMessage httpRequest = await client .Request() .Get(requestUri) .Header("Authorization", $"{scheme} {parameter}") .BuildHttpRequestAsync(); AuthenticationHeaderValue header = httpRequest.Headers.Authorization; // assert Assert.NotNull(header); Assert.True(header.Scheme == scheme); Assert.True(header.Parameter == parameter); }
public void ShouldBuildPostHttpMethodWithJsonPayload() { // arrange const string url = "http://fakeurl/"; var payload = new FakePayload { Id = 10, NonNullDateTime = new DateTime(2010, 1, 1, 10, 00, 00), Note = "Note1", NullableDateTime = new DateTime(2012, 1, 1, 1, 0, 0, 0), Token = Guid.NewGuid() }; var httpClient = new MockedHttpClient(); IHttpClientVerbBuilder <MockedHttpClient> builder = new HttpClientVerbBuilder <MockedHttpClient>(httpClient); // act IHttpClientQueryBuilder queryBuilder = builder.PostAsJson(url, payload); // assert Assert.NotNull(queryBuilder.Content); Assert.Matches(queryBuilder.HttpMethod.Method, "POST"); JsonContent content = Assert.IsType <JsonContent>(queryBuilder.Content); }