get.porter.sh/porter@v1.3.0/pkg/generator/credentials_test.go (about)

     1  package generator
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/cnabio/cnab-go/bundle"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestBadCredentialsName(t *testing.T) {
    12  	name := "this.hasadot"
    13  	opts := GenerateCredentialsOptions{
    14  		GenerateOptions: GenerateOptions{
    15  			Name:   name,
    16  			Silent: true,
    17  		},
    18  	}
    19  
    20  	cs, err := GenerateCredentials(opts)
    21  	require.Error(t, err, "bad name should have resulted in an error")
    22  	require.Empty(t, cs, "credential set should have been empty")
    23  	require.EqualError(t, err, fmt.Sprintf("credentialset name '%s' cannot contain the following characters: './\\'", name))
    24  }
    25  
    26  func TestGoodCredentialsName(t *testing.T) {
    27  	name := "this-name-is-valid"
    28  	opts := GenerateCredentialsOptions{
    29  		GenerateOptions: GenerateOptions{
    30  			Name:   name,
    31  			Silent: true,
    32  		},
    33  		Credentials: map[string]bundle.Credential{
    34  			"one": {
    35  				Location: bundle.Location{
    36  					EnvironmentVariable: "BLAH",
    37  				},
    38  			},
    39  			"two": {
    40  				Location: bundle.Location{
    41  					EnvironmentVariable: "BLAH",
    42  				},
    43  			},
    44  			"three": {
    45  				Location: bundle.Location{
    46  					Path: "/something",
    47  				},
    48  			},
    49  		},
    50  	}
    51  
    52  	cs, err := GenerateCredentials(opts)
    53  	require.NoError(t, err, "name should NOT have resulted in an error")
    54  	require.Equal(t, 3, len(cs.Credentials), "should have had 3 entries")
    55  }
    56  
    57  func TestNoCredentials(t *testing.T) {
    58  	name := "this-name-is-valid"
    59  	opts := GenerateCredentialsOptions{
    60  		GenerateOptions: GenerateOptions{
    61  			Name:   name,
    62  			Silent: true,
    63  		},
    64  	}
    65  	cs, err := GenerateCredentials(opts)
    66  	require.NoError(t, err, "no credentials should have generated an empty credential set")
    67  	require.NotNil(t, cs, "empty credentials should still return an empty credential set")
    68  }
    69  
    70  func TestEmptyCredentials(t *testing.T) {
    71  	name := "this-name-is-valid"
    72  	opts := GenerateCredentialsOptions{
    73  		GenerateOptions: GenerateOptions{
    74  			Name:   name,
    75  			Silent: true,
    76  		},
    77  		Credentials: map[string]bundle.Credential{},
    78  	}
    79  	cs, err := GenerateCredentials(opts)
    80  	require.NoError(t, err, "empty credentials should have generated an empty credential set")
    81  	require.NotEmpty(t, cs, "empty credentials should still return an empty credential set")
    82  }
    83  
    84  func TestNoCredentialsName(t *testing.T) {
    85  	opts := GenerateCredentialsOptions{
    86  		GenerateOptions: GenerateOptions{
    87  			Silent: true,
    88  		},
    89  	}
    90  	cs, err := GenerateCredentials(opts)
    91  	require.Error(t, err, "expected an error because name is required")
    92  	require.Empty(t, cs, "credential set should have been empty")
    93  }