Web extensions for aweXpect.
You can verify, the method of the HttpRequestMessage:
var request = new HttpRequestMessage(HttpMethod.Get, "https://github.com/aweXpect/aweXpect.Web");
await Expect.That(request).HasMethod(HttpMethod.Get);You can verify, the request URI of the HttpRequestMessage:
var request = new HttpRequestMessage(HttpMethod.Get, "https://github.com/aweXpect/aweXpect.Web");
await Expect.That(request).HasRequestUri("https://github.com/aweXpect/aweXpect.Web");
await Expect.That(request).HasRequestUri(new Uri("https://github.com/aweXpect/aweXpect.Web"));You can verify the headers of the HttpRequestMessage:
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://github.com/aweXpect/aweXpect.Web");
// Add headers
await Expect.That(request).HasHeader("X-GitHub-Request-Id");
await Expect.That(request).HasHeader("Cache-Control")
.WithValue("must-revalidate, max-age=0, private");
await Expect.That(request).DoesNotHaveHeader("X-My-Header");You can also add additional expectations on the header value(s):
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://github.com/aweXpect/aweXpect.Web");
// Add headers
await Expect.That(request).HasHeader("X-GitHub-Request-Id")
.WhoseValue(value => value.IsNotEmpty());
await Expect.That(request).HasHeader("Vary")
.WhoseValues(values => values.Contains("Turbo-Frame"));You can verify, the content of the HttpRequestMessage:
var request = new HttpRequestMessage(HttpMethod.Post, "https://github.com/aweXpect/aweXpect.Web")
{
Content = new StringContent("my aweXpect content")
};
await Expect.That(request).HasContent("*aweXpect*").AsWildcard();You can use the same configuration options as when comparing strings.
You can verify the status code of the HttpResponseMessage:
HttpResponseMessage response = await httpClient.GetAsync("https://github.com/aweXpect/aweXpect.Web");
await Expect.That(response).HasStatusCode().Success();
await Expect.That(response).HasStatusCode(HttpStatusCode.OK);
response = await httpClient.PostAsync("https://github.com/aweXpect/aweXpect.Web", new StringContent(""));
await Expect.That(response).HasStatusCode().ClientError().Or.HasStatusCode().ServerError().Or.HasStatusCode().Redirection();You can verify the headers of the HttpResponseMessage:
HttpResponseMessage response = await httpClient.GetAsync("https://github.com/aweXpect/aweXpect.Web");
await Expect.That(response).HasHeader("X-GitHub-Request-Id");
await Expect.That(response).HasHeader("Cache-Control")
.WithValue("must-revalidate, max-age=0, private");
await Expect.That(response).DoesNotHaveHeader("X-My-Header");You can also add additional expectations on the header value(s):
HttpResponseMessage response = await httpClient.GetAsync("https://github.com/aweXpect/aweXpect.Web");
await Expect.That(response).HasHeader("X-GitHub-Request-Id")
.WhoseValue(value => value.IsNotEmpty());
await Expect.That(response).HasHeader("Vary")
.WhoseValues(values => values.Contains("Turbo-Frame"));You can verify, the content of the HttpResponseMessage:
HttpResponseMessage response = await httpClient.GetAsync("https://github.com/aweXpect/aweXpect");
await Expect.That(response).HasContent("*aweXpect*").AsWildcard();You can use the same configuration options as when comparing strings.
Great care was taken to provide as much information as possible, when a status verification failed.
The response could look similar to:
Expected that response has success status code (2xx), but it was 404 NotFound HTTP-Request: GET https://github.com/aweXpect/missing-repo HTTP/1.1 HTTP-Response: 404 NotFound HTTP/1.1 Server: GitHub.com Date: Fri, 29 Nov 2024 07:55:47 GMT Cache-Control: no-cache Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin X-GitHub-Request-Id: DB30:24038B:287F716:29D98BD:67497384 Content is binary
You can verify that the content contains a valid ProblemDetails object:
HttpResponseMessage response = // a call that returns a problem details object
await Expect.That(response)
.HasProblemDetailsContent("https://httpstatuses.com/404")
.WithTitle("Error: Not Found")
.WithStatus(404)
.WithInstance("93c8f977-7ff7-46ed-900f-7b6264624a31");For all string values you can use the same configuration options as when comparing strings.