浏览代码

Introduce test to check CloudFormation conversion

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 5 年之前
父节点
当前提交
e88b11bc26
共有 1 个文件被更改,包括 46 次插入0 次删除
  1. 46 0
      ecs/pkg/amazon/cloudformation_test.go

+ 46 - 0
ecs/pkg/amazon/cloudformation_test.go

@@ -4,6 +4,12 @@ import (
 	"fmt"
 	"testing"
 
+	"github.com/awslabs/goformation/v4/cloudformation/ec2"
+
+	"github.com/awslabs/goformation/v4/cloudformation"
+	"github.com/compose-spec/compose-go/loader"
+	"github.com/compose-spec/compose-go/types"
+
 	"gotest.tools/assert"
 
 	"github.com/docker/ecs-plugin/pkg/compose"
@@ -24,6 +30,27 @@ func TestSimpleWithOverrides(t *testing.T) {
 	golden.Assert(t, result, expected)
 }
 
+func TestMapNetworksToSecurityGroups(t *testing.T) {
+	template := convertYaml(t, `
+version: "3"
+services:
+  test:
+    image: hello_world
+networks:
+  front-tier:
+    name: public
+  back-tier:
+    internal: true
+`)
+	assert.Check(t, template.Resources["TestPublicNetwork"] != nil)
+	assert.Check(t, template.Resources["TestBacktierNetwork"] != nil)
+	assert.Check(t, template.Resources["TestBacktierNetworkIngress"] != nil)
+	ingress := template.Resources["TestPublicNetworkIngress"].(*ec2.SecurityGroupIngress)
+	assert.Check(t, ingress != nil)
+	assert.Check(t, ingress.SourceSecurityGroupId == cloudformation.Ref("TestPublicNetwork"))
+
+}
+
 func convertResultAsString(t *testing.T, project *compose.Project, clusterName string) string {
 	client, err := NewClient("", clusterName, "")
 	assert.NilError(t, err)
@@ -43,3 +70,22 @@ func load(t *testing.T, paths ...string) *compose.Project {
 	assert.NilError(t, err)
 	return project
 }
+
+func convertYaml(t *testing.T, yaml string) *cloudformation.Template {
+	dict, err := loader.ParseYAML([]byte(yaml))
+	assert.NilError(t, err)
+	model, err := loader.Load(types.ConfigDetails{
+		ConfigFiles: []types.ConfigFile{
+			{Config: dict},
+		},
+	})
+	assert.NilError(t, err)
+	err = compose.Normalize(model)
+	assert.NilError(t, err)
+	template, err := client{}.Convert(&compose.Project{
+		Config: *model,
+		Name:   "test",
+	})
+	assert.NilError(t, err)
+	return template
+}