1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-09 01:16:55 +00:00
kyverno/pkg/dclient/client_test.go

161 lines
4.4 KiB
Go
Raw Normal View History

package client
2019-06-11 14:35:26 -07:00
import (
"testing"
policytypes "github.com/nirmata/kyverno/pkg/apis/policy/v1alpha1"
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
)
// GetResource
// ListResource
// CreateResource
// getGroupVersionMapper (valid and invalid resources)
2019-06-11 14:35:26 -07:00
//NewMockClient creates a mock client
// - dynamic client
// - kubernetes client
// - objects to initialize the client
2019-06-14 16:02:28 -07:00
type fixture struct {
t *testing.T
regresources map[string]string
objects []runtime.Object
client *Client
2019-06-11 14:35:26 -07:00
}
2019-06-14 16:02:28 -07:00
func newFixture(t *testing.T) *fixture {
2019-06-11 14:35:26 -07:00
regresource := map[string]string{"group/version": "thekinds",
"group2/version": "thekinds",
"v1": "namespaces",
"apps/v1": "deployments"}
2019-06-14 16:02:28 -07:00
2019-06-11 14:35:26 -07:00
objects := []runtime.Object{newUnstructured("group/version", "TheKind", "ns-foo", "name-foo"),
newUnstructured("group2/version", "TheKind", "ns-foo", "name2-foo"),
newUnstructured("group/version", "TheKind", "ns-foo", "name-bar"),
newUnstructured("group/version", "TheKind", "ns-foo", "name-baz"),
newUnstructured("group2/version", "TheKind", "ns-foo", "name2-baz"),
newUnstructured("apps/v1", "Deployment", "kyverno", "kyverno-deployment"),
}
2019-06-14 16:02:28 -07:00
scheme := runtime.NewScheme()
// Create mock client
2019-06-11 14:35:26 -07:00
client, err := NewMockClient(scheme, objects...)
if err != nil {
t.Fatal(err)
}
// set discovery Client
client.SetDiscovery(NewFakeDiscoveryClient(regresource))
2019-06-14 16:02:28 -07:00
f := fixture{
t: t,
regresources: regresource,
objects: objects,
client: client,
}
return &f
}
func TestCRUDResource(t *testing.T) {
f := newFixture(t)
2019-06-11 14:35:26 -07:00
// Get Resource
2019-06-14 16:02:28 -07:00
_, err := f.client.GetResource("thekinds", "ns-foo", "name-foo")
2019-06-11 14:35:26 -07:00
if err != nil {
2019-06-14 16:02:28 -07:00
t.Errorf("GetResource not working: %s", err)
2019-06-11 14:35:26 -07:00
}
// List Resources
2019-06-14 16:02:28 -07:00
_, err = f.client.ListResource("thekinds", "ns-foo")
2019-06-11 14:35:26 -07:00
if err != nil {
2019-06-14 16:02:28 -07:00
t.Errorf("ListResource not working: %s", err)
2019-06-11 14:35:26 -07:00
}
// DeleteResouce
2019-06-14 16:02:28 -07:00
err = f.client.DeleteResouce("thekinds", "ns-foo", "name-bar")
2019-06-11 14:35:26 -07:00
if err != nil {
2019-06-14 16:02:28 -07:00
t.Errorf("DeleteResouce not working: %s", err)
2019-06-11 14:35:26 -07:00
}
// CreateResource
2019-06-14 16:02:28 -07:00
_, err = f.client.CreateResource("thekinds", "ns-foo", newUnstructured("group/version", "TheKind", "ns-foo", "name-foo1"))
2019-06-11 14:35:26 -07:00
if err != nil {
2019-06-14 16:02:28 -07:00
t.Errorf("CreateResource not working: %s", err)
2019-06-11 14:35:26 -07:00
}
// UpdateResource
2019-06-14 16:02:28 -07:00
_, err = f.client.UpdateResource("thekinds", "ns-foo", newUnstructuredWithSpec("group/version", "TheKind", "ns-foo", "name-foo1", map[string]interface{}{"foo": "bar"}))
2019-06-11 14:35:26 -07:00
if err != nil {
2019-06-14 16:02:28 -07:00
t.Errorf("UpdateResource not working: %s", err)
2019-06-11 14:35:26 -07:00
}
// UpdateStatusResource
2019-06-14 16:02:28 -07:00
_, err = f.client.UpdateStatusResource("thekinds", "ns-foo", newUnstructuredWithSpec("group/version", "TheKind", "ns-foo", "name-foo1", map[string]interface{}{"foo": "status"}))
2019-06-11 14:35:26 -07:00
if err != nil {
2019-06-14 16:02:28 -07:00
t.Errorf("UpdateStatusResource not working: %s", err)
2019-06-11 14:35:26 -07:00
}
2019-06-14 16:02:28 -07:00
}
2019-06-11 14:35:26 -07:00
2019-06-14 16:02:28 -07:00
func TestEventInterface(t *testing.T) {
f := newFixture(t)
iEvent, err := f.client.GetEventsInterface()
2019-06-11 14:35:26 -07:00
if err != nil {
2019-06-14 16:02:28 -07:00
t.Errorf("GetEventsInterface not working: %s", err)
2019-06-11 14:35:26 -07:00
}
2019-06-14 16:02:28 -07:00
_, err = iEvent.List(meta.ListOptions{})
2019-06-11 14:35:26 -07:00
if err != nil {
2019-06-14 16:02:28 -07:00
t.Errorf("Testing Event interface not working: %s", err)
2019-06-11 14:35:26 -07:00
}
2019-06-14 16:02:28 -07:00
}
func TestCSRInterface(t *testing.T) {
f := newFixture(t)
iCSR, err := f.client.GetCSRInterface()
2019-06-11 14:35:26 -07:00
if err != nil {
2019-06-14 16:02:28 -07:00
t.Errorf("GetCSRInterface not working: %s", err)
2019-06-11 14:35:26 -07:00
}
2019-06-14 16:02:28 -07:00
_, err = iCSR.List(meta.ListOptions{})
2019-06-11 14:35:26 -07:00
if err != nil {
2019-06-14 16:02:28 -07:00
t.Errorf("Testing CSR interface not working: %s", err)
2019-06-11 14:35:26 -07:00
}
2019-06-14 16:02:28 -07:00
}
2019-06-11 14:35:26 -07:00
2019-06-14 16:02:28 -07:00
func TestGenerateResource(t *testing.T) {
f := newFixture(t)
2019-06-11 14:35:26 -07:00
//GenerateResource -> copy From
// 1 create namespace
// 2 generate resource
// create namespace
2019-06-14 16:02:28 -07:00
ns, err := f.client.CreateResource("namespaces", "", newUnstructured("v1", "Namespace", "", "ns1"))
2019-06-11 14:35:26 -07:00
if err != nil {
t.Fatal(err)
}
gen := policytypes.Generation{Kind: "TheKind",
Name: "gen-kind",
Clone: &policytypes.CloneFrom{Namespace: "ns-foo", Name: "name-foo"}}
2019-06-14 16:02:28 -07:00
err = f.client.GenerateResource(gen, ns.GetName())
2019-06-11 14:35:26 -07:00
if err != nil {
t.Fatal(err)
}
2019-06-14 16:02:28 -07:00
_, err = f.client.GetResource("thekinds", "ns1", "gen-kind")
2019-06-11 14:35:26 -07:00
if err != nil {
t.Fatal(err)
}
// GenerateResource -> data
gen = policytypes.Generation{Kind: "TheKind",
Name: "name2-baz-new",
Data: newUnstructured("group2/version", "TheKind", "ns1", "name2-baz-new")}
2019-06-14 16:02:28 -07:00
err = f.client.GenerateResource(gen, ns.GetName())
2019-06-11 14:35:26 -07:00
if err != nil {
t.Fatal(err)
}
2019-06-14 16:02:28 -07:00
_, err = f.client.GetResource("thekinds", "ns1", "name2-baz-new")
2019-06-11 14:35:26 -07:00
if err != nil {
t.Fatal(err)
}
2019-06-14 16:02:28 -07:00
}
2019-06-11 14:35:26 -07:00
2019-06-14 16:02:28 -07:00
func TestKubePolicyDeployment(t *testing.T) {
f := newFixture(t)
_, err := f.client.GetKubePolicyDeployment()
2019-06-11 14:35:26 -07:00
if err != nil {
t.Fatal(err)
}
}