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));
        }
Exemple #2
0
 public CustomMsSqlFixtureOptions()
 {
     ImageProvider = new DockerfileImageProvider("example_database", ".",
                                                 new ImageBuildParameters
     {
         BuildArgs = new Dictionary <string, string>()
         {
             { "PASSWORD", this.SaPassword },
             { "DATABASE", "test" }
         }
     });
 }
Exemple #3
0
        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);
        }
Exemple #6
0
        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();
        }
Exemple #7
0
        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));
 }