go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/cli/reporter/json_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package reporter
     5  
     6  import (
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  	"go.mondoo.com/cnquery/llx"
    13  	"go.mondoo.com/cnquery/providers-sdk/v1/testutils"
    14  	"go.mondoo.com/cnquery/shared"
    15  )
    16  
    17  var x = testutils.InitTester(testutils.LinuxMock())
    18  
    19  func testQuery(t *testing.T, query string) (*llx.CodeBundle, map[string]*llx.RawResult) {
    20  	codeBundle, err := x.Compile(query)
    21  	require.NoError(t, err)
    22  
    23  	results, err := x.ExecuteCode(codeBundle, nil)
    24  	require.NoError(t, err)
    25  
    26  	return codeBundle, results
    27  }
    28  
    29  type simpleTest struct {
    30  	code     string
    31  	expected string
    32  }
    33  
    34  func runSimpleTests(t *testing.T, tests []simpleTest) {
    35  	var out strings.Builder
    36  	w := shared.IOWriter{Writer: &out}
    37  
    38  	for i := range tests {
    39  		cur := tests[i]
    40  		t.Run(cur.code, func(t *testing.T) {
    41  			bundle, results := testQuery(t, cur.code)
    42  			err := BundleResultsToJSON(bundle, results, &w)
    43  			require.NoError(t, err)
    44  			assert.Equal(t, cur.expected, out.String())
    45  		})
    46  	}
    47  }
    48  
    49  func TestJsonReporter(t *testing.T) {
    50  	runSimpleTests(t, []simpleTest{
    51  		{
    52  			"users.where(uid==0)",
    53  			`{"users.where.list":[{"gid":0,"name":"root","uid":0}]}`,
    54  		},
    55  	})
    56  }