Skip to content

Commit b1105ec

Browse files
authored
Merge pull request #84 from justinabrahms/invalid-json
Error if invalid json is passed.
2 parents c3606c4 + eaa4df6 commit b1105ec

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

decode.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"encoding/json"
2222
"encoding/xml"
2323
"io"
24+
"io/ioutil"
2425
)
2526

2627
type BOMDecoder interface {
@@ -40,7 +41,11 @@ type jsonBOMDecoder struct {
4041

4142
// Decode implements the BOMDecoder interface.
4243
func (j jsonBOMDecoder) Decode(bom *BOM) error {
43-
return json.NewDecoder(j.reader).Decode(bom)
44+
bytes, err := ioutil.ReadAll(j.reader)
45+
if err != nil {
46+
return err
47+
}
48+
return json.Unmarshal(bytes, bom)
4449
}
4550

4651
type xmlBOMDecoder struct {

decode_test.go

+12
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,18 @@ func TestNewBOMDecoder(t *testing.T) {
3030
assert.IsType(t, &xmlBOMDecoder{}, NewBOMDecoder(nil, BOMFileFormatXML))
3131
}
3232

33+
func TestXmlBOMDecoder_Decode_InvalidXML(t *testing.T) {
34+
var bom BOM
35+
err := NewBOMDecoder(strings.NewReader("invalid"), BOMFileFormatXML).Decode(&bom)
36+
require.Error(t, err)
37+
}
38+
39+
func TestJsonBOMDecoder_Decode_InvalidJson(t *testing.T) {
40+
var bom BOM
41+
err := NewBOMDecoder(strings.NewReader("{}invalid"), BOMFileFormatJSON).Decode(&bom)
42+
require.Error(t, err)
43+
}
44+
3345
func TestXmlBOMDecoder_Decode(t *testing.T) {
3446
t.Run("ShouldSetSpecVersion", func(t *testing.T) {
3547
testCases := []struct {

0 commit comments

Comments
 (0)