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)); }
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.")); }
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); }
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"));; }