[InlineData(HttpStatusCode.InternalServerError, 2)] // retry on 5xx public async Task CompareLocalPackageToFeedPackageShouldRetryFailedRequests( HttpStatusCode initialResponseStatusCode, int expectedAttemptCount) { var testPackageName = Path.Combine("Nupkgs", "test-package-a.zip"); var localPackagePath = TestInputs.GetFullPath(testPackageName); var packageContentUrl = "https://fakefeed.azure.com/nuget/v3/test-package-a.zip"; var taskLoggingHelper = new Microsoft.Build.Utilities.TaskLoggingHelper(new StubTask()); var retryHandler = new MockRetryHandler(maxAttempts: 2); var responseContent = TestInputs.ReadAllBytes(testPackageName); var responses = new[] { new HttpResponseMessage(initialResponseStatusCode) { Content = new ByteArrayContent(responseContent) }, new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(responseContent) } }; var httpClient = FakeHttpClient.WithResponses(responses); await GeneralUtils.CompareLocalPackageToFeedPackage( localPackagePath, packageContentUrl, httpClient, taskLoggingHelper, retryHandler); retryHandler.ActualAttempts.Should().Be(expectedAttemptCount); }
public async Task CompareLocalPackageToFeedPackageShouldCorrectlyInterpretFeedResponse( string feedResponseContentName, HttpStatusCode feedResponseStatusCode, PackageFeedStatus expectedResult) { var localPackagePath = TestInputs.GetFullPath(Path.Combine("Nupkgs", "test-package-a.zip")); var packageContentUrl = $"https://fakefeed.azure.com/nuget/v3/{feedResponseContentName}.nupkg"; var taskLoggingHelper = new Microsoft.Build.Utilities.TaskLoggingHelper(new StubTask()); var retryHandler = new MockRetryHandler(); var response = new HttpResponseMessage(feedResponseStatusCode); if (!string.IsNullOrEmpty(feedResponseContentName)) { var content = TestInputs.ReadAllBytes(Path.Combine("Nupkgs", $"{feedResponseContentName}.zip")); response.Content = new ByteArrayContent(content); } ; var httpClient = FakeHttpClient.WithResponses(response); var result = await GeneralUtils.CompareLocalPackageToFeedPackage( localPackagePath, packageContentUrl, httpClient, taskLoggingHelper, retryHandler); result.Should().Be(expectedResult); }