mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-31 03:45:17 +00:00
chore: add missing context unit test (#9213)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
This commit is contained in:
parent
584f841c1e
commit
c335670065
1 changed files with 78 additions and 71 deletions
|
@ -126,90 +126,97 @@ func Test_addResourceAndUserContext(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAddVariable(t *testing.T) {
|
func TestAddVariable(t *testing.T) {
|
||||||
conf := config.NewDefaultConfiguration(false)
|
|
||||||
jp := jmespath.New(conf)
|
|
||||||
ctx := NewContext(jp)
|
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
key string
|
key string
|
||||||
value interface{}
|
value interface{}
|
||||||
wantErr bool
|
wantErr bool
|
||||||
wantQueryErr bool
|
query string
|
||||||
expected interface{}
|
expected interface{}
|
||||||
}{
|
wantQueryErr bool
|
||||||
{
|
}{{
|
||||||
name: "Simple variable",
|
name: "Simple variable",
|
||||||
key: "simpleKey",
|
key: "simpleKey",
|
||||||
value: "simpleValue",
|
value: "simpleValue",
|
||||||
wantErr: false,
|
wantErr: false,
|
||||||
wantQueryErr: false,
|
wantQueryErr: false,
|
||||||
expected: "simpleValue",
|
expected: "simpleValue",
|
||||||
|
}, {
|
||||||
|
name: "Nested variable",
|
||||||
|
key: "nested.key",
|
||||||
|
value: 123,
|
||||||
|
wantErr: false,
|
||||||
|
wantQueryErr: false,
|
||||||
|
expected: 123,
|
||||||
|
}, {
|
||||||
|
name: "Invalid key format",
|
||||||
|
key: "invalid,key",
|
||||||
|
value: "someValue",
|
||||||
|
wantErr: false,
|
||||||
|
wantQueryErr: true,
|
||||||
|
expected: nil,
|
||||||
|
}, {
|
||||||
|
name: "Complex nested variable",
|
||||||
|
key: "complex.nested.key",
|
||||||
|
value: map[string]interface{}{"innerKey": "innerValue"},
|
||||||
|
wantErr: false,
|
||||||
|
wantQueryErr: false,
|
||||||
|
expected: map[string]interface{}{"innerKey": "innerValue"},
|
||||||
|
}, {
|
||||||
|
name: "Array value",
|
||||||
|
key: "arrayKey",
|
||||||
|
value: []int{1, 2, 3},
|
||||||
|
wantErr: false,
|
||||||
|
wantQueryErr: false,
|
||||||
|
expected: []int{1, 2, 3},
|
||||||
|
}, {
|
||||||
|
name: "Boolean value",
|
||||||
|
key: "boolKey",
|
||||||
|
value: true,
|
||||||
|
wantErr: false,
|
||||||
|
wantQueryErr: false,
|
||||||
|
expected: true,
|
||||||
|
}, {
|
||||||
|
name: "Empty key",
|
||||||
|
key: "",
|
||||||
|
value: "someValue",
|
||||||
|
wantErr: true,
|
||||||
|
wantQueryErr: false,
|
||||||
|
expected: nil,
|
||||||
|
}, {
|
||||||
|
name: "Nil value",
|
||||||
|
key: "nilKey",
|
||||||
|
value: nil,
|
||||||
|
wantErr: false,
|
||||||
|
wantQueryErr: false,
|
||||||
|
expected: nil,
|
||||||
|
}, {
|
||||||
|
name: "Escaped complex key",
|
||||||
|
key: `metadata.labels."com.example/my-label"`,
|
||||||
|
value: "foo",
|
||||||
|
wantErr: false,
|
||||||
|
query: "metadata",
|
||||||
|
expected: map[string]any{
|
||||||
|
"labels": map[string]any{
|
||||||
|
"com.example/my-label": "foo",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
wantQueryErr: false,
|
||||||
name: "Nested variable",
|
}}
|
||||||
key: "nested.key",
|
|
||||||
value: 123,
|
|
||||||
wantErr: false,
|
|
||||||
wantQueryErr: false,
|
|
||||||
expected: 123,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Invalid key format",
|
|
||||||
key: "invalid,key",
|
|
||||||
value: "someValue",
|
|
||||||
wantErr: false,
|
|
||||||
wantQueryErr: true,
|
|
||||||
expected: nil,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Complex nested variable",
|
|
||||||
key: "complex.nested.key",
|
|
||||||
value: map[string]interface{}{"innerKey": "innerValue"},
|
|
||||||
wantErr: false,
|
|
||||||
wantQueryErr: false,
|
|
||||||
expected: map[string]interface{}{"innerKey": "innerValue"},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Array value",
|
|
||||||
key: "arrayKey",
|
|
||||||
value: []int{1, 2, 3},
|
|
||||||
wantErr: false,
|
|
||||||
wantQueryErr: false,
|
|
||||||
expected: []int{1, 2, 3},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Boolean value",
|
|
||||||
key: "boolKey",
|
|
||||||
value: true,
|
|
||||||
wantErr: false,
|
|
||||||
wantQueryErr: false,
|
|
||||||
expected: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Empty key",
|
|
||||||
key: "",
|
|
||||||
value: "someValue",
|
|
||||||
wantErr: true,
|
|
||||||
wantQueryErr: false,
|
|
||||||
expected: nil,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Nil value",
|
|
||||||
key: "nilKey",
|
|
||||||
value: nil,
|
|
||||||
wantErr: false,
|
|
||||||
wantQueryErr: false,
|
|
||||||
expected: nil,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
conf := config.NewDefaultConfiguration(false)
|
||||||
|
jp := jmespath.New(conf)
|
||||||
|
ctx := NewContext(jp)
|
||||||
err := ctx.AddVariable(tt.key, tt.value)
|
err := ctx.AddVariable(tt.key, tt.value)
|
||||||
if tt.wantErr {
|
if tt.wantErr {
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
} else {
|
} else {
|
||||||
result, queryErr := ctx.Query(tt.key)
|
query := tt.query
|
||||||
|
if query == "" {
|
||||||
|
query = tt.key
|
||||||
|
}
|
||||||
|
result, queryErr := ctx.Query(query)
|
||||||
if tt.wantQueryErr {
|
if tt.wantQueryErr {
|
||||||
assert.Error(t, queryErr)
|
assert.Error(t, queryErr)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Reference in a new issue