Ejemplo n.º 1
0
        public void FindPackageById_ReturnsSpecificVersionIfHashFileExists()
        {
            // Arrange
            var fileSystem = new PhysicalFileSystem(tmpDir.Path);

            fileSystem.AddFile(Path.Combine("foo", "1.0.0", "foo.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>");

            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.1.0.0-beta1-345.nupkg.sha512"), "hash");
            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.1.0.0-beta1-345.nupkg"), "content");

            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>test-author</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.1.0.0-beta1.nupkg.sha512"), "cotnent");
            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.1.0.0-beta1.nupkg"), "cotnent");

            var repository = new ExpandedPackageRepository(fileSystem);

            // Act
            var package = repository.FindPackage("Bar", NuGetVersion.Parse("1.0.0.0-beta1"));

            // Assert
            Assert.NotNull(package);
            Assert.Equal(SemanticVersion.Parse("1.0.0-beta1"), package.Identity.Version);
            var author = package.Nuspec.GetAuthors();

            Assert.Equal("test-author", author);
        }
Ejemplo n.º 2
0
        public void GetPackages_SkipsPackagesWithoutHashFile()
        {
            // Arrange
            var barPackage = new PackageBuilder
            {
                Id          = "Foo",
                Version     = new SemanticVersion("1.0.0-beta1-345"),
                Description = "Some description",
            };

            barPackage.Authors.Add("test author");
            barPackage.Files.Add(
                PackageUtility.CreateMockedPackageFile(@"lib\net45", "Foo.dll", "lib contents").Object);

            var fileSystem = new MockFileSystem();

            fileSystem.AddFile(Path.Combine(Path.Combine("Foo", "1.0.0", "Foo.1.0.0.nupkg"), ""));
            var barRoot = Path.Combine("Bar", "1.0.0-beta1-345");

            fileSystem.AddFile(Path.Combine(barRoot, "Bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine(barRoot, "Bar.1.0.0-beta1-345.nupkg.sha512"));
            fileSystem.AddFile(Path.Combine(barRoot, "Bar.1.0.0-beta1-345.nupkg"), GetPackageStream(barPackage));

            var repository = new ExpandedPackageRepository(fileSystem);

            // Act
            var packages = repository.GetPackages().ToList();

            // Assert
            var package = Assert.Single(packages);

            Assert.Equal("Bar", package.Id);
            Assert.Equal(new SemanticVersion("1.0.0-beta1-345"), package.Version);
        }
Ejemplo n.º 3
0
        public void FindPackageById_ReturnsSpecificVersionIfHashFileExists()
        {
            // Arrange
            var fileSystem = new MockFileSystem();

            fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>");

            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-345", "Bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-345", "Bar.1.0.0-beta1-345.nupkg.sha512"));

            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>test-author</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.1.0.0-beta1.nupkg.sha512"));

            var repository = new ExpandedPackageRepository(fileSystem);

            // Act
            var package = repository.FindPackage("Bar", new SemanticVersion("1.0.0.0-beta1"));

            // Assert
            Assert.NotNull(package);
            Assert.Equal(new SemanticVersion("1.0.0-beta1"), package.Version);
            var author = Assert.Single(package.Authors);

            Assert.Equal("test-author", author);
        }
        internal ServerPackageRepository(
            IFileSystem fileSystem,
            bool runBackgroundTasks,
            ExpandedPackageRepository innerRepository,
            Logging.ILogger logger = null,
            Func <string, bool, bool> getSetting = null)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException("fileSystem");
            }

            if (innerRepository == null)
            {
                throw new ArgumentNullException("innerRepository");
            }

            _fileSystem                = fileSystem;
            _runBackgroundTasks        = runBackgroundTasks;
            _expandedPackageRepository = innerRepository;
            _logger = logger ?? new TraceLogger();

            _serverPackageStore = new ServerPackageStore(_fileSystem, Environment.MachineName.ToLowerInvariant() + ".cache.bin");

            _getSetting = getSetting ?? GetBooleanAppSetting;
        }
Ejemplo n.º 5
0
        public void FindPackagesById_ReturnsAllVersionsOfAPackage()
        {
            // Arrange
            var fileSystem = new MockFileSystem();

            fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>");

            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-345", "Bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-345", "Bar.1.0.0-beta1-345.nupkg.sha512"), "345sha");

            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-402", "Bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-402</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1-402", "Bar.1.0.0-beta1-402.nupkg.sha512"), "402sha");

            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.1.0.0-beta1.nupkg.sha512"), "beta1sha");

            var repository = new ExpandedPackageRepository(fileSystem);

            // Act
            var packages = repository.FindPackagesById("Bar").OrderBy(p => p.Version).ToList();

            // Assert
            Assert.Equal(3, packages.Count);
            Assert.Equal(new SemanticVersion("1.0.0-beta1"), packages[0].Version);
            Assert.Equal(new SemanticVersion("1.0.0-beta1-345"), packages[1].Version);
            Assert.Equal(new SemanticVersion("1.0.0-beta1-402"), packages[2].Version);
        }
        public async Task Remove_SupportsEnabledUnlisting()
        {
            // Arrange
            using (var directory = new TemporaryDirectory())
            {
                var fileSystem = new PhysicalFileSystem(directory);
                var repository = new ExpandedPackageRepository(fileSystem);
                var logger     = new Infrastructure.NullLogger();

                repository.AddPackage(CreatePackage(PackageId, PackageVersion));

                var target = new ServerPackageStore(fileSystem, repository, logger);

                // Act
                target.Remove(PackageId, PackageVersion, enableDelisting: true);

                // Assert
                var package = (await target.GetAllAsync(enableDelisting: true, token: Token)).SingleOrDefault();
                Assert.NotNull(package);
                Assert.Equal(PackageId, package.Id);
                Assert.Equal(PackageVersion, package.Version);
                Assert.False(package.Listed);

                var fileInfo = new FileInfo(package.FullPath);
                Assert.True(fileInfo.Exists);
                Assert.Equal(FileAttributes.Hidden, fileInfo.Attributes & FileAttributes.Hidden);
            }
        }
Ejemplo n.º 7
0
        internal ServerPackageRepository(
            IFileSystem fileSystem,
            bool runBackgroundTasks,
            ExpandedPackageRepository innerRepository,
            ISettingsProvider settingsProvider = null,
            Logging.ILogger logger             = null)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException(nameof(fileSystem));
            }

            if (innerRepository == null)
            {
                throw new ArgumentNullException(nameof(innerRepository));
            }

            _fileSystem         = fileSystem;
            _runBackgroundTasks = runBackgroundTasks;
            _settingsProvider   = settingsProvider ?? new DefaultSettingsProvider();
            _logger             = logger ?? new TraceLogger();
            _serverPackageCache = InitializeServerPackageStore();
            _serverPackageStore = new ServerPackageStore(
                _fileSystem,
                innerRepository,
                _logger);
        }
