public async Task GetImageThrowsWhenProjectCantBeFound() { var file = new FileInfo(Path.GetTempFileName()); file.Delete(); var imageSource = new DockerfileImageProvider(file); await Assert.ThrowsAsync <FileNotFoundException>(async() => await imageSource.GetImage(null)); }
public CustomMsSqlFixtureOptions() { ImageProvider = new DockerfileImageProvider("example_database", ".", new ImageBuildParameters { BuildArgs = new Dictionary <string, string>() { { "PASSWORD", this.SaPassword }, { "DATABASE", "test" } } }); }
public async Task BuildsImageFromDockerfile() { var dockerFile = ProjectLocator.FindSlnFiles().First().Directory .GetDirectories("Examples").Single() .GetDirectories("ExampleProject").Single() .GetFiles("Dockerfile").Single(); var client = new DockerClientProvider().GetDockerClient(); var provider = new DockerfileImageProvider(dockerFile, ".."); string image = await provider.GetImage(client); Assert.NotNull(image); }
public async Task GetImageThrowsWhenProjectFailsToBuild() { var file = new FileInfo(Path.GetTempFileName()); try { var imageSource = new DockerfileImageProvider(file); await Assert.ThrowsAsync <DockerProjectBuildFailedException>(async() => await imageSource.GetImage(null)); } finally { file.Delete(); } }
public async Task GetImageBuildsProjectFromFile() { var file = ProjectLocator.GetCurrentDir().Parent?.Parent?.Parent?.Parent ?.GetFiles("ExampleProject.csproj", SearchOption.AllDirectories).Single(); var imageSource = new DockerfileImageProvider(file); string tag = await imageSource.GetImage(null); var image = await new DockerClientProvider().GetDockerClient().Images .ListImagesAsync(new ImagesListParameters { MatchName = tag }); Assert.Single(image); }
public async Task FindsDockerFileWhenSuppliedWithProjectName() { var dockerFile = ProjectLocator.FindSlnFiles().First().Directory .GetDirectories("Examples").Single() .GetDirectories("ExampleProject").Single() .GetFiles("Dockerfile").Single(); var locator = new Mock <IDockerfileLocator>(); locator.Setup(l => l.GetDockerfile(new KeyValuePair <string, string>("project", "foo"))) .Returns(dockerFile).Verifiable(); var client = new DockerClientProvider().GetDockerClient(); var provider = new DockerfileImageProvider("foo", "..", null, locator.Object); var image = await provider.GetImage(client); Assert.NotNull(image); locator.Verify(); }
public async Task ThrowsWhenDockerBuildFails(string content) { var dir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(dir); var file = new FileInfo(Path.Combine(dir, "Dockerfile")); File.WriteAllText(file.FullName, content); try { var client = new DockerClientProvider().GetDockerClient(); var provider = new DockerfileImageProvider(file, "."); await Assert.ThrowsAsync <DockerBuildFailedException>(async() => await provider.GetImage(client)); } finally { Directory.Delete(dir, true); } }
public async Task GetImageBuildsProjectFromNames() { string name = "foo"; var file = ProjectLocator.GetCurrentDir().Parent?.Parent?.Parent?.Parent ?.GetFiles("ExampleProject.csproj", SearchOption.AllDirectories).Single(); var projectLocator = new Mock <IProjectLocator>(); projectLocator.Setup(p => p.GetDockerProject(name)).Returns(file); var imageSource = new DockerfileImageProvider(name, projectLocator.Object); string tag = await imageSource.GetImage(null); var image = await new DockerClientProvider().GetDockerClient().Images .ListImagesAsync(new ImagesListParameters { MatchName = tag }); Assert.Single(image); }
public async Task GetImageThrowsWhenProjectIsNull() { var imageSource = new DockerfileImageProvider((string)null); await Assert.ThrowsAsync <ArgumentNullException>(async() => await imageSource.GetImage(null)); }