Documentation
¶
Index ¶
- func AssertHasNoObject(t assert.TestingT, c client.Client, o client.Object, msgAndArgs ...interface{}) bool
- func AssertHasObject(t assert.TestingT, c client.Client, o client.Object, msgAndArgs ...interface{}) bool
- func CreateOrUpdateAll(t require.TestingT, ctx context.Context, c client.Client, ...)
- func FilterUnstructuredObjects(objects []*unstructured.Unstructured, filters ...Filter) []*unstructured.Unstructured
- func RequireHasNoObject(t require.TestingT, c client.Client, o client.Object, ...)
- func RequireHasObject(t require.TestingT, c client.Client, o client.Object, ...)
- type Filter
- func ExcludeObject(selector ObjectSelector) Filter
- func ExtractObjectField[T interface{}](t require.TestingT, selector ObjectSelector, dest *T, fields ...string) Filter
- func ExtractObjectName(selector ObjectSelector, dest *string) Filter
- func ExtractObjectNamespace(selector ObjectSelector, dest *string) Filter
- type IncludeFilterFunc
- type MutateFilterFunc
- type ObjectSelector
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AssertHasNoObject ¶
func AssertHasNoObject(t assert.TestingT, c client.Client, o client.Object, msgAndArgs ...interface{}) bool
Example ¶
package main import ( "fmt" k8stestutils "github.com/adevinta/go-k8s-toolkit/testutils" testutils "github.com/adevinta/go-testutils-toolkit" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client/fake" ) func main() { // use the real *testing.T from the test t := &testutils.FakeTest{Name: "TestMyObjectDoesNotExist"} client := fake.NewClientBuilder().Build() k8stestutils.AssertHasNoObject(t, client, &v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "my-namespace", }, }) // Usually, this is done by the go framework fmt.Println(t) }
Output: --- PASS: TestMyObjectDoesNotExist
func AssertHasObject ¶
func AssertHasObject(t assert.TestingT, c client.Client, o client.Object, msgAndArgs ...interface{}) bool
Example ¶
package main import ( "fmt" k8stestutils "github.com/adevinta/go-k8s-toolkit/testutils" testutils "github.com/adevinta/go-testutils-toolkit" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client/fake" ) func main() { // use the real *testing.T from the test t := &testutils.FakeTest{Name: "TestMyObjectExists"} client := fake.NewClientBuilder().Build() k8stestutils.AssertHasObject(t, client, &v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "my-namespace", }, }) // Usually, this is done by the go framework fmt.Println(t) }
Output: --- FAIL: TestMyObjectExists
func CreateOrUpdateAll ¶
func CreateOrUpdateAll(t require.TestingT, ctx context.Context, c client.Client, objects ...client.Object)
Example ¶
package main import ( "context" "fmt" k8stestutils "github.com/adevinta/go-k8s-toolkit/testutils" testutils "github.com/adevinta/go-testutils-toolkit" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client/fake" ) func main() { // use the real *testing.T from the test t := &testutils.FakeTest{Name: "TestICanCreateObjects"} client := fake.NewClientBuilder().Build() k8stestutils.CreateOrUpdateAll(t, context.Background(), client, &v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "my-namespace", }, }) k8stestutils.AssertHasObject(t, client, &v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "my-namespace", }, }) // Usually, this is done by the go framework fmt.Println(t) }
Output: --- PASS: TestICanCreateObjects
func FilterUnstructuredObjects ¶
func FilterUnstructuredObjects(objects []*unstructured.Unstructured, filters ...Filter) []*unstructured.Unstructured
func RequireHasNoObject ¶
func RequireHasNoObject(t require.TestingT, c client.Client, o client.Object, msgAndArgs ...interface{})
Example ¶
package main import ( "fmt" k8stestutils "github.com/adevinta/go-k8s-toolkit/testutils" testutils "github.com/adevinta/go-testutils-toolkit" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client/fake" ) func main() { // use the real *testing.T from the test t := &testutils.FakeTest{Name: "TestMyObjectDoesNotExist"} client := fake.NewClientBuilder().WithObjects(&v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "my-namespace", }, }).Build() k8stestutils.RequireHasNoObject(t, client, &v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "my-namespace", }, }) // Usually, this is done by the go framework fmt.Println(t) }
Output: --- FAIL: TestMyObjectDoesNotExist
func RequireHasObject ¶
func RequireHasObject(t require.TestingT, c client.Client, o client.Object, msgAndArgs ...interface{})
Example ¶
package main import ( "fmt" k8stestutils "github.com/adevinta/go-k8s-toolkit/testutils" testutils "github.com/adevinta/go-testutils-toolkit" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client/fake" ) func main() { // use the real *testing.T from the test t := &testutils.FakeTest{Name: "TestMyObjectExists"} client := fake.NewClientBuilder().WithObjects(&v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "my-namespace", }, }).Build() k8stestutils.RequireHasObject(t, client, &v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "my-namespace", }, }) // Usually, this is done by the go framework fmt.Println(t) }
Output: --- PASS: TestMyObjectExists
Types ¶
type Filter ¶
type Filter interface { Include(*unstructured.Unstructured) bool Mutate(*unstructured.Unstructured) *unstructured.Unstructured }
func ExcludeObject ¶
func ExcludeObject(selector ObjectSelector) Filter
func ExtractObjectField ¶
func ExtractObjectField[T interface{}](t require.TestingT, selector ObjectSelector, dest *T, fields ...string) Filter
Example ¶
package main import ( "encoding/json" "os" k8stestutils "github.com/adevinta/go-k8s-toolkit/testutils" testutils "github.com/adevinta/go-testutils-toolkit" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) func main() { // use the real *testing.T from the test t := &testutils.FakeTest{Name: "TestICanExtractObjectFields"} labels := map[string]string{} myObjects := []*unstructured.Unstructured{ { Object: map[string]interface{}{ "kind": "ConfigMap", "metadata": map[string]interface{}{ "namespace": "my-namespace", "name": "my-cm", "labels": map[string]string{ "my": "label", }, }, }, }, { Object: map[string]interface{}{ "kind": "ConfigMap", "metadata": map[string]interface{}{ "namespace": "other", "name": "other", }, }, }, } k8stestutils.FilterUnstructuredObjects(myObjects, k8stestutils.ExtractObjectField(t, k8stestutils.And(k8stestutils.WithKind("ConfigMap"), k8stestutils.WithName("my-cm")), &labels, "metadata", "labels")) json.NewEncoder(os.Stdout).Encode(labels) }
Output: {"my":"label"}
func ExtractObjectName ¶
func ExtractObjectName(selector ObjectSelector, dest *string) Filter
Example ¶
package main import ( "fmt" k8stestutils "github.com/adevinta/go-k8s-toolkit/testutils" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) func main() { name := "unknown" myObjects := []*unstructured.Unstructured{ { Object: map[string]interface{}{ "kind": "ConfigMap", "metadata": map[string]interface{}{ "namespace": "my-namespace", "name": "my-cm", }, }, }, { Object: map[string]interface{}{ "kind": "Secret", "metadata": map[string]interface{}{ "namespace": "my-namespace", "name": "my-secret", }, }, }, } k8stestutils.FilterUnstructuredObjects(myObjects, k8stestutils.ExtractObjectName(k8stestutils.WithKind("ConfigMap"), &name)) fmt.Println(name) }
Output: my-cm
func ExtractObjectNamespace ¶
func ExtractObjectNamespace(selector ObjectSelector, dest *string) Filter
Example ¶
package main import ( "fmt" k8stestutils "github.com/adevinta/go-k8s-toolkit/testutils" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) func main() { namespace := "unknown" myObjects := []*unstructured.Unstructured{ { Object: map[string]interface{}{ "kind": "ConfigMap", "metadata": map[string]interface{}{ "namespace": "my-namespace", "name": "my-cm", }, }, }, { Object: map[string]interface{}{ "kind": "ConfigMap", "metadata": map[string]interface{}{ "namespace": "other", "name": "other", }, }, }, } k8stestutils.FilterUnstructuredObjects(myObjects, k8stestutils.ExtractObjectNamespace(k8stestutils.And(k8stestutils.WithKind("ConfigMap"), k8stestutils.WithName("my-cm")), &namespace)) fmt.Println(namespace) }
Output: my-namespace
type IncludeFilterFunc ¶
type IncludeFilterFunc func(*unstructured.Unstructured) bool
func (IncludeFilterFunc) Include ¶
func (f IncludeFilterFunc) Include(o *unstructured.Unstructured) bool
func (IncludeFilterFunc) Mutate ¶
func (f IncludeFilterFunc) Mutate(o *unstructured.Unstructured) *unstructured.Unstructured
type MutateFilterFunc ¶
type MutateFilterFunc func(*unstructured.Unstructured) *unstructured.Unstructured
func (MutateFilterFunc) Include ¶
func (f MutateFilterFunc) Include(o *unstructured.Unstructured) bool
func (MutateFilterFunc) Mutate ¶
func (f MutateFilterFunc) Mutate(o *unstructured.Unstructured) *unstructured.Unstructured
type ObjectSelector ¶
type ObjectSelector func(object *unstructured.Unstructured) bool
func And ¶
func And(selectors ...ObjectSelector) ObjectSelector
func WithKind ¶
func WithKind(kind string) ObjectSelector
func WithName ¶
func WithName(name string) ObjectSelector
func WithNamespace ¶
func WithNamespace(namespace string) ObjectSelector
Click to show internal directories.
Click to hide internal directories.