Ejemplo n.º 8
0
        public void FindPackagesById_IgnoresPackagesWithoutHashFiles()
        {
            // Arrange
            var fileSystem = new PhysicalFileSystem(tmpDir.Path);

            fileSystem.AddFile(Path.Combine("foo", "1.0.0", "foo.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>");

            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.1.0.0-beta1-345.nupkg.sha512"), "345sha");
            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.1.0.0-beta1-345.nupkg"), "content");

            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-402", "bar.nuspec"), "content");
            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-402", "bar.nupkg"), "content");
            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-402", "bar.1.0.0-beta1-402.nupkg"), "nupkg contents");

            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.1.0.0-beta1.nupkg.sha512"), "beta1 hash");
            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.1.0.0-beta1.nupkg"), "content");

            var repository = new ExpandedPackageRepository(fileSystem);

            // Act
            var packages = repository.FindPackagesById("Bar").OrderBy(p => p.Identity.Version).ToList();

            // Assert
            Assert.Equal(2, packages.Count);
            Assert.Equal(SemanticVersion.Parse("1.0.0-beta1"), packages[0].Identity.Version);
            Assert.Equal(SemanticVersion.Parse("1.0.0-beta1-345"), packages[1].Identity.Version);
        }
Ejemplo n.º 9
0
 public ServerPackageStore(
     IFileSystem fileSystem,
     ExpandedPackageRepository repository,
     Logging.ILogger logger)
 {
     _fileSystem = fileSystem;
     _repository = repository;
     _logger     = logger;
 }
Ejemplo n.º 10
0
        public void AddPackage_AddsExpandedPackageToThePackageDirectory()
        {
            // Arrange
            var fileSystem = new PhysicalFileSystem(tmpDir.Path);
            var repository = new ExpandedPackageRepository(fileSystem);
            var package    = CreateMyPackage();

            // Act
            var addedPackage = repository.AddPackage(package);

            AssertMyPackage(fileSystem, package, addedPackage);
        }
Ejemplo n.º 11
0
        public void AddPackageFromStream_AddsExpandedPackageToThePackageDirectory(bool allowOverwrite)
        {
            // Arrange
            var fileSystem = new PhysicalFileSystem(tmpDir.Path);
            var repository = new ExpandedPackageRepository(fileSystem);
            var package    = CreateMyPackage();

            using (var packageStream = File.OpenRead(package.Path)) {
                // Act
                var addedPackage = repository.AddPackage(packageStream, allowOverwrite);
                AssertMyPackage(fileSystem, package, addedPackage);
            }
        }
Ejemplo n.º 12
0
        public void AddPackageFromStream_WhenDuplicateAndOverwriteEnabled()
        {
            // Arrange
            var fileSystem = new PhysicalFileSystem(tmpDir.Path);
            var repository = new ExpandedPackageRepository(fileSystem);
            var package    = CreateMyPackage();

            using (var packageStream = File.OpenRead(package.Path)) {
                var addedPackage = repository.AddPackage(packageStream, true);
                AssertMyPackage(fileSystem, package, addedPackage);
            }
            using (var packageStream = File.OpenRead(package.Path)) {
                var addedPackage = repository.AddPackage(packageStream, true);
                AssertMyPackage(fileSystem, package, addedPackage);
            }
        }
Ejemplo n.º 13
0
        public void AddPackageFromStream_WhenDuplicateAndOverwriteDisabled()
        {
            // Arrange
            var fileSystem = new PhysicalFileSystem(tmpDir.Path);
            var repository = new ExpandedPackageRepository(fileSystem);
            var package    = CreateMyPackage();

            using (var packageStream = File.OpenRead(package.Path)) {
                var addedPackage = repository.AddPackage(packageStream, false);
                AssertMyPackage(fileSystem, package, addedPackage);
            }
            // add again
            using (var packageStream = File.OpenRead(package.Path)) {
                Assert.Throws <PackageDuplicateException>(() =>
                                                          repository.AddPackage(packageStream, false));
            }
        }
Ejemplo n.º 14
0
        public void AddPackage_AddsExpandedPackageToThePackageDirectory()
        {
            // Arrange
            var fileSystem = new MockFileSystem();
            var repository = new ExpandedPackageRepository(fileSystem);
            var package    = GetPackage();

            // Act
            repository.AddPackage(package);

            // Assert
            var reader = Manifest.ReadFrom(fileSystem.OpenFile(@"MyPackage\1.0.0-beta2\MyPackage.nuspec"), validateSchema: true);

            Assert.Equal("MyPackage", reader.Metadata.Id);
            Assert.Equal("1.0.0-beta2", reader.Metadata.Version);
            Assert.True(package.GetStream().ContentEquals(fileSystem.OpenFile(@"MyPackage\1.0.0-beta2\MyPackage.1.0.0-beta2.nupkg")));
            Assert.Equal(package.GetHash(new CryptoHashProvider()), fileSystem.ReadAllText(@"MyPackage\1.0.0-beta2\MyPackage.1.0.0-beta2.nupkg.sha512"));
        }
Ejemplo n.º 15
0
        public void RemovePackage_Succeeds_IfPackageDoesNotExist()
        {
            // Arrange
            var fileSystem = new MockFileSystem();

            fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.nuspec"), "Nuspec contents");
            fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "tools", "net45", "Foo.targets"), "Foo.targets contents");
            fileSystem.AddFile(Path.Combine("Foo", "1.0.0-beta4", "Foo.nupkg"), "1.0.0-beta4 Nuspec contents");

            var repository = new ExpandedPackageRepository(fileSystem);
            var package    = PackageUtility.CreatePackage("Foo", "1.0.0-beta4");

            // Act
            repository.RemovePackage(package);

            // Assert
            Assert.Empty(fileSystem.Deleted);
        }
