github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/pkg/scanners/json/parser/parser_test.go (about) 1 package parser 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/liamg/memoryfs" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func Test_Parser(t *testing.T) { 13 input := `{ "x": { "y": 123, "z": ["a", "b", "c"]}}` 14 15 memfs := memoryfs.New() 16 err := memfs.WriteFile("something.json", []byte(input), 0644) 17 require.NoError(t, err) 18 19 data, err := New().ParseFile(context.TODO(), memfs, "something.json") 20 require.NoError(t, err) 21 22 msi, ok := data.(map[string]interface{}) 23 require.True(t, ok) 24 25 xObj, ok := msi["x"] 26 require.True(t, ok) 27 28 xMsi, ok := xObj.(map[string]interface{}) 29 require.True(t, ok) 30 31 yRaw, ok := xMsi["y"] 32 require.True(t, ok) 33 34 y, ok := yRaw.(float64) 35 require.True(t, ok) 36 37 assert.Equal(t, 123.0, y) 38 39 zRaw, ok := xMsi["z"] 40 require.True(t, ok) 41 42 z, ok := zRaw.([]interface{}) 43 require.True(t, ok) 44 45 require.Len(t, z, 3) 46 47 assert.Equal(t, "a", z[0]) 48 assert.Equal(t, "b", z[1]) 49 assert.Equal(t, "c", z[2]) 50 51 }