chore(secrets): add test for readSecretFileAsStringPtr
This commit is contained in:
92
internal/configuration/sources/secrets/helpers_test.go
Normal file
92
internal/configuration/sources/secrets/helpers_test.go
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
package secrets
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/qdm12/gosettings/sources/env"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ptrTo[T any](value T) *T { return &value }
|
||||||
|
|
||||||
|
func Test_readSecretFileAsStringPtr(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
testCases := map[string]struct {
|
||||||
|
source func(tempDir string) Source
|
||||||
|
secretPathEnvKey string
|
||||||
|
defaultSecretFileName string
|
||||||
|
setupFile func(tempDir string) error
|
||||||
|
stringPtr *string
|
||||||
|
errWrapped error
|
||||||
|
errMessage string
|
||||||
|
}{
|
||||||
|
"no_secret_file": {
|
||||||
|
defaultSecretFileName: "default_secret_file",
|
||||||
|
secretPathEnvKey: "SECRET_FILE",
|
||||||
|
},
|
||||||
|
"empty_secret_file": {
|
||||||
|
defaultSecretFileName: "default_secret_file",
|
||||||
|
secretPathEnvKey: "SECRET_FILE",
|
||||||
|
setupFile: func(tempDir string) error {
|
||||||
|
secretFilepath := filepath.Join(tempDir, "default_secret_file")
|
||||||
|
return os.WriteFile(secretFilepath, nil, os.ModePerm)
|
||||||
|
},
|
||||||
|
stringPtr: ptrTo(""),
|
||||||
|
},
|
||||||
|
"default_secret_file": {
|
||||||
|
defaultSecretFileName: "default_secret_file",
|
||||||
|
secretPathEnvKey: "SECRET_FILE",
|
||||||
|
setupFile: func(tempDir string) error {
|
||||||
|
secretFilepath := filepath.Join(tempDir, "default_secret_file")
|
||||||
|
return os.WriteFile(secretFilepath, []byte("A"), os.ModePerm)
|
||||||
|
},
|
||||||
|
stringPtr: ptrTo("A"),
|
||||||
|
},
|
||||||
|
"env_specified_secret_file": {
|
||||||
|
source: func(tempDir string) Source {
|
||||||
|
secretFilepath := filepath.Join(tempDir, "secret_file")
|
||||||
|
environ := []string{"SECRET_FILE=" + secretFilepath}
|
||||||
|
return Source{env: *env.New(environ)}
|
||||||
|
},
|
||||||
|
defaultSecretFileName: "default_secret_file",
|
||||||
|
secretPathEnvKey: "SECRET_FILE",
|
||||||
|
setupFile: func(tempDir string) error {
|
||||||
|
secretFilepath := filepath.Join(tempDir, "secret_file")
|
||||||
|
return os.WriteFile(secretFilepath, []byte("B"), os.ModePerm)
|
||||||
|
},
|
||||||
|
stringPtr: ptrTo("B"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, testCase := range testCases {
|
||||||
|
testCase := testCase
|
||||||
|
t.Run(name, func(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
tempDir := t.TempDir()
|
||||||
|
|
||||||
|
var source Source
|
||||||
|
if testCase.source != nil {
|
||||||
|
source = testCase.source(tempDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultSecretPath := filepath.Join(tempDir, testCase.defaultSecretFileName)
|
||||||
|
if testCase.setupFile != nil {
|
||||||
|
err := testCase.setupFile(tempDir)
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
stringPtr, err := source.readSecretFileAsStringPtr(
|
||||||
|
testCase.secretPathEnvKey, defaultSecretPath)
|
||||||
|
|
||||||
|
assert.Equal(t, testCase.stringPtr, stringPtr)
|
||||||
|
assert.ErrorIs(t, err, testCase.errWrapped)
|
||||||
|
if testCase.errWrapped != nil {
|
||||||
|
assert.EqualError(t, err, testCase.errMessage)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user