Ejemplo n.º 16
0
        public ServerPackageRepository(
            ExpandedPackageRepository innerRepository,
            IServerPackageRepositoryConfig serverConfig)
        {
            if (innerRepository == null)
            {
                throw new ArgumentNullException("innerRepository");
            }
            _config = serverConfig;

            new DirectoryInfo(serverConfig.RootPath).Create();
            _fileSystem                = new PhysicalFileSystem(serverConfig.RootPath);
            _runBackgroundTasks        = serverConfig.RunBackgroundTasks;
            _expandedPackageRepository = innerRepository;

            _serverPackageStore = new ServerPackageStore(_fileSystem, Environment.MachineName.ToLowerInvariant() + ".cache.bin");
            _logger.InfoFormat("Initialized server package repository at {0}", serverConfig.RootPath);
        }
Ejemplo n.º 17
0
        public ServerPackageRepository CreateServerPackageRepository(
            string path,
            ServerPackageRepositoryConfig config,
            Action <ExpandedPackageRepository> setupRepository = null)
        {
            config.RootPath = path;
            var expandedPackageRepository = new ExpandedPackageRepository(config);

            setupRepository?.Invoke(expandedPackageRepository);

            var serverRepository = new ServerPackageRepository(
                innerRepository: expandedPackageRepository,
                serverConfig: config);

            serverRepository.GetPackages(); // caches the files

            return(serverRepository);
        }
