public async Task Generate_NamedBinding() { var applicationName = "generate-named-binding"; var projectName = "frontend"; var environment = "production"; await DockerAssert.DeleteDockerImagesAsync(output, projectName); using var projectDirectory = TestHelpers.CopyTestProjectDirectory(applicationName); var projectFile = new FileInfo(Path.Combine(projectDirectory.DirectoryPath, "tye.yaml")); var outputContext = new OutputContext(sink, Verbosity.Debug); var application = await ApplicationFactory.CreateAsync(outputContext, projectFile); try { await GenerateHost.ExecuteGenerateAsync(outputContext, application, environment, interactive : false); // name of application is the folder var content = await File.ReadAllTextAsync(Path.Combine(projectDirectory.DirectoryPath, $"{applicationName}-generate-{environment}.yaml")); var expectedContent = await File.ReadAllTextAsync($"testassets/generate/{applicationName}.yaml"); YamlAssert.Equals(expectedContent, content, output); await DockerAssert.AssertImageExistsAsync(output, projectName); } finally { await DockerAssert.DeleteDockerImagesAsync(output, projectName); } }
public async Task SingleProjectGenerateTest() { await DockerAssert.DeleteDockerImagesAsync(output, "test/test-project"); var projectName = "single-project"; var environment = "production"; using var projectDirectory = CopyTestProjectDirectory(projectName); var projectFile = new FileInfo(Path.Combine(projectDirectory.DirectoryPath, "tye.yaml")); var outputContext = new OutputContext(sink, Verbosity.Debug); var application = await ApplicationFactory.CreateAsync(outputContext, projectFile); // Need to add docker registry for generate application.Registry = new ContainerRegistry("test"); try { await GenerateHost.ExecuteGenerateAsync(outputContext, application, environment, interactive : false); // name of application is the folder var content = await File.ReadAllTextAsync(Path.Combine(projectDirectory.DirectoryPath, $"{projectName}-generate-{environment}.yaml")); var expectedContent = await File.ReadAllTextAsync($"testassets/generate/{projectName}.yaml"); YamlAssert.Equals(expectedContent, content, output); await DockerAssert.AssertImageExistsAsync(output, "test/test-project"); } finally { await DockerAssert.DeleteDockerImagesAsync(output, "test/test-project"); } }
public async Task SingleProjectGenerateTest() { await DockerAssert.DeleteDockerImagesAsync(output, "test/test-project"); var projectName = "single-project"; var environment = "production"; var projectDirectory = new DirectoryInfo(Path.Combine(TestHelpers.GetSolutionRootDirectory("tye"), "samples", projectName)); using var tempDirectory = TempDirectory.Create(); DirectoryCopy.Copy(projectDirectory.FullName, tempDirectory.DirectoryPath); var projectFile = new FileInfo(Path.Combine(tempDirectory.DirectoryPath, "tye.yaml")); var application = ConfigFactory.FromFile(projectFile); // Need to add docker registry for generate application.Registry = "test"; try { await GenerateHost.ExecuteGenerateAsync(new OutputContext(sink, Verbosity.Debug), application, environment, interactive : false); // name of application is the folder var content = File.ReadAllText(Path.Combine(tempDirectory.DirectoryPath, $"{projectName}-generate-{environment}.yaml")); var expectedContent = File.ReadAllText($"testassets/generate/{projectName}.yaml"); Assert.Equal(expectedContent, content); await DockerAssert.AssertImageExistsAsync(output, "test/test-project"); } finally { await DockerAssert.DeleteDockerImagesAsync(output, "test/test-project"); } }
public async Task Generate_DaprApplication() { var applicationName = "dapr_test_application"; var projectName = "dapr_test_project"; var environment = "production"; await DockerAssert.DeleteDockerImagesAsync(output, projectName); using var projectDirectory = TestHelpers.CopyTestProjectDirectory("dapr"); var projectFile = new FileInfo(Path.Combine(projectDirectory.DirectoryPath, "tye.yaml")); var outputContext = new OutputContext(sink, Verbosity.Debug); var application = await ApplicationFactory.CreateAsync(outputContext, projectFile); try { await GenerateHost.ExecuteGenerateAsync(outputContext, application, environment, interactive : false); // name of application is the folder var content = File.ReadAllText(Path.Combine(projectDirectory.DirectoryPath, $"{applicationName}-generate-{environment}.yaml")); var expectedContent = File.ReadAllText($"testassets/generate/dapr.yaml"); Assert.Equal(expectedContent.NormalizeNewLines(), content.NormalizeNewLines()); await DockerAssert.AssertImageExistsAsync(output, projectName); } finally { await DockerAssert.DeleteDockerImagesAsync(output, projectName); } }
public async Task GenerateWorksWithoutRegistry() { await DockerAssert.DeleteDockerImagesAsync(output, "test-project"); var projectName = "single-project"; var environment = "production"; var projectDirectory = new DirectoryInfo(Path.Combine(TestHelpers.GetSolutionRootDirectory("tye"), "samples", projectName)); using var tempDirectory = TempDirectory.Create(); DirectoryCopy.Copy(projectDirectory.FullName, tempDirectory.DirectoryPath); var projectFile = new FileInfo(Path.Combine(tempDirectory.DirectoryPath, "tye.yaml")); var outputContext = new OutputContext(sink, Verbosity.Debug); var application = await ApplicationFactory.CreateAsync(outputContext, projectFile); try { await GenerateHost.ExecuteGenerateAsync(outputContext, application, environment, interactive : false); // name of application is the folder var content = File.ReadAllText(Path.Combine(tempDirectory.DirectoryPath, $"{projectName}-generate-{environment}.yaml")); var expectedContent = File.ReadAllText($"testassets/generate/{projectName}-noregistry.yaml"); Assert.Equal(expectedContent.NormalizeNewLines(), content.NormalizeNewLines()); await DockerAssert.AssertImageExistsAsync(output, "test-project"); } finally { await DockerAssert.DeleteDockerImagesAsync(output, "test-project"); } }
public async Task Generate_Ingress() { var applicationName = "apps-with-ingress"; var environment = "production"; await DockerAssert.DeleteDockerImagesAsync(output, "appa"); await DockerAssert.DeleteDockerImagesAsync(output, "appa"); using var projectDirectory = TestHelpers.CopyTestProjectDirectory(applicationName); var projectFile = new FileInfo(Path.Combine(projectDirectory.DirectoryPath, "tye.yaml")); var outputContext = new OutputContext(sink, Verbosity.Debug); var application = await ApplicationFactory.CreateAsync(outputContext, projectFile); try { await GenerateHost.ExecuteGenerateAsync(outputContext, application, environment, interactive : false); // name of application is the folder var content = await File.ReadAllTextAsync(Path.Combine(projectDirectory.DirectoryPath, $"{applicationName}-generate-{environment}.yaml")); if (await KubectlDetector.GetKubernetesServerVersion(outputContext) >= new Version(1, 19)) { var expectedContent = await File.ReadAllTextAsync($"testassets/generate/{applicationName}.1.19.yaml"); YamlAssert.Equals(expectedContent, content, output); } else { var expectedContent = await File.ReadAllTextAsync($"testassets/generate/{applicationName}.1.18.yaml"); YamlAssert.Equals(expectedContent, content, output); } await DockerAssert.AssertImageExistsAsync(output, "appa"); await DockerAssert.AssertImageExistsAsync(output, "appb"); } finally { await DockerAssert.DeleteDockerImagesAsync(output, "appa"); await DockerAssert.DeleteDockerImagesAsync(output, "appb"); } }