diff --git a/generator/deployment_test.go b/generator/deployment_test.go index b6a57e8..ba0a1d6 100644 --- a/generator/deployment_test.go +++ b/generator/deployment_test.go @@ -38,32 +38,3 @@ services: t.Errorf("Expected image to be nginx:1.29, got %s", dt.Spec.Template.Spec.Containers[0].Image) } } - -func TestGenerateWithBoundVolume(t *testing.T) { - _compose_file := ` -services: - web: - image: nginx:1.29 - volumes: - - data:/var/www -volumes: - data: -` - tmpDir := setup(_compose_file) - defer teardown(tmpDir) - - currentDir, _ := os.Getwd() - os.Chdir(tmpDir) - defer os.Chdir(currentDir) - - output := _compile_test(t, "-s", "templates/web/deployment.yaml") - - dt := v1.Deployment{} - if err := yaml.Unmarshal([]byte(output), &dt); err != nil { - t.Errorf("Failed to unmarshal the output: %s", err) - } - - if dt.Spec.Template.Spec.Containers[0].VolumeMounts[0].Name != "data" { - t.Errorf("Expected volume name to be data: %v", dt) - } -} diff --git a/generator/volume_test.go b/generator/volume_test.go new file mode 100644 index 0000000..a0320eb --- /dev/null +++ b/generator/volume_test.go @@ -0,0 +1,100 @@ +package generator + +import ( + "fmt" + "os" + "testing" + + v1 "k8s.io/api/apps/v1" + corev1 "k8s.io/api/core/v1" + "sigs.k8s.io/yaml" +) + +func TestGenerateWithBoundVolume(t *testing.T) { + _compose_file := ` +services: + web: + image: nginx:1.29 + volumes: + - data:/var/www +volumes: + data: +` + tmpDir := setup(_compose_file) + defer teardown(tmpDir) + + currentDir, _ := os.Getwd() + os.Chdir(tmpDir) + defer os.Chdir(currentDir) + + output := _compile_test(t, "-s", "templates/web/deployment.yaml") + + dt := v1.Deployment{} + if err := yaml.Unmarshal([]byte(output), &dt); err != nil { + t.Errorf("Failed to unmarshal the output: %s", err) + } + + if dt.Spec.Template.Spec.Containers[0].VolumeMounts[0].Name != "data" { + t.Errorf("Expected volume name to be data: %v", dt) + } +} + +func TestWithStaticFiles(t *testing.T) { + _compose_file := ` +services: + web: + image: nginx:1.29 + volumes: + - ./static:/var/www + labels: + %sconfigmap-files: |- + - ./static +` + _compose_file = fmt.Sprintf(_compose_file, KATENARY_PREFIX) + tmpDir := setup(_compose_file) + defer teardown(tmpDir) + + // create a static directory with an index.html file + staticDir := tmpDir + "/static" + os.Mkdir(staticDir, 0o755) + indexFile, err := os.Create(staticDir + "/index.html") + if err != nil { + t.Errorf("Failed to create index.html: %s", err) + } + indexFile.WriteString("

Hello, World!

") + indexFile.Close() + + currentDir, _ := os.Getwd() + os.Chdir(tmpDir) + defer os.Chdir(currentDir) + + output := _compile_test(t, "-s", "templates/web/deployment.yaml") + dt := v1.Deployment{} + if err := yaml.Unmarshal([]byte(output), &dt); err != nil { + t.Errorf("Failed to unmarshal the output: %s", err) + } + // get the volume mount path + volumeMountPath := dt.Spec.Template.Spec.Containers[0].VolumeMounts[0].MountPath + if volumeMountPath != "/var/www" { + t.Errorf("Expected volume mount path to be /var/www, got %s", volumeMountPath) + } + + // read the configMap + output, err = helmTemplate(ConvertOptions{ + OutputDir: tmpDir + "/chart", + }, "-s", "templates/web/statics/static/configmap.yaml") + if err != nil { + t.Errorf("Failed to run helm template: %s", err) + } + configMap := corev1.ConfigMap{} + if err := yaml.Unmarshal([]byte(output), &configMap); err != nil { + t.Errorf("Failed to unmarshal the output: %s", err) + } + data := configMap.Data + if len(data) != 1 { + t.Errorf("Expected 1 data, got %d", len(data)) + } + if data["index.html"] != "

Hello, World!

" { + t.Errorf("Expected index.html to be

Hello, World!

, got %s", data["index.html"]) + } +}