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  }