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  }