Ejemplo n.º 18
0
        public void FindPackageById_IgnoresVersionsWithoutHashFiles()
        {
            // Arrange
            var fileSystem = new PhysicalFileSystem(tmpDir.Path);

            fileSystem.AddFile(Path.Combine("foo", "1.0.0", "foo.nupkg"), @"Foo.nupkg contents");

            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1-345", "bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1-345</version><authors>None</authors><description>None</description></metadata></package>");

            fileSystem.AddFile(Path.Combine("bar", "1.0.0-beta1", "bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>test-author</authors><description>None</description></metadata></package>");
            var repository = new ExpandedPackageRepository(fileSystem);

            // Act
            var package = repository.FindPackage("Foo", NuGetVersion.Parse("1.0.0"));

            // Assert
            Assert.Null(package);
        }
        public ServerPackageRepository(string path, IHashProvider hashProvider, Logging.ILogger logger)
        {
            if (string.IsNullOrEmpty(path))
            {
                throw new ArgumentNullException("path");
            }

            if (hashProvider == null)
            {
                throw new ArgumentNullException("hashProvider");
            }

            _fileSystem = new PhysicalFileSystem(path);
            _runBackgroundTasks = true;
            _logger = logger ?? new TraceLogger();
            _expandedPackageRepository = new ExpandedPackageRepository(_fileSystem, hashProvider);

            _serverPackageStore = new ServerPackageStore(_fileSystem, Environment.MachineName.ToLowerInvariant() + ".cache.bin");

            _getSetting = GetBooleanAppSetting;
        }
        public async Task Remove_SupportsDisabledUnlisting()
        {
            // Arrange
            using (var directory = new TemporaryDirectory())
            {
                var fileSystem = new PhysicalFileSystem(directory);
                var repository = new ExpandedPackageRepository(fileSystem);
                var logger     = new Infrastructure.NullLogger();

                repository.AddPackage(CreatePackage(PackageId, PackageVersion));

                var target = new ServerPackageStore(fileSystem, repository, logger);

                // Act
                target.Remove(PackageId, PackageVersion, enableDelisting: false);

                // Assert
                Assert.Empty(await target.GetAllAsync(enableDelisting: false, token: Token));
                Assert.Empty(repository.GetPackages());
            }
        }
        public ServerPackageRepository(string path, IHashProvider hashProvider, Logging.ILogger logger)
        {
            if (string.IsNullOrEmpty(path))
            {
                throw new ArgumentNullException("path");
            }

            if (hashProvider == null)
            {
                throw new ArgumentNullException("hashProvider");
            }

            _fileSystem                = new PhysicalFileSystem(path);
            _runBackgroundTasks        = true;
            _logger                    = logger ?? new TraceLogger();
            _expandedPackageRepository = new ExpandedPackageRepository(_fileSystem, hashProvider);

            _serverPackageStore = new ServerPackageStore(_fileSystem, Environment.MachineName.ToLowerInvariant() + ".cache.bin");

            _getSetting = GetBooleanAppSetting;
        }
        internal ServerPackageRepository(IFileSystem fileSystem, bool runBackgroundTasks, ExpandedPackageRepository innerRepository, Logging.ILogger logger = null, Func<string, bool, bool> getSetting = null)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException("fileSystem");
            }

            if (innerRepository == null)
            {
                throw new ArgumentNullException("innerRepository");
            }

            _fileSystem = fileSystem;
            _runBackgroundTasks = runBackgroundTasks;
            _expandedPackageRepository = innerRepository;
            _logger = logger ?? new TraceLogger();

            _serverPackageStore = new ServerPackageStore(_fileSystem, Environment.MachineName.ToLowerInvariant() + ".cache.bin");

            _getSetting = getSetting ?? GetBooleanAppSetting;
        }
