public async Task GetRedirectUsersApi_InvokedOnFirstCallFromCassetteOnSecondCall_Success() { using var _ = TestServerHelper.BuildAndStartHost(); var httpClientHandler = new SocketsHttpHandler(); var innerHandler = new StubHttpRequestHandler(httpClientHandler); var cassette = new Cassette(); var tryReplayHandler = new TryReplayHttpMessageHandler(cassette, innerHandler); using var httpClient = new HttpClient(tryReplayHandler) { BaseAddress = _baseAddress }; var response = await httpClient.GetAsync("/api/get_users/2"); Assert.That(innerHandler.Invoked, Is.True); Assert.That(cassette.Records, Has.Count.EqualTo(1)); Assert.That(response.RequestMessage.RequestUri, Is.EqualTo(new Uri(_baseAddress, "/api/users/2"))); innerHandler.Invoked = false; response = await httpClient.GetAsync("/api/get_users/2"); Assert.That(innerHandler.Invoked, Is.False); Assert.That(response.RequestMessage?.RequestUri, Is.EqualTo(new Uri(_baseAddress, "/api/users/2"))); var actual = JObject.Parse(await response.Content.ReadAsStringAsync()); var expected = JObject.Parse("{\"id\": 2, \"name\": \"User 2\"}"); Assert.That(actual, Is.EqualTo(expected)); }
public async Task GetUsersApi_InvokedOnFirstCallFromCassetteOnSecondCall_Success() { using var _ = TestServerHelper.BuildAndStartHost(); var httpClientHandler = new SocketsHttpHandler(); var innerHandler = new StubHttpRequestHandler(httpClientHandler); var cassette = new Cassette(); var tryReplayHandler = new TryReplayHttpMessageHandler(cassette, innerHandler); using var httpClient = new HttpClient(tryReplayHandler) { BaseAddress = _baseAddress }; await httpClient.GetStringAsync("/api/users/1"); Assert.That(innerHandler.Invoked, Is.True); Assert.That(cassette.Records, Has.Count.EqualTo(1)); innerHandler.Invoked = false; var result = await httpClient.GetStringAsync("/api/users/1"); Assert.That(innerHandler.Invoked, Is.False); var actual = JObject.Parse(result); var expected = JObject.Parse("{\"id\": 1, \"name\": \"User 1\"}"); Assert.That(actual, Is.EqualTo(expected)); }
public async Task ReqResIn_GetUser_SuccessfullyStoredForFirstCallAndReplayedOnSecond() { const string uri = "https://reqres.in/api/users/2"; var httpClientHandler = new HttpClientHandler(); var innerHandler = new StubHttpRequestHandler(httpClientHandler); var cassette = new Cassette(); var tryReplayHandler = new TryReplayHttpMessageHandler(cassette, innerHandler); using var httpClient = new HttpClient(tryReplayHandler); var response = await httpClient.GetAsync(uri); Assert.That(innerHandler.Invoked, Is.True); await AssertResponse(response); Assert.That(cassette.Records, Has.Count.EqualTo(1)); innerHandler.Invoked = false; var date = response.Headers.Date; response = await httpClient.GetAsync(uri); await AssertResponse(response); Assert.That(innerHandler.Invoked, Is.False); Assert.That(response.Headers.Date, Is.EqualTo(date));