Example #1
0
        public async Task ScanWasSuccessful_ReturnOkCode()
        {
            var gitWrapper = GetDefaultGitMock();

            var client = new MockHttpMessageHandler();

            client.When($"{JenkinsUrl}/{DefaultPipeline}/build?delay=0")
            .Respond(HttpStatusCode.OK);

            var httpClientFactory = new Mock <IHttpClientFactory>();

            httpClientFactory.Setup(s => s.CreateClient(It.IsAny <string>()))
            .Returns(client.ToHttpClient());

            var command = new ScanPipeline(gitWrapper.Object,
                                           GetEncryptorMock().Object,
                                           GetUserConsoleMock().Object,
                                           httpClientFactory.Object,
                                           GetOptionsMock().Object);

            var app = new CommandLineApplication();

            app.Command(command.Name, command.Command);
            var code = await app.ExecuteAsync(new string[] { Command });

            Assert.That(code, Is.EqualTo(JenoCodes.Ok));
        }
Example #2
0
        public void CannotFindMatchedRepo_InformAboutIt()
        {
            var undefinedRepository = "job/fifthExampleRepo";

            var gitWrapper = new Mock <IGitClient>();

            gitWrapper.Setup(s => s.IsGitRepository(It.IsAny <string>()))
            .Returns(Task.FromResult(false));
            gitWrapper.Setup(s => s.GetRepoName(It.IsAny <string>()))
            .Returns(Task.FromResult(undefinedRepository));

            var httpClientFactory = new Mock <IHttpClientFactory>();

            httpClientFactory.Setup(s => s.CreateClient(It.IsAny <string>()))
            .Returns(new MockHttpMessageHandler().ToHttpClient());

            var command = new ScanPipeline(gitWrapper.Object,
                                           GetEncryptorMock().Object,
                                           GetUserConsoleMock().Object,
                                           httpClientFactory.Object,
                                           GetOptionsMock().Object);

            var app = new CommandLineApplication();

            app.Command(command.Name, command.Command);

            Assert.That(async() => await app.ExecuteAsync(new string[] { Command }), Throws.TypeOf <JenoException>()
                        .With.Property(nameof(JenoException.ExitCode)).EqualTo(JenoCodes.DefaultError)
                        .And.Property(nameof(JenoException.Message)).Contains("Current directory is not a git repository."));
        }
Example #3
0
        public async Task RunScanFromMappedRepository_CreateProperUrl()
        {
            var gitWrapper = GetDefaultGitMock();
            var url        = $"{JenkinsUrl}/{DefaultPipeline}/build?delay=0";

            var client = new MockHttpMessageHandler();

            client.Expect(HttpMethod.Post, url)
            .Respond(HttpStatusCode.OK);

            var httpClientFactory = new Mock <IHttpClientFactory>();

            httpClientFactory.Setup(s => s.CreateClient(It.IsAny <string>()))
            .Returns(client.ToHttpClient());

            var command = new ScanPipeline(gitWrapper.Object,
                                           GetEncryptorMock().Object,
                                           GetUserConsoleMock().Object,
                                           httpClientFactory.Object,
                                           GetOptionsMock().Object);

            var app = new CommandLineApplication();

            app.Command(command.Name, command.Command);
            var code = await app.ExecuteAsync(new string[] { Command });

            Assert.That(code, Is.EqualTo(JenoCodes.Ok));
            Assert.That(() => client.VerifyNoOutstandingExpectation(), Throws.Nothing);
        }
Example #4
0
        public void SomeErrorOccuredInScanRequest_DisplayErrorMessage()
        {
            var gitWrapper = new Mock <IGitClient>();

            gitWrapper.Setup(s => s.IsGitRepository(It.IsAny <string>()))
            .Returns(Task.FromResult(true));
            gitWrapper.Setup(s => s.GetRepoName(It.IsAny <string>()))
            .Returns(Task.FromResult(DefaultKey));

            var client = new MockHttpMessageHandler();

            client.When($"{JenkinsUrl}/{DefaultPipeline}/build?delay=0")
            .Respond(HttpStatusCode.BadRequest);

            var httpClientFactory = new Mock <IHttpClientFactory>();

            httpClientFactory.Setup(s => s.CreateClient(It.IsAny <string>()))
            .Returns(client.ToHttpClient());

            var command = new ScanPipeline(gitWrapper.Object,
                                           GetEncryptorMock().Object,
                                           GetUserConsoleMock().Object,
                                           httpClientFactory.Object,
                                           GetOptionsMock().Object);

            var app = new CommandLineApplication();

            app.Command(command.Name, command.Command);

            Assert.That(async() => await app.ExecuteAsync(new string[] { Command }), Throws.InstanceOf <JenoException>()
                        .With.Property(nameof(JenoException.ExitCode)).EqualTo(JenoCodes.DefaultError)
                        .And.Property(nameof(JenoException.Message)).Contains("Cannot scan pipeline"));;
        }