Ejemplo n.º 23
0
        public static async Task <ServerPackageRepository> CreateServerPackageRepositoryAsync(
            string path,
            Action <ExpandedPackageRepository> setupRepository = null,
            Func <string, object, object> getSetting           = null)
        {
            var fileSystem = new PhysicalFileSystem(path);
            var expandedPackageRepository = new ExpandedPackageRepository(fileSystem);

            setupRepository?.Invoke(expandedPackageRepository);

            var serverRepository = new ServerPackageRepository(
                fileSystem,
                runBackgroundTasks: false,
                innerRepository: expandedPackageRepository,
                logger: new Infrastructure.NullLogger(),
                settingsProvider: getSetting != null ? new FuncSettingsProvider(getSetting) : null);

            await serverRepository.GetPackagesAsync(ClientCompatibility.Max, Token); // caches the files

            return(serverRepository);
        }
Ejemplo n.º 24
0
        public ServerPackageRepository CreateServerPackageRepository(string path, Action <ExpandedPackageRepository> setupRepository = null, Func <string, bool, bool> getSetting = null)
        {
            var fileSystem = new PhysicalFileSystem(path);
            var expandedPackageRepository = new ExpandedPackageRepository(fileSystem);

            if (setupRepository != null)
            {
                setupRepository(expandedPackageRepository);
            }

            var serverRepository = new ServerPackageRepository(
                fileSystem,
                runBackgroundTasks: false,
                innerRepository: expandedPackageRepository,
                logger: new Logging.NullLogger(),
                getSetting: getSetting);

            serverRepository.GetPackages(); // caches the files

            return(serverRepository);
        }
        public ServerPackageRepository CreateServerPackageRepository(string path, Action<ExpandedPackageRepository> setupRepository = null, Func<string, bool, bool> getSetting = null)
        {
            var fileSystem = new PhysicalFileSystem(path);
            var expandedPackageRepository = new ExpandedPackageRepository(fileSystem);

            if (setupRepository != null)
            {
                setupRepository(expandedPackageRepository);
            }

            var serverRepository = new ServerPackageRepository(
                fileSystem,
                runBackgroundTasks: false,
                innerRepository: expandedPackageRepository, 
                logger: new Logging.NullLogger(),
                getSetting: getSetting);

            serverRepository.GetPackages(); // caches the files

            return serverRepository;
        }
