public void Get_OK_But_Not_In_Cache_To_Insert_In_Cache() { // setup var request = new HttpRequestMessage(HttpMethod.Get, DummyUrl); var response = GetOkMessage(); _messageHandler.Response = response; _cacheStore.Expect(x => x.TryGetValue(Arg <CacheKey> .Is.Anything, out Arg <HttpResponseMessage> .Out(null).Dummy)).Return(false); _cacheStore.Expect(x => x.AddOrUpdate(Arg <CacheKey> .Is.Anything, Arg <HttpResponseMessage> .Is.Same(response))); _mockRepository.ReplayAll(); // run var task = _client.SendAsync(request); var responseReturned = task.Result; var header = responseReturned.Headers.Single(x => x.Key == CacheCowHeader.Name); CacheCowHeader cacheCowHeader = null; CacheCowHeader.TryParse(header.Value.First(), out cacheCowHeader); // verify _mockRepository.VerifyAll(); Assert.IsNotNull(cacheCowHeader); Assert.AreEqual(true, cacheCowHeader.DidNotExist); }
public void Get_Must_Revalidate_Etag_NotModified() { // setup var request = new HttpRequestMessage(HttpMethod.Get, DummyUrl); var responseFromCache = GetOkMessage(true); responseFromCache.Headers.ETag = new EntityTagHeaderValue(ETagValue); responseFromCache.Content.Headers.Expires = DateTime.Now.Subtract(TimeSpan.FromSeconds(10)); var responseFromServer = new HttpResponseMessage(HttpStatusCode.NotModified); _messageHandler.Response = responseFromServer; _cacheStore.Expect( x => x.TryGetValue(Arg <CacheKey> .Is.Anything, out Arg <HttpResponseMessage> .Out(responseFromCache).Dummy)) .Return(true); _cacheStore.Expect(x => x.AddOrUpdate(Arg <CacheKey> .Is.Anything, Arg <HttpResponseMessage> .Is.Anything)); _mockRepository.ReplayAll(); // run var task = _client.SendAsync(request); var responseReturned = task.Result; var header = responseReturned.Headers.Single(x => x.Key == CacheCowHeader.Name); CacheCowHeader cacheCowHeader = null; CacheCowHeader.TryParse(header.Value.First(), out cacheCowHeader); // verify _mockRepository.VerifyAll(); Assert.IsNotNull(cacheCowHeader); Assert.AreEqual(ETagValue, request.Headers.IfNoneMatch.First().Tag); Assert.AreSame(responseFromCache, responseReturned); Assert.AreEqual(true, cacheCowHeader.CacheValidationApplied); }