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  }