Ejemplo n.º 26
0
        public void RemovePackage_DeletesPackageDirectory_IfItExists()
        {
            // Arrange
            var fileSystem = new MockFileSystem();

            fileSystem.AddFile(Path.Combine("Foo", "1.0.0-beta2", "Foo.nuspec"), "Nuspec contents");
            fileSystem.AddFile(Path.Combine("Foo", "1.0.0-beta2", "Foo.1.0.0-beta2.nupkg.sha512"), "hash contents");
            fileSystem.AddFile(Path.Combine("Foo", "1.0.0-beta2", "tools", "net45", "Foo.targets"), "Foo.targets contents");
            fileSystem.AddFile(Path.Combine("Foo", "1.0.0-beta4", "Foo.nuspec"), "1.0.0-beta4 Nuspec contents");

            var repository = new ExpandedPackageRepository(fileSystem);
            var package    = PackageUtility.CreatePackage("Foo", "1.0-beta2");

            // Act
            repository.RemovePackage(package);

            // Assert
            var deletedItems = Assert.Single(fileSystem.Deleted);

            Assert.Contains(Path.Combine("Foo", "1.0.0-beta2"), deletedItems);
            Assert.True(fileSystem.FileExists(Path.Combine("Foo", "1.0.0-beta4", "Foo.nuspec")));
        }
        public async Task Remove_NoOpsWhenPackageDoesNotExist()
        {
            // Arrange
            using (var directory = new TemporaryDirectory())
            {
                var fileSystem = new PhysicalFileSystem(directory);
                var repository = new ExpandedPackageRepository(fileSystem);
                var logger     = new Infrastructure.NullLogger();

                repository.AddPackage(CreatePackage(PackageId, PackageVersion));

                var target = new ServerPackageStore(fileSystem, repository, logger);

                // Act
                target.Remove("Foo", PackageVersion, enableDelisting: false);

                // Assert
                var package = (await target.GetAllAsync(enableDelisting: false, token: Token)).FirstOrDefault();
                Assert.NotNull(package);
                Assert.Equal(PackageId, package.Id);
                Assert.Equal(PackageVersion, package.Version);
                Assert.True(package.Listed);
            }
        }
