github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/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 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func Test_Parser(t *testing.T) { 14 input := `{ "x": { "y": 123, "z": ["a", "b", "c"]}}` 15 16 memfs := memoryfs.New() 17 err := memfs.WriteFile("something.json", []byte(input), 0644) 18 require.NoError(t, err) 19 20 data, err := New().ParseFile(context.TODO(), memfs, "something.json") 21 require.NoError(t, err) 22 23 msi, ok := data.(map[string]interface{}) 24 require.True(t, ok) 25 26 xObj, ok := msi["x"] 27 require.True(t, ok) 28 29 xMsi, ok := xObj.(map[string]interface{}) 30 require.True(t, ok) 31 32 yRaw, ok := xMsi["y"] 33 require.True(t, ok) 34 35 y, ok := yRaw.(float64) 36 require.True(t, ok) 37 38 assert.Equal(t, 123.0, y) 39 40 zRaw, ok := xMsi["z"] 41 require.True(t, ok) 42 43 z, ok := zRaw.([]interface{}) 44 require.True(t, ok) 45 46 require.Len(t, z, 3) 47 48 assert.Equal(t, "a", z[0]) 49 assert.Equal(t, "b", z[1]) 50 assert.Equal(t, "c", z[2]) 51 52 }