lockbox

password manager
Log | Files | Refs | README | LICENSE

commit b83e31744e3b1465ab9b19d23a272e93a0a5c603
parent b9d3cdbdee5f32fbf2d51f22cb31636b22e70b3f
Author: Sean Enck <sean@ttypty.com>
Date:   Tue, 25 Jul 2023 20:39:36 -0400

more merging

Diffstat:
Dinternal/inputs/json.go | 35-----------------------------------
Dinternal/inputs/json_test.go | 35-----------------------------------
Minternal/inputs/vars.go | 22++++++++++++++++++++++
Minternal/inputs/vars_test.go | 27+++++++++++++++++++++++++++
4 files changed, 49 insertions(+), 70 deletions(-)

diff --git a/internal/inputs/json.go b/internal/inputs/json.go @@ -1,35 +0,0 @@ -// Package inputs handles user inputs/UI elements for JSON -package inputs - -import ( - "fmt" - "strings" -) - -const ( - // JSONDataOutputHash means output data is hashed - JSONDataOutputHash JSONOutputMode = "hash" - // JSONDataOutputBlank means an empty entry is set - JSONDataOutputBlank JSONOutputMode = "empty" - // JSONDataOutputRaw means the RAW (unencrypted) value is displayed - JSONDataOutputRaw JSONOutputMode = "plaintext" -) - -type ( - // JSONOutputMode is the output mode definition - JSONOutputMode string -) - -// ParseJSONOutput handles detecting the JSON output mode -func ParseJSONOutput() (JSONOutputMode, error) { - val := strings.ToLower(strings.TrimSpace(EnvironOrDefault(JSONDataOutputEnv, string(JSONDataOutputHash)))) - switch JSONOutputMode(val) { - case JSONDataOutputHash: - return JSONDataOutputHash, nil - case JSONDataOutputBlank: - return JSONDataOutputBlank, nil - case JSONDataOutputRaw: - return JSONDataOutputRaw, nil - } - return JSONDataOutputBlank, fmt.Errorf("invalid JSON output mode: %s", val) -} diff --git a/internal/inputs/json_test.go b/internal/inputs/json_test.go @@ -1,35 +0,0 @@ -package inputs_test - -import ( - "os" - "testing" - - "github.com/enckse/lockbox/internal/inputs" -) - -func TestParseJSONMode(t *testing.T) { - defer os.Clearenv() - m, err := inputs.ParseJSONOutput() - if m != inputs.JSONDataOutputHash || err != nil { - t.Error("invalid mode read") - } - os.Setenv("LOCKBOX_JSON_DATA_OUTPUT", "hAsH ") - m, err = inputs.ParseJSONOutput() - if m != inputs.JSONDataOutputHash || err != nil { - t.Error("invalid mode read") - } - os.Setenv("LOCKBOX_JSON_DATA_OUTPUT", "EMPTY") - m, err = inputs.ParseJSONOutput() - if m != inputs.JSONDataOutputBlank || err != nil { - t.Error("invalid mode read") - } - os.Setenv("LOCKBOX_JSON_DATA_OUTPUT", " PLAINtext ") - m, err = inputs.ParseJSONOutput() - if m != inputs.JSONDataOutputRaw || err != nil { - t.Error("invalid mode read") - } - os.Setenv("LOCKBOX_JSON_DATA_OUTPUT", "a") - if _, err = inputs.ParseJSONOutput(); err == nil || err.Error() != "invalid JSON output mode: a" { - t.Errorf("invalid error: %v", err) - } -} diff --git a/internal/inputs/vars.go b/internal/inputs/vars.go @@ -61,9 +61,17 @@ const ( JSONDataOutputEnv = prefixKey + "JSON_DATA_OUTPUT" defaultHashLength = 0 hashJSONLengthEnv = JSONDataOutputEnv + "_HASH_LENGTH" + // JSONDataOutputHash means output data is hashed + JSONDataOutputHash JSONOutputMode = "hash" + // JSONDataOutputBlank means an empty entry is set + JSONDataOutputBlank JSONOutputMode = "empty" + // JSONDataOutputRaw means the RAW (unencrypted) value is displayed + JSONDataOutputRaw JSONOutputMode = "plaintext" ) type ( + // JSONOutputMode is the output mode definition + JSONOutputMode string environmentOutput struct { showValues bool } @@ -260,3 +268,17 @@ func FormatTOTP(value string) string { } return u.String() } + +// ParseJSONOutput handles detecting the JSON output mode +func ParseJSONOutput() (JSONOutputMode, error) { + val := strings.ToLower(strings.TrimSpace(EnvironOrDefault(JSONDataOutputEnv, string(JSONDataOutputHash)))) + switch JSONOutputMode(val) { + case JSONDataOutputHash: + return JSONDataOutputHash, nil + case JSONDataOutputBlank: + return JSONDataOutputBlank, nil + case JSONDataOutputRaw: + return JSONDataOutputRaw, nil + } + return JSONDataOutputBlank, fmt.Errorf("invalid JSON output mode: %s", val) +} diff --git a/internal/inputs/vars_test.go b/internal/inputs/vars_test.go @@ -219,3 +219,30 @@ func TestFormatTOTP(t *testing.T) { t.Errorf("invalid totp token: %s", otp) } } + +func TestParseJSONMode(t *testing.T) { + defer os.Clearenv() + m, err := inputs.ParseJSONOutput() + if m != inputs.JSONDataOutputHash || err != nil { + t.Error("invalid mode read") + } + os.Setenv("LOCKBOX_JSON_DATA_OUTPUT", "hAsH ") + m, err = inputs.ParseJSONOutput() + if m != inputs.JSONDataOutputHash || err != nil { + t.Error("invalid mode read") + } + os.Setenv("LOCKBOX_JSON_DATA_OUTPUT", "EMPTY") + m, err = inputs.ParseJSONOutput() + if m != inputs.JSONDataOutputBlank || err != nil { + t.Error("invalid mode read") + } + os.Setenv("LOCKBOX_JSON_DATA_OUTPUT", " PLAINtext ") + m, err = inputs.ParseJSONOutput() + if m != inputs.JSONDataOutputRaw || err != nil { + t.Error("invalid mode read") + } + os.Setenv("LOCKBOX_JSON_DATA_OUTPUT", "a") + if _, err = inputs.ParseJSONOutput(); err == nil || err.Error() != "invalid JSON output mode: a" { + t.Errorf("invalid error: %v", err) + } +}