Example #1
0
        private async Task <bool> Mount(string isoFilePath)
        {
            var mountResult = await _virtualCloneDrive.MountAsync(isoFilePath);

            if (mountResult.HasError)
            {
                WriteLogMessage(string.Format("There was an error mounting file: {0}.", isoFilePath));
                WriteLogMessage(string.Format("ERROR: {0}.", mountResult.ErrorMessage));

                return(false);
            }

            return(true);
        }
        public async Task MountAsyncWithNonExistingIsoShouldReturnError()
        {
            // Arrange
            var unitLetter       = @"F:\";
            var vcdMountPath     = @"C:\tmp";
            var mockDriveInfo    = new Mock <IDriveInfo>();
            var driveInfo        = mockDriveInfo.Object;
            var mockFileProvider = new Mock <IFileProvider>();

            mockFileProvider.Setup(m => m.Exists(It.IsAny <string>())).Returns(false);

            VirtualCloneDriveWrapper wrapper = new VirtualCloneDriveWrapper(unitLetter, vcdMountPath, 3, 1000, driveInfo, mockFileProvider.Object, null);
            DeviceEventArgs          deviceEventArgs;

            // Act
            deviceEventArgs = await wrapper.MountAsync(string.Empty);

            // Assert
            Assert.IsTrue(deviceEventArgs.HasError);
            Assert.IsTrue(deviceEventArgs.ErrorMessage.Contains("doesn't exists or don't have access."));
        }
        public async Task MountAsyncWithDriveNotReadyShouldReturnError()
        {
            // Arrange
            var unitLetter          = @"F:\";
            var vcdMountPath        = @"C:\tmp";
            var mockDriveInfo       = new Mock <IDriveInfo>();
            var mockFileProvider    = new Mock <IFileProvider>();
            var mockProcessProvider = new Mock <IProcessProvider>();

            mockDriveInfo.Setup(m => m.IsReady).Returns(false);
            mockFileProvider.Setup(m => m.Exists(It.IsAny <string>())).Returns(true);
            mockProcessProvider.Setup(m => m.Start(It.IsAny <string>(), It.IsAny <string>())).Returns(new System.Diagnostics.Process());

            VirtualCloneDriveWrapper wrapper = new VirtualCloneDriveWrapper(unitLetter, vcdMountPath, 3, 1000, mockDriveInfo.Object, mockFileProvider.Object, mockProcessProvider.Object);
            DeviceEventArgs          deviceEventArgs;

            // Act
            deviceEventArgs = await wrapper.MountAsync(@"C:\my-fake-iso.iso");

            // Assert
            Assert.IsTrue(deviceEventArgs.HasError);
            Assert.IsTrue(deviceEventArgs.ErrorMessage.Contains("There was an error trying to Mount file on device"));
        }
        public async Task MountAsyncShouldCallProcessProviderStart()
        {
            // Arrange
            var unitLetter          = @"F:\";
            var vcdMountPath        = @"C:\tmp";
            var mockDriveInfo       = new Mock <IDriveInfo>();
            var mockFileProvider    = new Mock <IFileProvider>();
            var mockProcessProvider = new Mock <IProcessProvider>();

            mockDriveInfo.Setup(m => m.IsReady).Returns(true);
            mockFileProvider.Setup(m => m.Exists(It.IsAny <string>())).Returns(true);
            mockProcessProvider.Setup(m => m.Start(It.IsAny <string>(), It.IsAny <string>())).Returns(new System.Diagnostics.Process());

            VirtualCloneDriveWrapper wrapper = new VirtualCloneDriveWrapper(unitLetter, vcdMountPath, 3, 1000, mockDriveInfo.Object, mockFileProvider.Object, mockProcessProvider.Object);
            DeviceEventArgs          deviceEventArgs;

            // Act
            deviceEventArgs = await wrapper.MountAsync(@"C:\my-fake-iso.iso");

            // Assert
            Assert.IsFalse(deviceEventArgs.HasError);
            Assert.AreEqual(string.Empty, deviceEventArgs.ErrorMessage);
            mockProcessProvider.Verify(m => m.Start(It.IsAny <string>(), It.IsAny <string>()), Times.AtLeastOnce);
        }