public async Task GetDownloadResourceResultAsync_MultipleSources_IncludesTaskStatusInException() { using (var test = new PackageDownloaderTest()) { var resourceProvider = new Mock <INuGetResourceProvider>(); var resource = new Mock <DownloadResource>(); resourceProvider.SetupGet(x => x.Name) .Returns(nameof(DownloadResource) + "Provider"); resourceProvider.SetupGet(x => x.ResourceType) .Returns(typeof(DownloadResource)); resourceProvider.Setup(x => x.TryCreate( It.IsNotNull <SourceRepository>(), It.IsAny <CancellationToken>())) .Throws(new OperationCanceledException()); var sourceRepositories = new[] { new SourceRepository(test.SourceRepository.PackageSource, new[] { resourceProvider.Object }) }; var exception = await Assert.ThrowsAsync <FatalProtocolException>( () => PackageDownloader.GetDownloadResourceResultAsync( sourceRepositories, test.PackageIdentity, test.Context, globalPackagesFolder: "", logger: NullLogger.Instance, token: CancellationToken.None)); Assert.Contains(": Canceled", exception.Message); } }
public async Task GetDownloadResourceResultAsync_Source_ThrowsIfCancelled() { using (var test = new PackageDownloaderTest()) { var resourceProvider = new Mock <INuGetResourceProvider>(); resourceProvider.SetupGet(x => x.Name) .Returns(nameof(DownloadResource) + "Provider"); resourceProvider.SetupGet(x => x.ResourceType) .Returns(typeof(DownloadResource)); resourceProvider.Setup(x => x.TryCreate( It.IsNotNull <SourceRepository>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new Tuple <bool, INuGetResource>(true, Mock.Of <DownloadResource>())); var sourceRepository = new SourceRepository( test.SourceRepository.PackageSource, new[] { resourceProvider.Object }); await Assert.ThrowsAsync <OperationCanceledException>( () => PackageDownloader.GetDownloadResourceResultAsync( sourceRepository, test.PackageIdentity, test.Context, globalPackagesFolder: "", logger: NullLogger.Instance, token: new CancellationToken(canceled: true))); } }
public async Task GetDownloadResourceResultAsync_Sources_ThrowsIfCancelled() { using (var test = new PackageDownloaderTest()) { await Assert.ThrowsAsync <OperationCanceledException>( () => PackageDownloader.GetDownloadResourceResultAsync( Enumerable.Empty <SourceRepository>(), test.PackageIdentity, test.Context, globalPackagesFolder: "", logger: NullLogger.Instance, token: new CancellationToken(canceled: true))); } }
public async Task GetDownloadResourceResultAsync_Source_ThrowsIfNoDownloadResource() { using (var test = new PackageDownloaderTest()) { await Assert.ThrowsAsync <InvalidOperationException>( () => PackageDownloader.GetDownloadResourceResultAsync( test.SourceRepository, test.PackageIdentity, test.Context, globalPackagesFolder: "", logger: NullLogger.Instance, token: CancellationToken.None)); } }
public async Task GetDownloadResourceResultAsync_Sources_ThrowsForNullLogger() { using (var test = new PackageDownloaderTest()) { var exception = await Assert.ThrowsAsync <ArgumentNullException>( () => PackageDownloader.GetDownloadResourceResultAsync( Enumerable.Empty <SourceRepository>(), test.PackageIdentity, test.Context, globalPackagesFolder: "", logger: null, token: CancellationToken.None)); Assert.Equal("logger", exception.ParamName); } }
public async Task GetDownloadResourceResultAsync_Sources_ThrowsForNullSources() { using (var test = new PackageDownloaderTest()) { var exception = await Assert.ThrowsAsync <ArgumentNullException>( () => PackageDownloader.GetDownloadResourceResultAsync( sources: null, packageIdentity: test.PackageIdentity, downloadContext: test.Context, globalPackagesFolder: "", logger: NullLogger.Instance, token: CancellationToken.None)); Assert.Equal("sources", exception.ParamName); } }
public async Task GetDownloadResourceResultAsync_SupportsDownloadResultWithoutPackageStream() { using (var test = new PackageDownloaderTest()) using (var stream = new MemoryStream()) using (var zipArchive = new ZipArchive(stream, ZipArchiveMode.Create)) using (var packageReader = new PackageArchiveReader(zipArchive)) { var resourceProvider = new Mock <INuGetResourceProvider>(); var resource = new Mock <DownloadResource>(); var expectedResult = new DownloadResourceResult( packageReader, test.SourceRepository.PackageSource.Source); resource.Setup(x => x.GetDownloadResourceResultAsync( It.IsNotNull <PackageIdentity>(), It.IsNotNull <PackageDownloadContext>(), It.IsAny <string>(), It.IsNotNull <ILogger>(), It.IsAny <CancellationToken>())) .ReturnsAsync(expectedResult); resourceProvider.SetupGet(x => x.Name) .Returns(nameof(DownloadResource) + "Provider"); resourceProvider.SetupGet(x => x.ResourceType) .Returns(typeof(DownloadResource)); resourceProvider.Setup(x => x.TryCreate( It.IsNotNull <SourceRepository>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new Tuple <bool, INuGetResource>(true, resource.Object)); var sourceRepository = new SourceRepository( test.SourceRepository.PackageSource, new[] { resourceProvider.Object }); var actualResult = await PackageDownloader.GetDownloadResourceResultAsync( sourceRepository, test.PackageIdentity, test.Context, globalPackagesFolder : "", logger : NullLogger.Instance, token : CancellationToken.None); Assert.Equal(DownloadResourceResultStatus.AvailableWithoutStream, actualResult.Status); Assert.Same(expectedResult, actualResult); } }