go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/explorer/query_conductor_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package explorer 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 "go.mondoo.com/cnquery/providers" 12 ) 13 14 func TestMatchFilters(t *testing.T) { 15 schema := providers.DefaultRuntime().Schema() 16 17 t.Run("one matching filter", func(t *testing.T) { 18 filters := NewFilters("true", "false") 19 filters.Compile("//owner", schema) 20 21 matching := []*Mquery{{Mql: "true"}} 22 ChecksumFilters(matching, schema) 23 24 res, err := MatchFilters("assetMrn", matching, []*QueryPack{{ComputedFilters: filters}}, schema) 25 require.NoError(t, err) 26 assert.Equal(t, "6rm6AihK9P0=", res) 27 }) 28 29 t.Run("no matching filter (matching is provided)", func(t *testing.T) { 30 filters := NewFilters("true", "false") 31 filters.Compile("//owner", schema) 32 33 matching := []*Mquery{{Mql: "0"}} 34 ChecksumFilters(matching, schema) 35 36 _, err := MatchFilters("assetMrn", matching, []*QueryPack{{ComputedFilters: filters}}, schema) 37 assert.EqualError(t, err, 38 "rpc error: code = InvalidArgument desc = asset isn't supported by any querypacks\n"+ 39 "querypacks support: false, true\n"+ 40 "asset supports: 0\n") 41 }) 42 43 t.Run("no matching filter (matching is empty)", func(t *testing.T) { 44 filters := NewFilters("true", "false") 45 filters.Compile("//owner", schema) 46 47 _, err := MatchFilters("assetMrn", []*Mquery{}, []*QueryPack{{ComputedFilters: filters}}, schema) 48 assert.EqualError(t, err, 49 "rpc error: code = InvalidArgument desc = asset doesn't support any querypacks") 50 }) 51 }