public void Delete_package_deletes_file_and_directory()
        {
            var fakeFileShareMapper      = MockRepository.GenerateMock <IFileShareMapper>();
            var fakeFileSystemOperations = MockRepository.GenerateMock <IFileSystemOperations>();

            var packagePath = "P:\\ProGetPackages\\packageId";

            fakeFileSystemOperations.Expect(x => x.DirectoryExists(packagePath)).Return(true);
            var versionPath = "P:\\ProGetPackages\\packageId\\packageId.1.2.3.nupkg";

            fakeFileSystemOperations.Expect(x => x.FileExists(versionPath)).Return(true);
            fakeFileSystemOperations.Expect(x => x.EnumerateFileSystemEntries(packagePath))
            .Return(Enumerable.Empty <string>());
            var sut = new AzureFileShareNuGetPackageStore(fakeFileShareMapper, fakeFileSystemOperations)
            {
                RootPath      = "P:\\ProGetPackages",
                FileShareName = "filesharename",
                UserName      = "******",
                AccessKey     = "accesskey",
                DriveLetter   = "P:"
            };

            sut.DeletePackage("packageId", SemanticVersion.Parse("1.2.3"));
            fakeFileSystemOperations.AssertWasCalled(x => x.DeleteFile(versionPath));
            fakeFileSystemOperations.AssertWasCalled(x => x.DeleteDirectory(packagePath));
        }
        public void Create_package_returns_file_stream()
        {
            var fakeFileShareMapper      = MockRepository.GenerateMock <IFileShareMapper>();
            var fakeFileSystemOperations = MockRepository.GenerateMock <IFileSystemOperations>();

            fakeFileSystemOperations.Expect(x => x.DirectoryExists("P:\\ProGetPackages\\packageId")).Return(true);
            var versionPath = "P:\\ProGetPackages\\packageId\\packageId.1.2.3.nupkg";

            fakeFileSystemOperations.Expect(x => x.FileExists(versionPath)).Return(true);
            using (var returnedStream = new MemoryStream())
            {
                fakeFileSystemOperations.Expect(
                    x => x.GetFileStream(versionPath, FileMode.Create, FileAccess.Write, FileShare.Delete))
                .Return(returnedStream);
                var sut = new AzureFileShareNuGetPackageStore(fakeFileShareMapper, fakeFileSystemOperations)
                {
                    RootPath      = "P:\\ProGetPackages",
                    FileShareName = "filesharename",
                    UserName      = "******",
                    AccessKey     = "accesskey",
                    DriveLetter   = "P:"
                };
                var result = sut.CreatePackage("packageId", SemanticVersion.Parse("1.2.3"));
                Assert.That(result, Is.EqualTo(returnedStream));
            }
        }
        public void Clean_throws_argument_null_exception_if_package_index_is_null()
        {
            var mockFileSystemOperations = MockRepository.GenerateMock <IFileSystemOperations>();
            var mockFileShareMapper      = MockRepository.GenerateMock <IFileShareMapper>();
            var sut = new AzureFileShareNuGetPackageStore(mockFileShareMapper, mockFileSystemOperations);

            Assert.Throws <ArgumentNullException>(() => sut.Clean(null));
        }
        public void Open_package_throws_argument_null_exception_if_package_id_is_empty()
        {
            var mockFileSystemOperations = MockRepository.GenerateMock <IFileSystemOperations>();
            var mockFileShareMapper      = MockRepository.GenerateMock <IFileShareMapper>();
            var sut = new AzureFileShareNuGetPackageStore(mockFileShareMapper, mockFileSystemOperations);

            Assert.Throws <ArgumentNullException>(() => sut.OpenPackage("", SemanticVersion.Parse("1.2.3")));
        }
        public void Validates_root_path(string rootPath, Type expectedException)
        {
            var mockFileSystemOperations = MockRepository.GenerateMock <IFileSystemOperations>();
            var mockFileShareMapper      = MockRepository.GenerateMock <IFileShareMapper>();
            var sut = new AzureFileShareNuGetPackageStore(mockFileShareMapper, mockFileSystemOperations)
            {
                RootPath      = rootPath,
                FileShareName = "FileShareName",
                UserName      = "******",
                AccessKey     = "AccessKey",
                DriveLetter   = "P:"
            };

            Assert.Throws(expectedException, () => sut.CreatePackage("packageId", SemanticVersion.Parse("1.2.3")));
        }
        public void Open_package_returns_null_when_directory_does_not_exist()
        {
            var fakeFileShareMapper      = MockRepository.GenerateMock <IFileShareMapper>();
            var fakeFileSystemOperations = MockRepository.GenerateMock <IFileSystemOperations>();

            fakeFileSystemOperations.Expect(x => x.DirectoryExists("P:\\ProGetPackages\\packageId")).Return(false);
            var sut = new AzureFileShareNuGetPackageStore(fakeFileShareMapper, fakeFileSystemOperations)
            {
                RootPath      = "P:\\ProGetPackages",
                FileShareName = "filesharename",
                UserName      = "******",
                AccessKey     = "accesskey",
                DriveLetter   = "P:"
            };
            var result = sut.OpenPackage("packageId", SemanticVersion.Parse("1.2.3"));

            Assert.That(result, Is.Null);
        }
        public void Delete_package_calls_file_share_mapper()
        {
            var fakeFileShareMapper      = MockRepository.GenerateMock <IFileShareMapper>();
            var mockFileSystemOperations = MockRepository.GenerateMock <IFileSystemOperations>();
            var sut = new AzureFileShareNuGetPackageStore(fakeFileShareMapper, mockFileSystemOperations)
            {
                RootPath      = "P:\\ProGetPackages",
                FileShareName = "filesharename",
                UserName      = "******",
                AccessKey     = "accesskey",
                DriveLetter   = "P:"
            };

            sut.DeletePackage("packageId", SemanticVersion.Parse("1.2.3"));
            fakeFileShareMapper.AssertWasCalled(x => x.Mount(
                                                    Arg <string> .Is.Equal("P:"),
                                                    Arg <string> .Is.Equal(@"\\username.file.core.windows.net\filesharename"),
                                                    Arg <string> .Is.Equal("username"),
                                                    Arg <string> .Is.Equal("accesskey"),
                                                    Arg <ILog> .Is.NotNull));
        }