lockbox

password manager
Log | Files | Refs | README | LICENSE

commit 2ec7693cdbd080318f427f322a8287b5fe07b808
parent 4be6570363410f526a28e5c2f97f7fa2a5356f2b
Author: Sean Enck <sean@ttypty.com>
Date:   Sat, 29 Jul 2023 07:33:16 -0400

slightly improve var checking for env

Diffstat:
Minternal/config/core.go | 3+++
Minternal/config/core_test.go | 1+
Minternal/config/vars_test.go | 62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/internal/config/core.go b/internal/config/core.go @@ -322,6 +322,9 @@ func Environ() []string { var results []string for _, k := range os.Environ() { if strings.HasPrefix(k, prefixKey) { + if strings.HasPrefix(k, EnvConfig.key) { + continue + } results = append(results, k) } } diff --git a/internal/config/core_test.go b/internal/config/core_test.go @@ -150,6 +150,7 @@ func TestEnviron(t *testing.T) { } os.Setenv("LOCKBOX_1", "1") os.Setenv("LOCKBOX_2", "2") + os.Setenv("LOCKBOX_ENV", "2") e = config.Environ() if len(e) != 2 || fmt.Sprintf("%v", e) != "[LOCKBOX_1=1 LOCKBOX_2=2]" { t.Errorf("invalid environ: %v", e) diff --git a/internal/config/vars_test.go b/internal/config/vars_test.go @@ -242,3 +242,65 @@ func checkInt(e config.EnvironmentInt, key, text string, def int, allowZero bool } } } + +func TestEnvironDefinitions(t *testing.T) { + b, err := os.ReadFile("vars.go") + if err != nil { + t.Errorf("invalid err: %v", err) + } + count := 0 + inVars := false + for _, line := range strings.Split(string(b), "\n") { + if line == "var (" { + inVars = true + continue + } + if inVars { + if strings.Contains(line, "= Environment") { + count++ + } else { + if line == ")" { + inVars = false + break + } + } + } + } + if count == 0 || inVars { + t.Errorf("invalid simple parse: %d", count) + } + os.Clearenv() + vals := config.ListEnvironmentVariables() + if len(vals) != count { + t.Errorf("invalid environment variable info: %d != %d", count, len(vals)) + } + os.Clearenv() + expect := make(map[string]struct{}) + for _, val := range vals { + env := strings.Split(strings.TrimSpace(val), "\n")[0] + if !strings.HasPrefix(env, "LOCKBOX_") { + t.Errorf("invalid env var: %s", env) + } + if env == "LOCKBOX_ENV" { + continue + } + os.Setenv(env, "test") + expect[env] = struct{}{} + } + read := config.Environ() + if len(read) != len(expect) { + t.Errorf("invalid environment variable info: %d != %d", len(expect), len(read)) + } + for k := range expect { + found := false + for _, r := range read { + if r == fmt.Sprintf("%s=test", k) { + found = true + break + } + } + if !found { + t.Errorf("unable to find env: %s", k) + } + } +}