Example #1
0
        public void TestExtractWithZipArchiveFallback()
        {
            var file = Helper.Fixtrue("archive/sample.zip");

            process.Setup("unzip", returnValue: () => 0)
            .Verifiable();

            process.Setup((o) => o.Execute(
                              It.IsRegex(@"^unzip\s-qq"),
                              out It.Ref <string[]> .IsAny,
                              out It.Ref <string[]> .IsAny,
                              It.IsAny <string>()))
            .Returns(0)
            .Verifiable();

            fileSystem.Setup((o) => o.Read(file))
            .Throws <UnexpectedException>();

            extractor.Object.ExtractWithZipArchive(file, "/path");

            Moq.Mock.Verify(fileSystem, process);

            StringAssert.Contains(
                tester.GetDisplay(),
                "Unzip with ZipArchive failed, falling back to unzip command");
        }
Example #2
0
        public void TestShowsAppropriateMessage()
        {
            var initialMock = new Mock <IPackage>();

            initialMock.Setup((o) => o.GetVersion()).Returns("1.2.0.0");
            initialMock.Setup((o) => o.GetVersionPrettyFull(true)).Returns("1.2.0");

            var targetMock = new Mock <IPackage>();
            var distUri    = "https://example.com/foo/bar.zip";

            targetMock.Setup((o) => o.GetName()).Returns("foo/bar");
            targetMock.Setup((o) => o.GetVersion()).Returns("1.6.0.0");
            targetMock.Setup((o) => o.GetVersionPrettyFull(true)).Returns("1.6.0");
            targetMock.Setup((o) => o.GetDistUri()).Returns(distUri);
            targetMock.Setup((o) => o.GetDistUris()).Returns(new[] { distUri });

            var downloadedFilePath = downloader.GetDownloadedFilePath(targetMock.Object, "/path");

            fileSystem.Setup((o) => o.Delete("/path"))
            .Verifiable();
            fileSystem.Setup((o) => o.Move(It.IsIn(downloadedFilePath), It.IsIn(Path.Combine("/path", "bar.zip"))))
            .Verifiable();

            downloader.Update(initialMock.Object, targetMock.Object, "/path");

            Moq.Mock.VerifyAll(fileSystem);
            StringAssert.Contains(tester.GetDisplay(), "  - Updating foo/bar (1.2.0 => 1.6.0):");
        }
Example #3
0
        public void TestInstall()
        {
            var packageMock = new Mock <IPackage>();

            packageMock.Setup((o) => o.ToString())
            .Returns("foo/bar-1.2.0");
            packageMock.Setup((o) => o.GetName())
            .Returns("foo/bar");
            packageMock.Setup((o) => o.GetVersionPrettyFull(true))
            .Returns("1.2.0 1234567");
            packageMock.Setup((o) => o.GetDistUri())
            .Returns("https://example.com/foo/bar.zip");
            packageMock.Setup((o) => o.GetDistReference())
            .Returns("1234567890123456789012345678901234567890");

            fileSystem.SetupSequence((o) => o.GetContents(It.IsAny <string>()))
            .Returns(new DirectoryContents(new[] { "vendor" }, new[] { ".DS_Store" }))
            .Returns(new DirectoryContents(new[] { "vendor/srcs" }, new[] { "vendor/SAMPLE.md" }));

            downloader.Object.Install(packageMock.Object, "/path", true);

            fileSystem.Verify((o) => o.Delete("/path"), Times.Once);
            fileSystem.Verify((o) => o.Move(It.IsRegex(@"vendor$"), "/path"));

            StringAssert.Contains(
                tester.GetDisplay(),
                "  - Installing foo/bar (1.2.0 1234567): Extracting archive");
        }
        public void TestDoesntHidePorts()
        {
            var tester  = new TesterIOConsole();
            var process = new BucketProcessExecutor(tester.Mock(AbstractTester.OptionVerbosity(OutputOptions.VerbosityDebug)));

            process.Execute("echo https://localhost:1234/");

            StringAssert.Contains(tester.GetDisplay(), "Executing command (CWD): echo https://localhost:1234/");
        }
        public void TestHidenSensitive()
        {
            var tester  = new TesterIOConsole();
            var process = new BucketProcessExecutor(tester.Mock(AbstractTester.OptionVerbosity(OutputOptions.VerbosityDebug)));

            process.Execute("echo https://foo:[email protected]/ && echo http://[email protected] && echo http://abcdef1234567890234578:[email protected]/", out string stdout);

            StringAssert.Contains(tester.GetDisplay(), "Executing command (CWD): echo https://foo:***@example.org/ && echo http://[email protected] && echo http://***:***@github.com/");
        }
