mirror of
https://github.com/getsops/sops.git
synced 2026-02-05 12:45:21 +01:00
Handle return values of dec.Token() to improve error messages.
Signed-off-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
@@ -221,7 +221,17 @@ func (store Store) jsonFromTreeBranch(branch sops.TreeBranch) ([]byte, error) {
|
||||
|
||||
func (store Store) treeBranchFromJSON(in []byte) (sops.TreeBranch, error) {
|
||||
dec := json.NewDecoder(bytes.NewReader(in))
|
||||
dec.Token()
|
||||
value, err := dec.Token()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if delim, ok := value.(json.Delim); ok {
|
||||
if delim.String() != "{" {
|
||||
return nil, fmt.Errorf("Expected JSON object start, got delimiter %s instead", value)
|
||||
}
|
||||
} else {
|
||||
return nil, fmt.Errorf("Expected JSON object start, got %#v of type %T instead", value, value)
|
||||
}
|
||||
return store.treeBranchFromJSONDecoder(dec)
|
||||
}
|
||||
|
||||
|
||||
@@ -130,6 +130,21 @@ func TestDecodeNumber(t *testing.T) {
|
||||
in := `42`
|
||||
_, err := Store{}.treeBranchFromJSON([]byte(in))
|
||||
assert.NotNil(t, err)
|
||||
assert.Equal(t, "Expected JSON object start, got 42 of type float64 instead", err.Error())
|
||||
}
|
||||
|
||||
func TestDecodeArray(t *testing.T) {
|
||||
in := ` [42] `
|
||||
_, err := Store{}.treeBranchFromJSON([]byte(in))
|
||||
assert.NotNil(t, err)
|
||||
assert.Equal(t, "Expected JSON object start, got delimiter [ instead", err.Error())
|
||||
}
|
||||
|
||||
func TestDecodeEmpty(t *testing.T) {
|
||||
in := ``
|
||||
_, err := Store{}.treeBranchFromJSON([]byte(in))
|
||||
assert.NotNil(t, err)
|
||||
assert.Equal(t, "EOF", err.Error())
|
||||
}
|
||||
|
||||
func TestDecodeNestedJSONObject(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user