mirror of https://github.com/knative/client.git
181 lines
5.5 KiB
Go
181 lines
5.5 KiB
Go
// Copyright © 2022 The Knative Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package v1beta1
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"gotest.tools/v3/assert"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
client_testing "k8s.io/client-go/testing"
|
|
"knative.dev/eventing/pkg/apis/eventing/v1beta1"
|
|
"knative.dev/eventing/pkg/client/clientset/versioned/typed/eventing/v1beta1/fake"
|
|
"knative.dev/pkg/apis"
|
|
)
|
|
|
|
const (
|
|
testNamespace = "test-ns"
|
|
testBroker = "test-broker"
|
|
testSource = "test.source"
|
|
testType = "test-type"
|
|
testName = "test-eventtype"
|
|
errName = "error-eventtype"
|
|
)
|
|
|
|
func setup(ns string) (fakeSvr fake.FakeEventingV1beta1, client KnEventingV1Beta1Client) {
|
|
fakeE := fake.FakeEventingV1beta1{Fake: &client_testing.Fake{}}
|
|
cli := NewKnEventingV1Beta1Client(&fakeE, ns)
|
|
return fakeE, cli
|
|
}
|
|
|
|
func TestNamespace(t *testing.T) {
|
|
_, client := setup(testNamespace)
|
|
assert.Equal(t, testNamespace, client.Namespace())
|
|
}
|
|
|
|
func TestBuilder(t *testing.T) {
|
|
et := newEventtypeWithSourceBroker(testName, testSource, testBroker)
|
|
assert.Equal(t, et.Name, testName)
|
|
assert.Equal(t, et.Spec.Broker, testBroker)
|
|
source := et.Spec.Source
|
|
assert.Assert(t, source != nil)
|
|
assert.Equal(t, source.String(), testSource)
|
|
}
|
|
|
|
func TestKnEventingV1Beta1Client_CreateEventtype(t *testing.T) {
|
|
server, client := setup(testNamespace)
|
|
|
|
server.AddReactor("create", "eventtypes",
|
|
func(a client_testing.Action) (bool, runtime.Object, error) {
|
|
assert.Equal(t, testNamespace, a.GetNamespace())
|
|
|
|
name := a.(client_testing.CreateAction).GetObject().(metav1.Object).GetName()
|
|
if name == errName {
|
|
return true, nil, fmt.Errorf("error while creating eventtype %s", name)
|
|
}
|
|
return true, nil, nil
|
|
})
|
|
ctx := context.Background()
|
|
|
|
t.Run("create eventtype successfully", func(t *testing.T) {
|
|
objNew := newEventtype(testName)
|
|
err := client.CreateEventtype(ctx, objNew)
|
|
assert.NilError(t, err)
|
|
})
|
|
t.Run("create eventtype with source and broker successfully", func(t *testing.T) {
|
|
objNew := newEventtypeWithSourceBroker(testName, testSource, testBroker)
|
|
err := client.CreateEventtype(ctx, objNew)
|
|
assert.NilError(t, err)
|
|
})
|
|
t.Run("create eventtype with error", func(t *testing.T) {
|
|
objNew := newEventtype(errName)
|
|
err := client.CreateEventtype(ctx, objNew)
|
|
assert.ErrorContains(t, err, "error while creating eventtype")
|
|
})
|
|
}
|
|
|
|
func TestKnEventingV1Beta1Client_DeleteEventtype(t *testing.T) {
|
|
server, client := setup(testNamespace)
|
|
|
|
server.AddReactor("delete", "eventtypes",
|
|
func(a client_testing.Action) (bool, runtime.Object, error) {
|
|
assert.Equal(t, testNamespace, a.GetNamespace())
|
|
|
|
name := a.(client_testing.DeleteAction).GetName()
|
|
if name == errName {
|
|
return true, nil, fmt.Errorf("error while deleting eventtype %s", name)
|
|
}
|
|
return true, nil, nil
|
|
})
|
|
ctx := context.Background()
|
|
|
|
t.Run("delete eventtype successfully", func(t *testing.T) {
|
|
err := client.DeleteEventtype(ctx, testName)
|
|
assert.NilError(t, err)
|
|
})
|
|
t.Run("delete eventtype with error", func(t *testing.T) {
|
|
err := client.DeleteEventtype(ctx, errName)
|
|
assert.ErrorContains(t, err, "error while deleting eventtype")
|
|
})
|
|
}
|
|
|
|
func TestKnEventingV1Beta1Client_GetEventtype(t *testing.T) {
|
|
server, client := setup(testNamespace)
|
|
|
|
server.AddReactor("get", "eventtypes",
|
|
func(a client_testing.Action) (bool, runtime.Object, error) {
|
|
assert.Equal(t, testNamespace, a.GetNamespace())
|
|
|
|
name := a.(client_testing.GetAction).GetName()
|
|
if name == errName {
|
|
return true, nil, fmt.Errorf("error while getting eventtype %s", name)
|
|
}
|
|
return true, newEventtype(testName), nil
|
|
})
|
|
ctx := context.Background()
|
|
|
|
t.Run("get eventtype successfully", func(t *testing.T) {
|
|
et, err := client.GetEventtype(ctx, testName)
|
|
assert.NilError(t, err)
|
|
assert.Equal(t, et.Name, testName)
|
|
})
|
|
t.Run("get eventtype with error", func(t *testing.T) {
|
|
_, err := client.GetEventtype(ctx, errName)
|
|
assert.ErrorContains(t, err, "error while getting eventtype")
|
|
})
|
|
}
|
|
|
|
func TestKnEventingV1Beta1Client_ListEventtypes(t *testing.T) {
|
|
server, client := setup(testNamespace)
|
|
|
|
server.AddReactor("list", "eventtypes",
|
|
func(a client_testing.Action) (bool, runtime.Object, error) {
|
|
assert.Equal(t, testNamespace, a.GetNamespace())
|
|
|
|
return true, &v1beta1.EventTypeList{Items: []v1beta1.EventType{
|
|
*newEventtype("eventtype-1"),
|
|
*newEventtype("eventtype-2")}}, nil
|
|
})
|
|
ctx := context.Background()
|
|
|
|
list, err := client.ListEventtypes(ctx)
|
|
assert.NilError(t, err)
|
|
assert.Assert(t, list != nil)
|
|
assert.Equal(t, len(list.Items), 2)
|
|
assert.Equal(t, list.Items[0].Name, "eventtype-1")
|
|
assert.Equal(t, list.Items[1].Name, "eventtype-2")
|
|
}
|
|
|
|
func newEventtypeWithSourceBroker(name string, source string, broker string) *v1beta1.EventType {
|
|
url, _ := apis.ParseURL(source)
|
|
return NewEventtypeBuilder(name).
|
|
Namespace(testNamespace).
|
|
WithGvk().
|
|
Type(testType).
|
|
Source(url).
|
|
Broker(broker).
|
|
Build()
|
|
}
|
|
|
|
func newEventtype(name string) *v1beta1.EventType {
|
|
return NewEventtypeBuilder(name).
|
|
Namespace(testNamespace).
|
|
Type(testType).
|
|
Build()
|
|
}
|