get.porter.sh/porter@v1.3.0/pkg/generator/parameters_test.go (about) 1 package generator 2 3 import ( 4 "fmt" 5 "testing" 6 7 "get.porter.sh/porter/pkg/cnab" 8 "github.com/cnabio/cnab-go/bundle" 9 "github.com/cnabio/cnab-go/bundle/definition" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestBadParametersName(t *testing.T) { 15 name := "this.hasadot" 16 opts := GenerateParametersOptions{ 17 GenerateOptions: GenerateOptions{ 18 Name: name, 19 Silent: true, 20 }, 21 } 22 23 pset, err := opts.GenerateParameters() 24 require.Error(t, err, "bad name should have resulted in an error") 25 require.Empty(t, pset, "parameter set should have been empty") 26 require.EqualError(t, err, fmt.Sprintf("parameter set name '%s' cannot contain the following characters: './\\'", name)) 27 } 28 29 func TestGoodParametersName(t *testing.T) { 30 name := "this-name-is-valid" 31 opts := GenerateParametersOptions{ 32 GenerateOptions: GenerateOptions{ 33 Name: name, 34 Silent: true, 35 }, 36 Bundle: cnab.NewBundle(bundle.Bundle{ 37 Parameters: map[string]bundle.Parameter{ 38 "one": { 39 Definition: "one", 40 }, 41 "two": { 42 Definition: "two", 43 }, 44 "three": { 45 Definition: "three", 46 }, 47 }, 48 }, 49 )} 50 51 pset, err := opts.GenerateParameters() 52 require.NoError(t, err, "name should NOT have resulted in an error") 53 require.Equal(t, 3, len(pset.Parameters), "should have had 3 entries") 54 } 55 56 func TestNoParameters(t *testing.T) { 57 name := "this-name-is-valid" 58 opts := GenerateParametersOptions{ 59 GenerateOptions: GenerateOptions{ 60 Name: name, 61 Silent: true, 62 }, 63 } 64 pset, err := opts.GenerateParameters() 65 require.NoError(t, err, "no parameters should have generated an empty parameter set") 66 require.NotEmpty(t, pset, "empty parameters should still return an empty parameter set") 67 } 68 69 func TestEmptyParameters(t *testing.T) { 70 name := "this-name-is-valid" 71 opts := GenerateParametersOptions{ 72 GenerateOptions: GenerateOptions{ 73 Name: name, 74 Silent: true, 75 }, 76 Bundle: cnab.ExtendedBundle{}, 77 } 78 pset, err := opts.GenerateParameters() 79 require.NoError(t, err, "empty parameters should have generated an empty parameter set") 80 require.NotEmpty(t, pset, "empty parameters should still return an empty parameter set") 81 } 82 83 func TestNoParametersName(t *testing.T) { 84 opts := GenerateParametersOptions{ 85 GenerateOptions: GenerateOptions{ 86 Silent: true, 87 }, 88 } 89 pset, err := opts.GenerateParameters() 90 require.Error(t, err, "expected an error because name is required") 91 require.Empty(t, pset, "parameter set should have been empty") 92 } 93 94 func TestSkipParameters(t *testing.T) { 95 name := "skip-params" 96 opts := GenerateParametersOptions{ 97 GenerateOptions: GenerateOptions{ 98 Name: name, 99 Silent: true, 100 }, 101 Bundle: cnab.NewBundle(bundle.Bundle{ 102 Definitions: definition.Definitions{ 103 "porter-debug": &definition.Schema{ 104 Comment: cnab.PorterInternal, 105 }, 106 }, 107 Parameters: map[string]bundle.Parameter{ 108 "porter-debug": { 109 Definition: "porter-debug", 110 }, 111 }, 112 }, 113 )} 114 115 pset, err := opts.GenerateParameters() 116 require.NoError(t, err, "parameters generation should not have resulted in an error") 117 assert.Equal(t, "skip-params", pset.Name, "Name was not set") 118 require.Empty(t, pset.Parameters, "parameter set should have empty parameters section") 119 }