Ejemplo n.º 28
0
        public void GetPackages_ReturnsAllPackagesInsideDirectory()
        {
            // Arrange
            var fooPackage = new PackageBuilder
            {
                Id          = "Foo",
                Version     = NuGetVersion.Parse("1.0.0"),
                Description = "Some description",
            };

            fooPackage.Authors.Add("test author");
            fooPackage.Files.Add(
                CreateMockedPackageFile(@"lib\net40", "Foo.dll", "lib contents").Object);

            var barPackage = new PackageBuilder
            {
                Id          = "Bar",
                Version     = NuGetVersion.Parse("1.0.0-beta1"),
                Description = "Some description",
            };

            barPackage.Authors.Add("test author");
            barPackage.Files.Add(
                CreateMockedPackageFile("", "README.md", "lib contents").Object);
            barPackage.Files.Add(
                CreateMockedPackageFile(@"content", "qwerty.js", "bar contents").Object);

            barPackage.Files.Add(
                CreateMockedPackageFile(@"lib\net451", "test.dll", "test-dll").Object);

            var fileSystem = new PhysicalFileSystem(tmpDir.Path);
            var fooRoot    = Path.Combine(fileSystem.Root, "foo", "1.0.0");

            fileSystem.AddFile(Path.Combine(fooRoot, "foo.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine(fooRoot, "foo.1.0.0.nupkg.sha512"), "Foo-sha");
            fileSystem.AddFile(Path.Combine(fooRoot, "foo.1.0.0.nupkg"), GetPackageStream(fooPackage));

            var barRoot = Path.Combine(fileSystem.Root, "bar", "1.0.0-beta1");

            fileSystem.AddFile(Path.Combine(barRoot, "bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine(barRoot, "bar.1.0.0-beta1.nupkg.sha512"), "bar-sha");
            fileSystem.AddFile(Path.Combine(barRoot, "bar.1.0.0-beta1.nupkg"), GetPackageStream(barPackage));

            var repository = new ExpandedPackageRepository(fileSystem);

            // Act
            var packages = repository.GetPackages().OrderBy(p => p.Identity.Id).ToList();

            // Assert
            Assert.Equal(2, packages.Count);

            var package = packages[1];

            Assert.Equal("foo", package.Identity.Id);
            Assert.Equal(SemanticVersion.Parse("1.0.0"), package.Identity.Version);
            using (var reader = package.GetReader()) {
                Assert.Equal("Foo", reader.GetIdentity().Id);
                Assert.Equal(package.Identity, reader.GetIdentity());
            }
        }
Ejemplo n.º 29
0
        public void GetPackages_ReturnsAllPackagesInsideDirectory()
        {
            // Arrange
            var fooPackage = new PackageBuilder
            {
                Id          = "Foo",
                Version     = new SemanticVersion("1.0.0"),
                Description = "Some description",
            };

            fooPackage.Authors.Add("test author");
            fooPackage.Files.Add(
                PackageUtility.CreateMockedPackageFile(@"lib\net40", "Foo.dll", "lib contents").Object);

            var barPackage = new PackageBuilder
            {
                Id          = "Bar",
                Version     = new SemanticVersion("1.0.0-beta1"),
                Description = "Some description",
            };

            barPackage.Authors.Add("test author");
            barPackage.Files.Add(
                PackageUtility.CreateMockedPackageFile("", "README.md", "lib contents").Object);
            barPackage.Files.Add(
                PackageUtility.CreateMockedPackageFile(@"content", "qwerty.js", "bar contents").Object);

            barPackage.Files.Add(
                PackageUtility.CreateMockedPackageFile(@"lib\net451", "test.dll", "test-dll").Object);

            var fileSystem = new MockFileSystem();
            var fooRoot    = Path.Combine("Foo", "1.0.0");

            fileSystem.AddFile(Path.Combine(fooRoot, "Foo.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Foo</id><version>1.0.0</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.1.0.0.nupkg.sha512"), "Foo-sha");
            fileSystem.AddFile(Path.Combine("Foo", "1.0.0", "Foo.1.0.0.nupkg"), GetPackageStream(fooPackage));

            var barRoot = Path.Combine("Bar", "1.0.0-beta1");

            fileSystem.AddFile(Path.Combine(barRoot, "Bar.nuspec"),
                               @"<?xml version=""1.0""?><package><metadata><id>Bar</id><version>1.0.0.0-beta1</version><authors>None</authors><description>None</description></metadata></package>");
            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.1.0.0-beta1.nupkg.sha512"), "bar-sha");
            fileSystem.AddFile(Path.Combine("Bar", "1.0.0-beta1", "Bar.1.0.0-beta1.nupkg"), GetPackageStream(barPackage));

            var repository = new ExpandedPackageRepository(fileSystem);

            // Act
            var packages = repository.GetPackages().ToList();

            // Assert
            Assert.Equal(2, packages.Count);

            var package = packages[0];

            Assert.Equal("Foo", package.Id);
            Assert.Equal(new SemanticVersion("1.0.0"), package.Version);
            var packageFile = Assert.Single(package.GetFiles());

            Assert.Equal(@"lib\net40\Foo.dll", packageFile.Path);
            Assert.Equal(".NETFramework,Version=v4.0", packageFile.TargetFramework.FullName);

            package = packages[1];
            Assert.Equal("Bar", package.Id);
            Assert.Equal(new SemanticVersion("1.0.0-beta1"), package.Version);

            var files = package.GetFiles().OrderBy(p => p.Path.Length).ToList();

            Assert.Equal(3, files.Count);
            Assert.Equal(@"README.md", files[0].Path);

            packageFile = files[1];
            Assert.Equal(@"content\qwerty.js", packageFile.Path);
            Assert.Null(packageFile.TargetFramework);

            packageFile = files[2];
            Assert.Equal(@"lib\net451\test.dll", packageFile.Path);
            Assert.Equal(".NETFramework,Version=v4.5.1", packageFile.TargetFramework.FullName);
        }