Пример #1
0
        public void GivenBothGetAndSetArePassedVerifyFailure()
        {
            using (var packagesFolder = new TestFolder())
                using (var target = new TestFolder())
                    using (var cache = new LocalCache())
                        using (var outputFolder = new TestFolder())
                        {
                            var log        = new TestLogger();
                            var fileSystem = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root));
                            var settings   = new LocalSettings();

                            var context = new SleetContext()
                            {
                                Token          = CancellationToken.None,
                                LocalSettings  = settings,
                                Log            = log,
                                Source         = fileSystem,
                                SourceSettings = new FeedSettings()
                            };

                            Func <Task> action = async() => await FeedSettingsCommand.RunAsync(
                                settings,
                                fileSystem,
                                unsetAll : true,
                                getAll : true,
                                getSettings : new string[] { },
                                unsetSettings : new string[] { },
                                setSettings : new string[] { },
                                log : log,
                                token : context.Token);

                            action.ShouldThrow <InvalidOperationException>("invalid combo");
                        }
        }
Пример #2
0
        public async Task GivenInitVerifyBasicOutputs()
        {
            using (var target = new TestFolder())
                using (var cache = new LocalCache())
                {
                    // Arrange
                    var log        = new TestLogger();
                    var fileSystem = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root));
                    var settings   = new LocalSettings();

                    var indexJsonOutput    = new FileInfo(Path.Combine(target.Root, "index.json"));
                    var settingsOutput     = new FileInfo(Path.Combine(target.Root, "sleet.settings.json"));
                    var autoCompleteOutput = new FileInfo(Path.Combine(target.Root, "autocomplete", "query"));
                    var catalogOutput      = new FileInfo(Path.Combine(target.Root, "catalog", "index.json"));
                    var searchOutput       = new FileInfo(Path.Combine(target.Root, "search", "query"));
                    var packageIndexOutput = new FileInfo(Path.Combine(target.Root, "sleet.packageindex.json"));
                    var symbolsIndexOutput = new FileInfo(Path.Combine(target.Root, "symbols", "packages", "index.json"));

                    // Act
                    var success = await InitCommand.RunAsync(settings, fileSystem, enableCatalog : true, enableSymbols : true, log : log, token : CancellationToken.None);

                    var rootFile = fileSystem.Get("index.json");
                    var rootJson = await rootFile.GetJson(log, CancellationToken.None);

                    success &= await FeedSettingsCommand.RunAsync(
                        settings,
                        fileSystem,
                        unsetAll : false,
                        getAll : true,
                        getSettings : new string[] { },
                        unsetSettings : new string[] { },
                        setSettings : new string[] { },
                        log : log,
                        token : CancellationToken.None);

                    // Assert
                    success.Should().BeTrue();
                    indexJsonOutput.Exists.Should().BeTrue();
                    settingsOutput.Exists.Should().BeTrue();
                    autoCompleteOutput.Exists.Should().BeTrue();
                    catalogOutput.Exists.Should().BeTrue();
                    searchOutput.Exists.Should().BeTrue();
                    packageIndexOutput.Exists.Should().BeTrue();
                    symbolsIndexOutput.Exists.Should().BeTrue();

                    log.GetMessages().Should().Contain("catalogpagesize : 1024");
                    log.GetMessages().Should().Contain("catalogenabled : true");
                    log.GetMessages().Should().Contain("symbolsfeedenabled : true");

                    rootJson.ToString().Should().Contain("catalog/index.json");
                    rootJson.ToString().Should().Contain("Catalog/3.0.0");
                    rootJson.ToString().Should().Contain("symbols/packages/index.json");
                }
        }
Пример #3
0
        public async Task VerifyUnSetUpdatesIndexJson()
        {
            using (var packagesFolder = new TestFolder())
                using (var target = new TestFolder())
                    using (var cache = new LocalCache())
                        using (var outputFolder = new TestFolder())
                        {
                            var log        = new TestLogger();
                            var fileSystem = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root));
                            var settings   = new LocalSettings();

                            var context = new SleetContext()
                            {
                                Token          = CancellationToken.None,
                                LocalSettings  = settings,
                                Log            = log,
                                Source         = fileSystem,
                                SourceSettings = new FeedSettings()
                            };

                            var success = await InitCommand.RunAsync(settings, fileSystem, log);

                            success &= await FeedSettingsCommand.RunAsync(
                                settings,
                                fileSystem,
                                unsetAll : false,
                                getAll : false,
                                getSettings : Array.Empty <string>(),
                                unsetSettings : Array.Empty <string>(),
                                setSettings : new string[] { "externalsearch:https://example.org/search/query" },
                                log : log,
                                token : context.Token);

                            success &= await FeedSettingsCommand.RunAsync(
                                settings,
                                fileSystem,
                                unsetAll : false,
                                getAll : false,
                                getSettings : Array.Empty <string>(),
                                unsetSettings : new string[] { "externalsearch" },
                                setSettings : Array.Empty <string>(),
                                log : log,
                                token : context.Token);

                            success.Should().BeTrue();

                            var indexJsonPath = Path.Combine(target.RootDirectory.FullName, "index.json");
                            var entry         = GetSearchEntry(indexJsonPath);
                            var value         = entry["@id"].ToObject <string>();

                            value.Should().NotBe("https://example.org/search/query");
                        }
        }
