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  }