public async Task GetConfigurationFile_FilePresentWithDockerComposeYmlPaths_ReturnsDeserializedFileWithProperPathSet() { //Arrange var fakePullDogRepositoryClient = Substitute.For <IPullDogRepositoryClient>(); fakePullDogRepositoryClient .GetFilesForPathAsync("pull-dog.json") .Returns(new[] { new RepositoryFile( "pull-dog.json", Encoding.UTF8.GetBytes(@"{ ""dockerComposeYmlFilePaths"": [""some-docker-compose-file-path""] }")) }); var client = new PullDogFileCollector( fakePullDogRepositoryClient, Substitute.For <IDockerComposeParserFactory>(), Substitute.For <ILogger>()); //Act var configurationFile = await client.GetConfigurationFileAsync(); //Assert Assert.IsNotNull(configurationFile); Assert.AreEqual("some-docker-compose-file-path", configurationFile.DockerComposeYmlFilePaths.Single()); }
public async Task GetConfigurationFile_FilePresent_ReturnsDeserializedFile() { //Arrange var fakePullDogRepositoryClient = Substitute.For <IPullDogRepositoryClient>(); fakePullDogRepositoryClient .GetFilesForPathAsync("pull-dog.json") .Returns(new[] { new RepositoryFile( "pull-dog.json", Encoding.UTF8.GetBytes("{}")) }); var client = new PullDogFileCollector( fakePullDogRepositoryClient, Substitute.For <IDockerComposeParserFactory>(), Substitute.For <ILogger>()); //Act var configurationFile = await client.GetConfigurationFileAsync(); //Assert Assert.IsNotNull(configurationFile); }
public async Task GetConfigurationFile_FileNotPresent_ReturnsNull() { //Arrange var fakePullDogRepositoryClient = Substitute.For <IPullDogRepositoryClient>(); fakePullDogRepositoryClient .GetFilesForPathAsync("pull-dog.json") .Returns(Array.Empty <RepositoryFile>()); var client = new PullDogFileCollector( fakePullDogRepositoryClient, Substitute.For <IDockerComposeParserFactory>(), Substitute.For <ILogger>()); //Act var configurationFile = await client.GetConfigurationFileAsync(); //Assert Assert.IsNull(configurationFile); }
public async Task GetRepositoryFilesFromConfiguration_NoDockerComposeFilePathsPresent_ReturnsNull() { //Arrange var fakePullDogRepositoryClient = Substitute.For <IPullDogRepositoryClient>(); fakePullDogRepositoryClient .GetFilesForPathAsync("pull-dog.json") .Returns(new[] { new RepositoryFile( "pull-dog.json", Encoding.UTF8.GetBytes("{}")) }); var client = new PullDogFileCollector( fakePullDogRepositoryClient, Substitute.For <IDockerComposeParserFactory>(), Substitute.For <ILogger>()); //Act var dockerComposeYmlContents = await client.GetRepositoryFilesFromConfiguration(new ConfigurationFile(new List <string>())); //Assert Assert.IsNull(dockerComposeYmlContents); }
public async Task GetRepositoryFilesFromConfiguration_DockerComposeYmlWithOneOfEachPathTypeAndRelativeDirectoryGiven_ReturnsProperPaths() { //Arrange var fakePullDogRepositoryClient = Substitute.For <IPullDogRepositoryClient>(); fakePullDogRepositoryClient .GetFilesForPathAsync(Path.Join("relative", "dir", "some-docker-compose.yml")) .Returns(new[] { new RepositoryFile( Path.Join("relative", "dir", "some-docker-compose.yml"), Encoding.UTF8.GetBytes("some-docker-compose-contents")) }); fakePullDogRepositoryClient .GetFilesForPathAsync(Path.Join("relative", "dir", "some-volume-path")) .Returns(new[] { new RepositoryFile( Path.Join("relative", "dir", "some-volume-path"), Encoding.UTF8.GetBytes("dummy")) }); fakePullDogRepositoryClient .GetFilesForPathAsync(Path.Join("relative", "dir", "some-environment-file-path")) .Returns(new[] { new RepositoryFile( Path.Join("relative", "dir", "some-environment-file-path"), Encoding.UTF8.GetBytes("dummy")) }); fakePullDogRepositoryClient .GetFilesForPathAsync(Path.Join("relative", "dir", "some-dockerfile-path")) .Returns(new[] { new RepositoryFile( Path.Join("relative", "dir", "some-dockerfile-path"), Encoding.UTF8.GetBytes("dummy")) }); fakePullDogRepositoryClient .GetFilesForPathAsync(Path.Join("relative", "dir", "some-additional-path")) .Returns(new[] { new RepositoryFile( Path.Join("relative", "dir", "some-additional-path"), Encoding.UTF8.GetBytes("dummy")) }); var fakeDockerComposeParserFactory = Substitute.For <IDockerComposeParserFactory>(); var fakeDockerComposeParser = fakeDockerComposeParserFactory .Create("some-docker-compose-contents"); fakeDockerComposeParser .GetVolumePaths() .Returns(new[] { "some-volume-path" }); fakeDockerComposeParser .GetEnvironmentFilePaths() .Returns(new[] { "some-environment-file-path" }); fakeDockerComposeParser .GetDockerfilePaths() .Returns(new[] { "some-dockerfile-path" }); var client = new PullDogFileCollector( fakePullDogRepositoryClient, fakeDockerComposeParserFactory, Substitute.For <ILogger>()); //Act var files = await client.GetRepositoryFilesFromConfiguration( new ConfigurationFile(new List <string> { Path.Join("relative", "dir", "some-docker-compose.yml") })); //Assert Assert.AreEqual(4, files.Length); Assert.AreEqual("some-volume-path", files[0].Path); Assert.AreEqual("some-environment-file-path", files[1].Path); Assert.AreEqual("some-dockerfile-path", files[2].Path); Assert.AreEqual("some-docker-compose.yml", files[3].Path); }