public async Task TryCreate_CachesResultsForFortyMinutes() { // Arrange var source = "http://some-site/index.json"; var content = @"{ version: '3.1.0-beta' }"; var handler = new Mock <TestMessageHandler>(new Dictionary <string, string> { { source, content } }) { CallBase = true }; var sequence = new MockSequence(); handler .InSequence(sequence) .Setup(h => h.SendAsyncPublic(It.IsAny <HttpRequestMessage>())) .Returns(() => { return(Task.FromResult(new HttpResponseMessage(HttpStatusCode.NotFound))); }); handler .InSequence(sequence) .Setup(h => h.SendAsyncPublic(It.IsAny <HttpRequestMessage>())) .Returns(() => { var response = new HttpResponseMessage(); response.Content = new StringContent(content); return(Task.FromResult(response)); }); var provider = new TestableSerivceIndexResourceProvider(); var sourceRepository = new SourceRepository(new PackageSource(source), new INuGetResourceProvider[] { new TestHttpHandlerProvider(handler.Object), provider }); var startTime = DateTime.UtcNow; // Act - 1 provider.SetUtcNow(startTime); var result = await provider.TryCreate(sourceRepository, default(CancellationToken)); // Assert - 1 Assert.False(result.Item1); Assert.Null(result.Item2); // Act - 2 provider.SetUtcNow(startTime.AddMinutes(45)); result = await provider.TryCreate(sourceRepository, default(CancellationToken)); // Assert - 2 Assert.True(result.Item1); var resource = Assert.IsType <ServiceIndexResourceV3>(result.Item2); Assert.NotNull(resource.Index); }
public async Task TryCreate_CachesResultsForFortyMinutes() { // Arrange var source = "http://some-site/index.json"; var content = @"{ version: '3.1.0-beta' }"; var handler = new Mock<TestMessageHandler>(new Dictionary<string, string> { { source, content } }) { CallBase = true }; var sequence = new MockSequence(); handler .InSequence(sequence) .Setup(h => h.SendAsyncPublic(It.IsAny<HttpRequestMessage>())) .Returns(() => { return Task.FromResult(new HttpResponseMessage(HttpStatusCode.NotFound)); }); handler .InSequence(sequence) .Setup(h => h.SendAsyncPublic(It.IsAny<HttpRequestMessage>())) .Returns(() => { var response = new HttpResponseMessage(); response.Content = new StringContent(content); return Task.FromResult(response); }); var provider = new TestableSerivceIndexResourceProvider(); var sourceRepository = new SourceRepository(new PackageSource(source), new INuGetResourceProvider[] { new TestHttpHandlerProvider(handler.Object), provider }); var startTime = DateTime.UtcNow; // Act - 1 provider.SetUtcNow(startTime); var result = await provider.TryCreate(sourceRepository, default(CancellationToken)); // Assert - 1 Assert.False(result.Item1); Assert.Null(result.Item2); // Act - 2 provider.SetUtcNow(startTime.AddMinutes(45)); result = await provider.TryCreate(sourceRepository, default(CancellationToken)); // Assert - 2 Assert.True(result.Item1); var resource = Assert.IsType<ServiceIndexResourceV3>(result.Item2); Assert.NotNull(resource.Index); }