public async Task CopyNupkgFileToAsync_ReturnsFalseIfExceptionHandled() { var destinationFilePath = "a"; var connection = new Mock <IConnection>(MockBehavior.Strict); connection.Setup(x => x.SendRequestAndReceiveResponseAsync <CopyNupkgFileRequest, CopyNupkgFileResponse>( It.Is <MessageMethod>(m => m == MessageMethod.CopyNupkgFile), It.Is <CopyNupkgFileRequest>(c => c.PackageId == _packageIdentity.Id && c.PackageVersion == _packageIdentity.Version.ToNormalizedString() && c.PackageSourceRepository == _packageSourceRepository && c.DestinationFilePath == destinationFilePath), It.IsAny <CancellationToken>())) .ThrowsAsync(new Exception("simulated failure")); using (var test = PluginPackageDownloaderTest.Create()) { test.Plugin.SetupGet(x => x.Connection) .Returns(connection.Object); test.Downloader.SetExceptionHandler(exception => Task.FromResult(true)); var wasCopied = await test.Downloader.CopyNupkgFileToAsync( destinationFilePath, CancellationToken.None); Assert.False(wasCopied); } }
public async Task GetPackageHashAsync_ReturnsPackageHashForSuccess() { var hashAlgorithm = "a"; var response = new GetPackageHashResponse(MessageResponseCode.Success, hash: "b"); var connection = new Mock <IConnection>(MockBehavior.Strict); connection.Setup(x => x.SendRequestAndReceiveResponseAsync <GetPackageHashRequest, GetPackageHashResponse>( It.Is <MessageMethod>(m => m == MessageMethod.GetPackageHash), It.Is <GetPackageHashRequest>(c => c.PackageId == _packageIdentity.Id && c.PackageVersion == _packageIdentity.Version.ToNormalizedString() && c.PackageSourceRepository == _packageSourceRepository && c.HashAlgorithm == hashAlgorithm), It.IsAny <CancellationToken>())) .ReturnsAsync(response); using (var test = PluginPackageDownloaderTest.Create()) { test.Plugin.SetupGet(x => x.Connection) .Returns(connection.Object); var packageHash = await test.Downloader.GetPackageHashAsync( hashAlgorithm, CancellationToken.None); Assert.Equal(response.Hash, packageHash); } }
public async Task CopyNupkgFileToAsync_ReturnsFalseIfPackageDownloadMarkerFileCreated() { using (var testDirectory = TestDirectory.Create()) { var destinationFilePath = Path.Combine(testDirectory.Path, _packageIdentity.Id); var connection = new Mock <IConnection>(MockBehavior.Strict); connection.Setup(x => x.SendRequestAndReceiveResponseAsync <CopyNupkgFileRequest, CopyNupkgFileResponse>( It.Is <MessageMethod>(m => m == MessageMethod.CopyNupkgFile), It.Is <CopyNupkgFileRequest>(c => c.PackageId == _packageIdentity.Id && c.PackageVersion == _packageIdentity.Version.ToNormalizedString() && c.PackageSourceRepository == _packageSourceRepository && c.DestinationFilePath == destinationFilePath), It.IsAny <CancellationToken>())) .ReturnsAsync(new CopyNupkgFileResponse(MessageResponseCode.NotFound)); using (var test = PluginPackageDownloaderTest.Create()) { test.Plugin.SetupGet(x => x.Connection) .Returns(connection.Object); var wasCopied = await test.Downloader.CopyNupkgFileToAsync( destinationFilePath, CancellationToken.None); var markerFilePath = Path.Combine(testDirectory.Path, $"{_packageIdentity.Id}.packagedownload.marker"); Assert.False(wasCopied); Assert.True(File.Exists(markerFilePath)); } } }
public void Constructor_InitializesProperties() { using (var test = PluginPackageDownloaderTest.Create()) { Assert.Same(test.PackageReader, test.Downloader.ContentReader); Assert.Same(test.PackageReader, test.Downloader.CoreReader); } }
public async Task GetPackageHashAsync_ThrowsIfCancelled() { using (var test = PluginPackageDownloaderTest.Create()) { await Assert.ThrowsAsync <OperationCanceledException>( () => test.Downloader.GetPackageHashAsync( hashAlgorithm: "SHA512", cancellationToken: new CancellationToken(canceled: true))); } }
public async Task GetPackageHashAsync_ThrowsForNullOrEmptyDestinationFilePath(string hashAlgorithm) { using (var test = PluginPackageDownloaderTest.Create()) { var exception = await Assert.ThrowsAsync <ArgumentException>( () => test.Downloader.GetPackageHashAsync(hashAlgorithm, CancellationToken.None)); Assert.Equal("hashAlgorithm", exception.ParamName); } }
public async Task CopyNupkgFileToAsync_ThrowsIfCancelled() { using (var test = PluginPackageDownloaderTest.Create()) { await Assert.ThrowsAsync <OperationCanceledException>( () => test.Downloader.CopyNupkgFileToAsync( destinationFilePath: "a", cancellationToken: new CancellationToken(canceled: true))); } }
public async Task CopyNupkgFileToAsync_ThrowsForNullOrEmptyDestinationFilePath(string destinationFilePath) { using (var test = PluginPackageDownloaderTest.Create()) { var exception = await Assert.ThrowsAsync <ArgumentException>( () => test.Downloader.CopyNupkgFileToAsync(destinationFilePath, CancellationToken.None)); Assert.Equal("destinationFilePath", exception.ParamName); } }
public void Dispose_IsIdempotent() { using (var test = PluginPackageDownloaderTest.Create()) { test.Downloader.Dispose(); test.Downloader.Dispose(); test.Plugin.Verify(x => x.Dispose(), Times.Exactly(2)); } }
public void SetExceptionHandler_ThrowsForNullHandler() { using (var test = PluginPackageDownloaderTest.Create()) { var exception = Assert.Throws <ArgumentNullException>( () => test.Downloader.SetExceptionHandler(handleExceptionAsync: null)); Assert.Equal("handleExceptionAsync", exception.ParamName); } }
public void CoreReader_ThrowsIfDisposed() { using (var test = PluginPackageDownloaderTest.Create()) { test.Downloader.Dispose(); var exception = Assert.Throws <ObjectDisposedException>(() => test.Downloader.CoreReader); Assert.Equal(nameof(PluginPackageDownloader), exception.ObjectName); } }
public void Dispose_DisposesDisposables() { using (var test = PluginPackageDownloaderTest.Create()) { test.Downloader.Dispose(); // PluginPackageDownloader.Dispose() calls both IPlugin.Dispose() and // PluginPackageReader.Dispose(). The latter call IPlugin.Dispose() // on its own IPlugin instance. test.Plugin.Verify(x => x.Dispose(), Times.Exactly(2)); } }
public async Task GetPackageHashAsync_ThrowsIfDisposed() { using (var test = PluginPackageDownloaderTest.Create()) { test.Downloader.Dispose(); var exception = await Assert.ThrowsAsync <ObjectDisposedException>( () => test.Downloader.GetPackageHashAsync( hashAlgorithm: "a", cancellationToken: CancellationToken.None)); Assert.Equal(nameof(PluginPackageDownloader), exception.ObjectName); } }
public async Task CopyNupkgFileToAsync_ThrowsIfDisposed() { using (var test = PluginPackageDownloaderTest.Create()) { test.Downloader.Dispose(); var exception = await Assert.ThrowsAsync <ObjectDisposedException>( () => test.Downloader.CopyNupkgFileToAsync( destinationFilePath: "a", cancellationToken: CancellationToken.None)); Assert.Equal(nameof(PluginPackageDownloader), exception.ObjectName); } }