Пример #4
0
        public async Task GivenSettingsAddedVerifySingleGetReturnsJustOne()
        {
            using (var packagesFolder = new TestFolder())
                using (var target = new TestFolder())
                    using (var cache = new LocalCache())
                        using (var cache2 = new LocalCache())
                            using (var outputFolder = new TestFolder())
                            {
                                var log         = new TestLogger();
                                var fileSystem  = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root));
                                var fileSystem2 = new PhysicalFileSystem(cache2, UriUtility.CreateUri(target.Root));
                                var settings    = new LocalSettings();

                                var context = new SleetContext()
                                {
                                    Token          = CancellationToken.None,
                                    LocalSettings  = settings,
                                    Log            = log,
                                    Source         = fileSystem,
                                    SourceSettings = new FeedSettings()
                                };

                                var success = await InitCommand.RunAsync(settings, fileSystem, log);

                                success &= await FeedSettingsCommand.RunAsync(
                                    settings,
                                    fileSystem,
                                    unsetAll : false,
                                    getAll : false,
                                    getSettings : new string[] { },
                                    unsetSettings : new string[] { },
                                    setSettings : new string[] { "catalogenabled:false", "a:1" },
                                    log : log,
                                    token : context.Token);

                                success &= await FeedSettingsCommand.RunAsync(
                                    settings,
                                    fileSystem2,
                                    unsetAll : false,
                                    getAll : false,
                                    getSettings : new string[] { "a" },
                                    unsetSettings : new string[] { },
                                    setSettings : new string[] { },
                                    log : log,
                                    token : context.Token);

                                success.Should().BeTrue();
                                log.GetMessages().Should().NotContain("catalogenabled : false");
                                log.GetMessages().Should().Contain("a : 1");
                            }
        }
Пример #5
0
        public async Task GivenDuplicateSetsVerifyFailure()
        {
            using (var packagesFolder = new TestFolder())
                using (var target = new TestFolder())
                    using (var cache = new LocalCache())
                        using (var cache2 = new LocalCache())
                            using (var outputFolder = new TestFolder())
                            {
                                var log         = new TestLogger();
                                var fileSystem  = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root));
                                var fileSystem2 = new PhysicalFileSystem(cache2, UriUtility.CreateUri(target.Root));
                                var settings    = new LocalSettings();

                                var context = new SleetContext()
                                {
                                    Token          = CancellationToken.None,
                                    LocalSettings  = settings,
                                    Log            = log,
                                    Source         = fileSystem,
                                    SourceSettings = new FeedSettings()
                                };

                                var success = await InitCommand.RunAsync(settings, fileSystem, log);

                                Func <Task> action = async() => await FeedSettingsCommand.RunAsync(
                                    settings,
                                    fileSystem,
                                    unsetAll : true,
                                    getAll : true,
                                    getSettings : new string[] { },
                                    unsetSettings : new string[] { },
                                    setSettings : new string[] { "a:1", "a:2" },
                                    log : log,
                                    token : context.Token);

                                action.ShouldThrow <ArgumentException>("invalid combo");
                            }
        }
Пример #6
0
        public async Task GivenAnEmptyFeedVerifyGetSettingsSucceeds()
        {
            using (var packagesFolder = new TestFolder())
                using (var target = new TestFolder())
                    using (var cache = new LocalCache())
                        using (var outputFolder = new TestFolder())
                        {
                            var log        = new TestLogger();
                            var fileSystem = new PhysicalFileSystem(cache, UriUtility.CreateUri(target.Root));
                            var settings   = new LocalSettings();

                            var context = new SleetContext()
                            {
                                Token          = CancellationToken.None,
                                LocalSettings  = settings,
                                Log            = log,
                                Source         = fileSystem,
                                SourceSettings = new FeedSettings()
                            };

                            var success = await InitCommand.RunAsync(settings, fileSystem, log);

                            success &= await FeedSettingsCommand.RunAsync(
                                settings,
                                fileSystem,
                                unsetAll : false,
                                getAll : true,
                                getSettings : new string[] { },
                                unsetSettings : new string[] { },
                                setSettings : new string[] { },
                                log : log,
                                token : context.Token);

                            success.Should().BeTrue();
                        }
        }