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  }