Example #6
0
        public void TestAsk()
        {
            var tester = new TesterIOConsole();

            tester.SetInputs(new[] { "menghanyu" });
            var ioConsole = tester.Mock();
            var answer    = ioConsole.Ask("What's your name?", "miaomiao");

            Assert.AreEqual("menghanyu", (string)answer);
            Assert.AreEqual("What's your name?", tester.GetDisplay());
        }
Example #7
0
        public void TestProhibitUriAllowNonSecureHttp()
        {
            var config = new Mock <Config>(true, null);

            config.Setup((o) => o.Get(Settings.SecureHttp, ConfigOptions.None))
            .Returns(() => false);

            var tester = new TesterIOConsole();

            Guard.That.ProhibitUri(config.Object, "http://github.com/foo/bar", tester.Mock());

            StringAssert.Contains(tester.GetDisplay(), "Warning: Accessing github.com over http which is an insecure protocol.");
        }
Example #8
0
        public void TestDowngradeShowsMessage()
        {
            var oldPackageMock = new Mock <IPackage>();

            oldPackageMock.Setup((o) => o.GetSourceReference())
            .Returns("ref");
            oldPackageMock.Setup((o) => o.GetSourceUris())
            .Returns(new[] { "/foo/bar", "https://github.com/bucket/bucket" });
            oldPackageMock.Setup((o) => o.GetVersion())
            .Returns("1.2.0.0");
            oldPackageMock.Setup((o) => o.GetVersionPretty())
            .Returns("1.2.0");

            var newPackageMock = new Mock <IPackage>();

            newPackageMock.Setup((o) => o.GetSourceReference())
            .Returns("ref");
            newPackageMock.Setup((o) => o.GetSourceUris())
            .Returns(new[] { "https://github.com/bucket/bucket" });
            newPackageMock.Setup((o) => o.GetVersion())
            .Returns("1.0.0.0");
            newPackageMock.Setup((o) => o.GetVersionPretty())
            .Returns("1.0.0");

            var processMock = new Mock <IProcessExecutor>();

            processMock.Setup(null, returnValue: () => 0);

            if (!Directory.Exists(root + "/.git"))
            {
                Directory.CreateDirectory(root + "/.git");
            }

            var downloader = CreateDownloaderMock(process: processMock.Object);

            downloader.Update(oldPackageMock.Object, newPackageMock.Object, root);

            StringAssert.Contains(tester.GetDisplay(), "Downgrading");
        }
Example #9
0
        public void TestSetHelper()
        {
            var tester = new TesterIOConsole();

            tester.SetInputs(new[] { "menghanyu" });

            var ioConsole = tester.Mock();

            ioConsole.SetHelperQuestion(new HelperQuestionDefault());
            var answer = ioConsole.Ask("What's your name?", "miaomiao");

            Assert.AreEqual("menghanyu", (string)answer);
            Assert.AreEqual(
                @" What's your name? [miaomiao]:
 > ", tester.GetDisplay());
        }
Example #10
0
        public void TestActivatePackage(ConfigBucket bucket)
        {
            var package = new LoaderPackage().Load(bucket);

            pluginManager.ActivatePackages(package);

            Assert.AreEqual(2, pluginManager.GetPlugins().Length);

            var display = tester.GetDisplay();

            StringAssert.Contains(display, "Activate foo");
            StringAssert.Contains(display, "Activate bar");

            dispatcher.Dispatch("foo", this, null);
            dispatcher.Dispatch("bar", this, null);
            display = tester.GetDisplay();
            StringAssert.Contains(display, "Trigger foo event");
            StringAssert.Contains(display, "Trigger bar event");
        }
Example #11
0
        public void TestTesterIOConsoleMock()
        {
            var tester = new TesterIOConsole();

            tester.SetInputs(new[] { "menghanyu" });

            var io = tester.Mock(AbstractTester.OptionStdErrorSeparately(true));

            Assert.AreEqual("menghanyu", (string)io.Ask("what's your name?", "miaomiao"));
            io.Write("hello world");
            Assert.AreEqual(
                @"hello world
", tester.GetDisplay());

            io.WriteError("hello world error");
            Assert.AreEqual(
                @"what's your name?hello world error
", tester.GetDisplayError());
        }
Example #12
0
        public void TestInstallAndRollback()
        {
            var repositoryInstalled = new Mock <IRepositoryInstalled>();
            var package             = new Mock <IPackage>();

            package.Setup((o) => o.GetName()).Returns("foo");
            repositoryInstalled.Setup((o) => o.HasPackage(package.Object)).Returns(true).Verifiable();

            pluginManager.Setup((o) => o.ActivatePackages(package.Object, true)).Throws <RuntimeException>().Verifiable();

            Assert.ThrowsException <RuntimeException>(() =>
            {
                installer.Install(repositoryInstalled.Object, package.Object);
            });

            StringAssert.Contains(tester.GetDisplay(), "Plugin installation failed, rolling back.");
            repositoryInstalled.Verify();
            pluginManager.Verify();
        }