smutok/internal/config/config_test.go(view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
package config
import (
"os"
"path/filepath"
"testing"
"olexsmir.xyz/x/is"
)
func TestNewConfig(t *testing.T) {
}
func TestParsePassword(t *testing.T) {
passwd := "qwerty123"
t.Run("string", func(t *testing.T) {
r, err := parsePassword(passwd, ".")
is.Err(t, err, nil)
is.Equal(t, r, passwd)
})
t.Run("env var", func(t *testing.T) {
t.Setenv("secret_password", passwd)
r, err := parsePassword("$env:secret_password", ".")
is.Err(t, err, nil)
is.Equal(t, r, passwd)
})
t.Run("unset env var", func(t *testing.T) {
_, err := parsePassword("$env:secret_password", ".")
is.Err(t, err, ErrUnsetPasswordEnv)
})
t.Run("file", func(t *testing.T) {
r, err := parsePassword("file:./testdata/password", ".")
is.Err(t, err, nil)
is.Equal(t, r, passwd)
})
t.Run("empty file", func(t *testing.T) {
_, err := parsePassword("file:./testdata/empty_password", ".")
is.Err(t, err, ErrEmptyPasswordFile)
})
t.Run("non existing file", func(t *testing.T) {
_, err := parsePassword("file:/not/exists", ".")
is.Err(t, err, ErrPasswordFileNotFound)
})
t.Run("file, not set path", func(t *testing.T) {
_, err := parsePassword("file:", ".")
is.Err(t, err, ErrPasswordFileNotFound)
})
t.Run("file, path with env", func(t *testing.T) {
tmpdir := t.TempDir()
t.Setenv("TMP_DIR", tmpdir)
data, _ := os.ReadFile("./testdata/password")
os.WriteFile(filepath.Join(tmpdir, "password"), data, 0o644)
r, err := parsePassword("file:$TMP_DIR/password", ".")
is.Err(t, err, nil)
is.Equal(t, r, passwd)
})
}
|