mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-30 11:25:04 +00:00
chore: add more cli utils unit tests (#8243)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
This commit is contained in:
parent
381fbedf21
commit
75da97eabf
3 changed files with 143 additions and 0 deletions
6
cmd/cli/kubectl-kyverno/testdata/values/bad-format.yaml
vendored
Normal file
6
cmd/cli/kubectl-kyverno/testdata/values/bad-format.yaml
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
foo: bar
|
||||
|
||||
namespaceSelector:
|
||||
- name: test1
|
||||
labels:
|
||||
foo.com/managed-state: managed
|
14
cmd/cli/kubectl-kyverno/testdata/values/valid.yaml
vendored
Normal file
14
cmd/cli/kubectl-kyverno/testdata/values/valid.yaml
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
policies:
|
||||
- name: limit-configmap-for-sa
|
||||
resources:
|
||||
- name: any-configmap-name-good
|
||||
values:
|
||||
request.operation: UPDATE
|
||||
- name: any-configmap-name-bad
|
||||
values:
|
||||
request.operation: UPDATE
|
||||
|
||||
namespaceSelector:
|
||||
- name: test1
|
||||
labels:
|
||||
foo.com/managed-state: managed
|
123
cmd/cli/kubectl-kyverno/utils/values/load_test.go
Normal file
123
cmd/cli/kubectl-kyverno/utils/values/load_test.go
Normal file
|
@ -0,0 +1,123 @@
|
|||
package values
|
||||
|
||||
import (
|
||||
"os"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/go-git/go-billy/v5"
|
||||
"github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api"
|
||||
)
|
||||
|
||||
func Test_readFile(t *testing.T) {
|
||||
mustReadFile := func(path string) []byte {
|
||||
t.Helper()
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return data
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
f billy.Filesystem
|
||||
filepath string
|
||||
want []byte
|
||||
wantErr bool
|
||||
}{{
|
||||
name: "empty",
|
||||
filepath: "",
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
}, {
|
||||
name: "does not exist",
|
||||
filepath: "../../testdata/values/doesnotexist",
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
}, {
|
||||
name: "bad format",
|
||||
filepath: "../../testdata/values/bad-format.yaml",
|
||||
want: mustReadFile("../../testdata/values/bad-format.yaml"),
|
||||
wantErr: false,
|
||||
}, {
|
||||
name: "valid",
|
||||
filepath: "../../testdata/values/valid.yaml",
|
||||
want: mustReadFile("../../testdata/values/valid.yaml"),
|
||||
wantErr: false,
|
||||
}}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := readFile(tt.f, tt.filepath)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("readFile() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("readFile() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoad(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
f billy.Filesystem
|
||||
filepath string
|
||||
want *api.Values
|
||||
wantErr bool
|
||||
}{{
|
||||
name: "empty",
|
||||
filepath: "",
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
}, {
|
||||
name: "does not exist",
|
||||
filepath: "../../testdata/values/doesnotexist",
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
}, {
|
||||
name: "bad format",
|
||||
filepath: "../../testdata/values/bad-format.yaml",
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
}, {
|
||||
name: "valid",
|
||||
filepath: "../../testdata/values/valid.yaml",
|
||||
want: &api.Values{
|
||||
NamespaceSelectors: []api.NamespaceSelector{{
|
||||
Name: "test1",
|
||||
Labels: map[string]string{
|
||||
"foo.com/managed-state": "managed",
|
||||
},
|
||||
}},
|
||||
Policies: []api.Policy{{
|
||||
Name: "limit-configmap-for-sa",
|
||||
Resources: []api.Resource{{
|
||||
Name: "any-configmap-name-good",
|
||||
Values: map[string]interface{}{
|
||||
"request.operation": "UPDATE",
|
||||
},
|
||||
}, {
|
||||
Name: "any-configmap-name-bad",
|
||||
Values: map[string]interface{}{
|
||||
"request.operation": "UPDATE",
|
||||
},
|
||||
}},
|
||||
}},
|
||||
},
|
||||
wantErr: false,
|
||||
}}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := Load(tt.f, tt.filepath)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("Load() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("Load() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue