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 }