go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/mqlc/labels_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package mqlc_test 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "go.mondoo.com/cnquery/llx" 11 "go.mondoo.com/cnquery/mqlc" 12 ) 13 14 func label(t *testing.T, s string, f func(res *llx.Labels)) { 15 res, err := mqlc.Compile(s, nil, conf) 16 assert.Nil(t, err) 17 assert.NotNil(t, res) 18 if res == nil { 19 return 20 } 21 22 assert.NotNil(t, res.Labels) 23 if res.Labels == nil { 24 return 25 } 26 27 t.Run(s, func(t *testing.T) { f(res.Labels) }) 28 } 29 30 func TestLabels(t *testing.T) { 31 tests := []struct { 32 src string 33 labels *llx.Labels 34 }{ 35 { 36 "mondoo.version == 'yo'", 37 &llx.Labels{ 38 Labels: map[string]string{ 39 "J084T/tsf/V2gVKuPUCMiaSli6jjgbrZfBlLtC06P3JdvDMMg2jLWvO8q8CXcZ4rtZf08GRZ5Qsgcoz/4Ph6Vw==": "mondoo.version == \"yo\"", 40 "J4anmJ+mXJX380Qslh563U7Bs5d6fiD2ghVxV9knAU0iy/P+IVNZsDhBbCmbpJch3Tm0NliAMiaY47lmw887Jw==": "mondoo.version", 41 }, 42 }, 43 }, 44 45 { 46 "true", 47 &llx.Labels{Labels: map[string]string{ 48 "13VXYfnMnc74H8XVgiMbH6ZSHxTGQxkhJfUkIiYOBCfUDxHAIJWopMcsea7hXkBTFpbM9lCDnbDBev1z+uagBw==": "", 49 }}, 50 }, 51 { 52 "1", 53 &llx.Labels{Labels: map[string]string{ 54 "zcXMKiq4b4QGFVMCvyyFhLXFQKOYn7NKqbV/47XBrKcFwirRjWPgReFt4kdD9G7/ZZCJPsmS4pdCfM32VdTAiQ==": "", 55 }}, 56 }, 57 { 58 "1.23", 59 &llx.Labels{Labels: map[string]string{ 60 "wYfzvA9Xuue3Dr0AcPOM9Y8yyd9t+DWggiInRLU5bSoWOoQtxVrt+aNkeOAorYDYV26ni1v6nIGzL6/3EqxSqQ==": "", 61 }}, 62 }, 63 { 64 "\"string\"", 65 &llx.Labels{Labels: map[string]string{ 66 "YKg4KBZELSGbdx6hE2dqiH5YWTTjYQDYjVzgUsOxnZs9djRb3SHjCadjEsPq6KlmcRLwo9kpv2fPYEJoQJb2qw==": "", 67 }}, 68 }, 69 { 70 "sshd", 71 &llx.Labels{Labels: map[string]string{ 72 "fAVT9TdeX6puAiM5lRS0Rd7jFmfKMI48wFngwRNW9Vbo220GbeDAxaIvXLSF/hZcU5749fc26y6fwAwFgg3agA==": "sshd", 73 }}, 74 }, 75 { 76 "sshd.config", 77 &llx.Labels{Labels: map[string]string{ 78 "h1EPuzo5A02wYUOeDzbzv9YfwPO5Km0r1tmJ0UOceHGyO+M2vrEpnF3/XVJu0hOtyAITe0M4O6XOjLOTc8i8lA==": "sshd.config", 79 }}, 80 }, 81 { 82 "sshd.config.params", 83 &llx.Labels{Labels: map[string]string{ 84 "mhgTAYWyl4RGL8my4EskNtiC8WdZdCnvto9+Vp+vdGvTXrsmNCZF2I1dGbbT/2LS8npk1ULPyVFyX4MEE7zwkw==": "sshd.config.params", 85 }}, 86 }, 87 { 88 "sshd.config(\"/my/path\").params", 89 &llx.Labels{Labels: map[string]string{ 90 "WuRyBukFpZbzB1eSaci2IBPTPd+JnEVlEeEfBBTPR7xZjvFvPS/Hhn9WY5z/D7bVhwtddpaxrAPFWfk6djgr1Q==": "sshd.config.params", 91 }}, 92 }, 93 { 94 "asset.name asset.version", 95 &llx.Labels{Labels: map[string]string{ 96 "dfc6mvEo04hkhtJJiFc22KX6/AMf6Fy2kQhrtpTW4TxGWTtwNH19ATbrfbhWlXSxx0BBFCRU4emVM/LsxJdhhw==": "asset.name", 97 "5d4FZxbPkZu02MQaHp3C356NJ9TeVsJBw8Enu+TDyBGdWlZM/AE+J5UT/TQ72AmDViKZe97Hxz1Jt3MjcEH/9Q==": "asset.version", 98 }}, 99 }, 100 { 101 "asset { name version }", 102 &llx.Labels{ 103 Labels: map[string]string{ 104 "5d4FZxbPkZu02MQaHp3C356NJ9TeVsJBw8Enu+TDyBGdWlZM/AE+J5UT/TQ72AmDViKZe97Hxz1Jt3MjcEH/9Q==": "version", 105 "HsQJ6Pn7MoZb1V80cTdxHFHZks9QCOBga68ug9JHSivLxNNlGNwGr7dzWVkZhAuVBLgloAWvLnpfr5SzFlG7KA==": "asset", 106 "dfc6mvEo04hkhtJJiFc22KX6/AMf6Fy2kQhrtpTW4TxGWTtwNH19ATbrfbhWlXSxx0BBFCRU4emVM/LsxJdhhw==": "name", 107 }, 108 }, 109 }, 110 { 111 "users.list { uid }", 112 &llx.Labels{ 113 Labels: map[string]string{ 114 "IB4yJOaaWXlkuGCEIjatVrL5rQZWQucCaOM55RqFxHYXGFvano6W1uqe55OJVo3joocfdpiSZjNqRjse8SMfiA==": "users.list", 115 "kijfKPV0fU/MBdcby4ng65mWcsH/kOn5PcVmYvbDBfUlSSSqGKiyhy1Qte+BO/GqMfL62iaaIRP8LgfRZ0/3pg==": "uid", 116 }, 117 }, 118 }, 119 { 120 "users.list[0]", 121 &llx.Labels{ 122 Labels: map[string]string{ 123 "IWmJEZKJxco/zD8JR+g8Lqmw49kbCYWSsxQm3QBFf0D0xhVqK8ukpiHhF0TCcDYLm/SrnvpWCnUelRJhqahnZw==": "users.list[0]", 124 "MCqGdk4puEdBb/fxS3qDqAV/8gv3DIxFT+InTY7+JcySIzGMDzq8L1t2C8W6qh4z8GI3MvR6ZQ64bVQl0f2Xww==": "uid", 125 "T4APLiU1zCnhKjG6cI0dADH4zDmV9qAZ7cwqmY4oUX3iVUDa4VLSotQ3whx+FRFbhaHkg8GI6cyEpN/nyT2jkQ==": "gid", 126 "lq0/cF0a/88fFC/0iEmNVILRf68BM92KtITqSh/WSb+UD1QtnydjwcBpC7IW9CSRXekh74bHSm88taykkFx77w==": "name", 127 }, 128 }, 129 }, 130 { 131 "users.list[0] { uid }", 132 &llx.Labels{ 133 Labels: map[string]string{ 134 "ITQmg8B2q1g7hUGGDcnFYQjiQ/w1TPr9xyd4dlWAPjwGyRdH2CrtCv55kn7v4SUVqGaJ8k021tUTZznlRzeXNg==": "users.list[0]", 135 "MCqGdk4puEdBb/fxS3qDqAV/8gv3DIxFT+InTY7+JcySIzGMDzq8L1t2C8W6qh4z8GI3MvR6ZQ64bVQl0f2Xww==": "uid", 136 }, 137 }, 138 }, 139 { 140 "sshd.config.params[\"UsePAM\"]", 141 &llx.Labels{ 142 Labels: map[string]string{ 143 "PSwPW4/H4l4oMTVi+uJnCzKqWAbakhxMi8HjdZMixpF3/CpjPFePhE5Vpe5sgf3DGVIZENZtfB+i0SjMK/c7rw==": "sshd.config.params[UsePAM]", 144 }, 145 }, 146 }, 147 { 148 "sshd.config { file { path } }", 149 &llx.Labels{ 150 Labels: map[string]string{ 151 "4dkTkPWdGYANJNsnlIoZxztiguA32f0UoKeYLeVb5Iry/nSYR0RmK6cveUCA6t4fqQJ5RkTwrDlEDHjoE0vURg==": "sshd.config", 152 "OuTdAjszQCmHLzp7Y5W3QICyVbGVX3UcnUllLGIXPjQToitI3LKzJ78iVUzMWOmNJZxmbpP7iySzzuFXgflQ+g==": "file", 153 "k6rlXoYpV48Qd19gKeNl+/IiPnkI5VNQBiqZBca3gDKsIRiLcpXQUlDv52x9sscIWiqOMpC7+x/aBpY0IUq0ww==": "path", 154 }, 155 }, 156 }, 157 158 // vars 159 { 160 "a = 1; a", 161 &llx.Labels{ 162 Labels: map[string]string{ 163 "M3Zw1U5oVhZQeXdyvlpQc6tJz7LG6NiZ7oGQCr1eDSloV75R7lRObrv53UuaHvBOuZG3zBt5BDx9MRoRJwIlfA==": "a", 164 }, 165 }, 166 }, 167 { 168 "a = 1; b = 2; c = a+b; c", 169 &llx.Labels{ 170 Labels: map[string]string{ 171 "FU1/hdJ5vadWluEfeQHhklVNU86zhW3zNwxraoHDXJYJj7X2AsjJkhuQjaCfx607pvV/Yjez346tOwzg7i9inQ==": "c", 172 // TODO: optimize the code so we don't generate these 2 labels vv 173 // they are not needed 174 "M3Zw1U5oVhZQeXdyvlpQc6tJz7LG6NiZ7oGQCr1eDSloV75R7lRObrv53UuaHvBOuZG3zBt5BDx9MRoRJwIlfA==": "a", 175 "lUa7PEZHR8EfRzYDn+Q38ZZTckepgNlv1sFhRL6l+v7gmV+v/7IxTAoJ2VlAHkCpNU5p5KFLPzPwn6K1Eq27XQ==": "b", 176 // ^^ 177 }, 178 }, 179 }, 180 } 181 182 for i := range tests { 183 test := tests[i] 184 label(t, test.src, func(labels *llx.Labels) { 185 assert.Equal(t, test.labels, labels) 186 }) 187 } 188 }