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 }