|
| 1 | +package secret |
| 2 | + |
| 3 | +import ( |
| 4 | + "errors" |
| 5 | + "testing" |
| 6 | + |
| 7 | + "github.com/stretchr/testify/assert" |
| 8 | +) |
| 9 | + |
| 10 | +func TestGetSecretKey(t *testing.T) { |
| 11 | + result := getSecretKey("mykey") |
| 12 | + assert.Equal(t, "sm_mykey", result) |
| 13 | +} |
| 14 | + |
| 15 | +func TestParseArg(t *testing.T) { |
| 16 | + // Test key=value parsing |
| 17 | + secret, err := ParseArg("key=value", SetOpts{Provider: Credstore}) |
| 18 | + assert.NoError(t, err) |
| 19 | + assert.Equal(t, "key", secret.key) |
| 20 | + assert.Equal(t, "value", secret.val) |
| 21 | + |
| 22 | + // Test key-only for non-direct providers |
| 23 | + secret, err = ParseArg("keyname", SetOpts{Provider: "oauth/github"}) |
| 24 | + assert.NoError(t, err) |
| 25 | + assert.Equal(t, "keyname", secret.key) |
| 26 | + assert.Equal(t, "", secret.val) |
| 27 | + |
| 28 | + // Test error on key=value with non-direct provider |
| 29 | + _, err = ParseArg("key=value", SetOpts{Provider: "oauth/github"}) |
| 30 | + assert.Error(t, err) |
| 31 | +} |
| 32 | + |
| 33 | +func TestIsDirectValueProvider(t *testing.T) { |
| 34 | + assert.True(t, isDirectValueProvider("")) |
| 35 | + assert.True(t, isDirectValueProvider(Credstore)) |
| 36 | + assert.False(t, isDirectValueProvider("oauth/github")) |
| 37 | +} |
| 38 | + |
| 39 | +func TestIsValidProvider(t *testing.T) { |
| 40 | + // Valid providers |
| 41 | + assert.True(t, IsValidProvider("")) |
| 42 | + assert.True(t, IsValidProvider(Credstore)) |
| 43 | + assert.True(t, IsValidProvider("oauth/github")) |
| 44 | + assert.True(t, IsValidProvider("oauth/google")) |
| 45 | + |
| 46 | + // Invalid providers |
| 47 | + assert.False(t, IsValidProvider("invalid")) |
| 48 | + assert.False(t, IsValidProvider("oauth")) |
| 49 | +} |
| 50 | + |
| 51 | +func TestIsErrDecryption(t *testing.T) { |
| 52 | + // Test decryption error detection |
| 53 | + decryptErr := errors.New("gpg: decryption failed: No secret key") |
| 54 | + assert.True(t, isErrDecryption(decryptErr)) |
| 55 | + |
| 56 | + // Test other errors |
| 57 | + otherErr := errors.New("some other error") |
| 58 | + assert.False(t, isErrDecryption(otherErr)) |
| 59 | + |
| 60 | + // Test nil |
| 61 | + assert.False(t, isErrDecryption(nil)) |
| 62 | +} |
0 commit comments