github.com/docker/app@v0.9.1-beta3.0.20210611140623-a48f773ab002/internal/packager/parameter_test.go (about) 1 package packager 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/docker/app/types" 8 "gotest.tools/assert" 9 ) 10 11 func TestCnabParameterMapping(t *testing.T) { 12 f, err := os.Open("testdata/parameters.yml") 13 assert.NilError(t, err) 14 defer f.Close() 15 app := &types.App{ 16 Name: "test", 17 } 18 assert.NilError(t, types.WithParameters(f)(app)) 19 result := ExtractCNABParameterMapping(app.Parameters()) 20 21 expectedParameterToCnabEnv := map[string]string{ 22 "aa": "docker_param1", 23 "bb.bb": "docker_param2", 24 "bb.cc": "docker_param3", 25 "cc.aa.dd": "docker_param4", 26 "cc.bb": "docker_param5", 27 "cc.cc": "docker_param6", 28 } 29 expectedEnvToParameter := map[string]string{} 30 for k, v := range expectedParameterToCnabEnv { 31 expectedEnvToParameter[v] = k 32 } 33 34 assert.DeepEqual(t, result.ParameterToCNABEnv, expectedParameterToCnabEnv) 35 assert.DeepEqual(t, result.CNABEnvToParameter, expectedEnvToParameter) 36 } 37 38 func TestCnabParameterExtraction(t *testing.T) { 39 env := []string{ 40 "docker_param1=val", 41 "aa=should_not_bind", 42 "docker_param2=override1", 43 "docker_param3=override2", 44 "docker_param4=override3", 45 "docker_param5=override4", 46 "docker_param6=override5", 47 } 48 f, err := os.Open("testdata/parameters.yml") 49 assert.NilError(t, err) 50 defer f.Close() 51 app := &types.App{ 52 Name: "test", 53 } 54 assert.NilError(t, types.WithParameters(f)(app)) 55 mapping := ExtractCNABParameterMapping(app.Parameters()) 56 result := ExtractCNABParametersValues(mapping, env) 57 expectedValues := map[string]string{ 58 "aa": "val", 59 "bb.bb": "override1", 60 "bb.cc": "override2", 61 "cc.aa.dd": "override3", 62 "cc.bb": "override4", 63 "cc.cc": "override5", 64 } 65 assert.DeepEqual(t, result, expectedValues) 66 }