mocks

package
v0.7.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 13, 2021 License: Apache-2.0 Imports: 16 Imported by: 0

README

Kubernetes API Mocks

This folder contains all mocks and machinery to interact with a fake Kubernetes API.

Usage

1. Instantiate Fake

Inside a testing function, instantiate Fake by sharing the test context t and namespace name:

import "github.com/redhat-developer/service-binding-operator/test/mocks"

f := mocks.NewFake(t, "namespace")
2. Add Mocked Objects

Add mocked objects are you need.

f.AddMockedUnstructuredSecret("db-credentials")
3. Instantiate API Clients

Instantiate a fake API client, with:

fakeClient := f.FakeClient()
fakeDynamicClient := f.FakeDynClient()

Unstructured List vs. Typed Resource

As you may notice, in mocks.go we have methods returning typed Kubernetes objects, and sometimes returning unstructured.Unstructured. That happens because when using List with the dynamic client, it fails on parsing objects inside:

item[0]: can't assign or convert v1alpha1.ClusterServiceVersion into unstructured.Unstructured

However, using Unstructured it does not fail during testing.

Documentation

Index

Constants

View Source
const (
	// Fixme(Akash): This values are tightly coupled with postgresql operator.
	// Need to make it more dynamic.
	CRDName    = "postgresql.baiju.dev"
	CRDVersion = "v1alpha1"
	CRDKind    = "Database"
)

resource details employed in mocks

Variables

View Source
var (
	// DBNameSpecDesc default spec descriptor to inform the database name.
	DBNameSpecDesc = olmv1alpha1.SpecDescriptor{
		DisplayName:  "Database Name",
		Description:  "Database Name",
		Path:         "dbName",
		XDescriptors: []string{"binding:env:attribute"},
	}
	ImageSpecDesc = olmv1alpha1.SpecDescriptor{
		Path:         "image",
		DisplayName:  "Image",
		Description:  "Image Name",
		XDescriptors: nil,
	}
	// DBNameSpecDesc default spec descriptor to inform the database name.
	DBNameSpecIp = olmv1alpha1.SpecDescriptor{
		DisplayName:  "Database IP",
		Description:  "Database IP",
		Path:         "dbConnectionIp",
		XDescriptors: []string{"binding:env:attribute"},
	}
	// DBConfigMapSpecDesc spec descriptor to describe a operator that export username and password
	// via config-map, instead of a usual secret.
	DBConfigMapSpecDesc = olmv1alpha1.SpecDescriptor{
		DisplayName: "DB ConfigMap",
		Description: "Database ConfigMap",
		Path:        "dbConfigMap",
		XDescriptors: []string{
			"urn:alm:descriptor:io.kubernetes:ConfigMap",
			"binding:env:object:configmap:username",
			"binding:env:object:configmap:password",
		},
	}
	// DBPasswordCredentialsOnEnvStatusDesc status descriptor to describe a database operator that
	// publishes username and password over a secret. Default approach.
	DBPasswordCredentialsOnEnvStatusDesc = olmv1alpha1.StatusDescriptor{
		DisplayName: "DB Password Credentials",
		Description: "Database credentials secret",
		Path:        "dbCredentials",
		XDescriptors: []string{
			"urn:alm:descriptor:io.kubernetes:Secret",
			"binding:env:object:secret:username",
			"binding:env:object:secret:password",
		},
	}
	// DBPasswordCredentialsOnVolumeMountStatusDesc status descriptor to describe a operator that
	// informs credentials via a volume.
	DBPasswordCredentialsOnVolumeMountStatusDesc = olmv1alpha1.StatusDescriptor{
		DisplayName: "DB Password Credentials",
		Description: "Database credentials secret",
		Path:        "dbCredentials",
		XDescriptors: []string{
			"urn:alm:descriptor:io.kubernetes:Secret",
			"binding:volumemount:secret:username",
			"binding:volumemount:secret:password",
		},
	}
)

Functions

func CRDDescriptionMock

func CRDDescriptionMock() olmv1alpha1.CRDDescription

CRDDescriptionMock based on PostgreSQL operator, returning a mock using default third party operator setup.

func CRDDescriptionVolumeMountMock

func CRDDescriptionVolumeMountMock() olmv1alpha1.CRDDescription

CRDDescriptionVolumeMountMock based on PostgreSQL operator, returns a mock having credentials in a volume.

func ClusterServiceVersionListMock

func ClusterServiceVersionListMock(ns, name string) *olmv1alpha1.ClusterServiceVersionList

ClusterServiceVersionListMock returns a list with a single CSV object inside, reusing mock.

func ClusterServiceVersionListVolumeMountMock

func ClusterServiceVersionListVolumeMountMock(ns, name string) *olmv1alpha1.ClusterServiceVersionList

ClusterServiceVersionListVolumeMountMock returns a list with a single CSV object inside, reusing mock.

func ClusterServiceVersionMock

func ClusterServiceVersionMock(ns, name string) olmv1alpha1.ClusterServiceVersion

ClusterServiceVersionMock based on PostgreSQL operator having what's expected as defaults.

func ClusterServiceVersionVolumeMountMock

func ClusterServiceVersionVolumeMountMock(ns, name string) olmv1alpha1.ClusterServiceVersion

ClusterServiceVersionVolumeMountMock based on PostgreSQL operator.

func ConfigMapMock

func ConfigMapMock(ns, name string) *corev1.ConfigMap

ConfigMapMock returns a dummy config-map object.

func DatabaseCRDMock added in v0.1.1

func DeploymentMock

func DeploymentMock(ns, name string, matchLabels map[string]string) appsv1.Deployment

DeploymentMock creates a mocked Deployment object of busybox.

func RouteCRMock added in v0.0.21

func RouteCRMock(ns, name string) *unstructured.Unstructured

func SecretMock

func SecretMock(ns, name string, data map[string][]byte) *corev1.Secret

SecretMock returns a Secret based on PostgreSQL operator usage.

func SecretMockRV added in v0.3.0

func SecretMockRV(ns, name string) *corev1.Secret

SecretMockRV returns a Secret with a resourceVersion.

func ServiceBindingMock added in v0.3.0

func ServiceBindingMock(
	ns string,
	name string,
	backingServiceNamespace *string,
	backingServiceResourceRef string,
	applicationResourceRef string,
	applicationGVR schema.GroupVersionResource,
	matchLabels map[string]string,
) *v1alpha1.ServiceBinding

ServiceBindingMock return a binding-request mock of informed name and match labels.

func UnstructuredClusterServiceVersionMock

func UnstructuredClusterServiceVersionMock(ns, name string) (*unstructured.Unstructured, error)

UnstructuredClusterServiceVersionMock unstructured object based on ClusterServiceVersionMock.

func UnstructuredClusterServiceVersionVolumeMountMock

func UnstructuredClusterServiceVersionVolumeMountMock(
	ns string,
	name string,
) (*unstructured.Unstructured, error)

UnstructuredClusterServiceVersionVolumeMountMock returns ClusterServiceVersionVolumeMountMock as unstructured object

func UnstructuredDatabaseCRDMock added in v0.1.1

func UnstructuredDatabaseCRDMock(ns string) (*unstructured.Unstructured, error)

func UnstructuredDatabaseCRMock added in v0.0.19

func UnstructuredDatabaseCRMock(ns, name string) *ustrv1.Unstructured

UnstructuredDatabaseCRMock returns a unstructured version of DatabaseCRMock.

func UnstructuredDatabaseConfigMapMock added in v0.0.19

func UnstructuredDatabaseConfigMapMock(ns, name, configMapName string) (*unstructured.Unstructured, error)

UnstructuredDatabaseConfigMapMock returns a unstructured version of DatabaseConfigMapMock.

func UnstructuredDeploymentConfigMock added in v0.1.1

func UnstructuredDeploymentConfigMock(ns, name string) *ustrv1.Unstructured

UnstructuredDeploymentConfigMock converts the DeploymentMock to unstructured.

func UnstructuredDeploymentMock

func UnstructuredDeploymentMock(
	ns,
	name string,
	matchLabels map[string]string,
) (*unstructured.Unstructured, error)

UnstructuredDeploymentMock converts the DeploymentMock to unstructured.

func UnstructuredKnativeServiceMock added in v0.1.1

func UnstructuredKnativeServiceMock(
	ns,
	name string,
	matchLabels map[string]string,
) *ustrv1.Unstructured

UnstructuredKnativeServiceMock converts the KnativeServiceMock to unstructured.

func UnstructuredNestedDatabaseCRMock added in v0.0.19

func UnstructuredNestedDatabaseCRMock(ns, name string) (*unstructured.Unstructured, error)

UnstructuredNestedDatabaseCRMock returns a unstructured object from NestedDatabaseCRMock.

func UnstructuredPostgresDatabaseCRMock added in v0.1.1

func UnstructuredPostgresDatabaseCRMock(ns, name string) (*unstructured.Unstructured, error)

func UnstructuredSecretMock added in v0.1.1

func UnstructuredSecretMock(ns, name string) (*unstructured.Unstructured, error)

func UnstructuredSecretMockRV added in v0.3.0

func UnstructuredSecretMockRV(ns, name string) (*unstructured.Unstructured, error)

func UnstructuredServiceBindingMock added in v0.3.0

func UnstructuredServiceBindingMock(
	ns string,
	name string,
	backingServiceResourceRef string,
	applicationResourceRef string,
	applicationGVR schema.GroupVersionResource,
	matchLabels map[string]string,
) (*unstructured.Unstructured, error)

UnstructuredServiceBindingMock returns a unstructured version of SBR.

Types

type ConfigMapDatabase

type ConfigMapDatabase struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec ConfigMapDatabaseSpec `json:"spec,omitempty"`
}

ConfigMapDatabase ...

func DatabaseConfigMapMock

func DatabaseConfigMapMock(ns, name, configMapName string) *ConfigMapDatabase

DatabaseConfigMapMock returns a local ConfigMapDatabase object.

type ConfigMapDatabaseSpec

type ConfigMapDatabaseSpec struct {
	DBConfigMap string `json:"dbConfigMap"`
	ImageName   string
	Image       string
}

ConfigMapDatabaseSpec ...

type Fake

type Fake struct {
	S *runtime.Scheme // runtime client scheme
	// contains filtered or unexported fields
}

Fake defines all the elements to fake a kubernetes api client.

func NewFake

func NewFake(t *testing.T, ns string) *Fake

NewFake instantiate Fake type.

func (*Fake) AddMockResource added in v0.0.21

func (f *Fake) AddMockResource(resource runtime.Object)

func (*Fake) AddMockedCSVList

func (f *Fake) AddMockedCSVList(name string)

AddMockedCSVList add mocked object from ClusterServiceVersionListMock.

func (*Fake) AddMockedCSVWithVolumeMountList

func (f *Fake) AddMockedCSVWithVolumeMountList(name string)

AddMockedCSVWithVolumeMountList add mocked object from ClusterServiceVersionListVolumeMountMock.

func (*Fake) AddMockedDatabaseCR added in v0.0.19

func (f *Fake) AddMockedDatabaseCR(ref string, namespace string) runtime.Object

AddMockedDatabaseCR add mocked object from DatabaseCRMock.

func (*Fake) AddMockedServiceBinding added in v0.3.0

func (f *Fake) AddMockedServiceBinding(
	name string,
	backingServiceNamespace *string,
	backingServiceResourceRef string,
	applicationResourceRef string,
	applicationGVR schema.GroupVersionResource,
	matchLabels map[string]string,
) *v1alpha1.ServiceBinding

AddMockedServiceBinding add mocked object from ServiceBindingMock.

func (*Fake) AddMockedServiceBindingWithUnannotated added in v0.3.0

func (f *Fake) AddMockedServiceBindingWithUnannotated(
	name string,
	backingServiceResourceRef string,
	applicationResourceRef string,
	applicationGVR schema.GroupVersionResource,
	matchLabels map[string]string,
) *v1alpha1.ServiceBinding

AddMockedServiceBindingWithUnannotated add mocked object from ServiceBindingMock with DetectBindingResources.

func (*Fake) AddMockedUnstructuredCSV

func (f *Fake) AddMockedUnstructuredCSV(name string)

AddMockedUnstructuredCSV add mocked unstructured CSV.

func (*Fake) AddMockedUnstructuredCSVWithVolumeMount

func (f *Fake) AddMockedUnstructuredCSVWithVolumeMount(name string)

AddMockedUnstructuredCSVWithVolumeMount same than AddMockedCSVWithVolumeMountList but using unstructured object.

func (*Fake) AddMockedUnstructuredConfigMap added in v0.1.1

func (f *Fake) AddMockedUnstructuredConfigMap(name string)

AddMockedUnstructuredConfigMap add mocked object from ConfigMapMock.

func (*Fake) AddMockedUnstructuredDatabaseCR added in v0.0.19

func (f *Fake) AddMockedUnstructuredDatabaseCR(ref string)

func (*Fake) AddMockedUnstructuredDatabaseCRD added in v0.1.1

func (f *Fake) AddMockedUnstructuredDatabaseCRD() *unstructured.Unstructured

func (*Fake) AddMockedUnstructuredDeployment

func (f *Fake) AddMockedUnstructuredDeployment(name string, matchLabels map[string]string) *unstructured.Unstructured

AddMockedUnstructuredDeployment add mocked object from UnstructuredDeploymentMock.

func (*Fake) AddMockedUnstructuredDeploymentConfig added in v0.1.1

func (f *Fake) AddMockedUnstructuredDeploymentConfig(name string, matchLabels map[string]string)

AddMockedUnstructuredDeploymentConfig adds mocked object from UnstructuredDeploymentConfigMock.

func (*Fake) AddMockedUnstructuredKnativeService added in v0.1.1

func (f *Fake) AddMockedUnstructuredKnativeService(name string, matchLabels map[string]string)

AddMockedUnstructuredKnativeService add mocked object from UnstructuredKnativeService.

func (*Fake) AddMockedUnstructuredPostgresDatabaseCR added in v0.1.1

func (f *Fake) AddMockedUnstructuredPostgresDatabaseCR(ref string) *unstructured.Unstructured

func (*Fake) AddMockedUnstructuredSecret added in v0.1.1

func (f *Fake) AddMockedUnstructuredSecret(name string) *unstructured.Unstructured

AddMockedUnstructuredSecret add mocked object from SecretMock.

func (*Fake) AddMockedUnstructuredSecretRV added in v0.3.0

func (f *Fake) AddMockedUnstructuredSecretRV(name string) *unstructured.Unstructured

AddMockedUnstructuredSecret add mocked object from SecretMock. This secret is created with a resourceVersion

func (*Fake) AddMockedUnstructuredServiceBinding added in v0.3.0

func (f *Fake) AddMockedUnstructuredServiceBinding(
	name string,
	backingServiceResourceRef string,
	applicationResourceRef string,
	applicationGVR schema.GroupVersionResource,
	matchLabels map[string]string,
) *unstructured.Unstructured

AddMockedUnstructuredServiceBinding creates a mock ServiceBinding object

func (*Fake) AddMockedUnstructuredServiceBindingWithoutApplication added in v0.3.0

func (f *Fake) AddMockedUnstructuredServiceBindingWithoutApplication(
	name string,
	backingServiceResourceRef string,
) *unstructured.Unstructured

AddMockedUnstructuredServiceBindingWithoutApplication creates a mock ServiceBinding object

func (*Fake) AddMockedUnstructuredServiceBindingWithoutService added in v0.4.0

func (f *Fake) AddMockedUnstructuredServiceBindingWithoutService(
	name string,
	applicationResourceRef string,
	applicationGVR schema.GroupVersionResource,
) *unstructured.Unstructured

AddMockedUnstructuredServiceBindingWithoutApplication creates a mock ServiceBinding object

func (*Fake) AddNamespacedMockedSecret added in v0.1.1

func (f *Fake) AddNamespacedMockedSecret(name string, namespace string, data map[string][]byte)

AddNamespacedMockedSecret add mocked object from SecretMock in a namespace which isn't necessarily same as that of the ServiceBinding namespace.

func (*Fake) FakeDynClient

func (f *Fake) FakeDynClient() *fakedynamic.FakeDynamicClient

FakeDynClient returns fake dynamic api client.

type NestedDatabase

type NestedDatabase struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec NestedDatabaseSpec `json:"spec,omitempty"`
}

NestedDatabase ...

func NestedDatabaseCRMock

func NestedDatabaseCRMock(ns, name string) NestedDatabase

NestedDatabaseCRMock based on PostgreSQL operator, returning a instantiated object.

type NestedDatabaseSpec

type NestedDatabaseSpec struct {
	Image NestedImage `json:"image"`
}

NestedDatabaseSpec ...

type NestedImage

type NestedImage struct {
	Name       string     `json:"name"`
	ThirdLevel ThirdLevel `json:"third"`
}

NestedImage ...

type PostgresDatabase added in v0.1.1

type PostgresDatabase struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec PostgresDatabaseSpec `json:"spec,omitempty"`
}

func PostgresDatabaseCRMock added in v0.1.1

func PostgresDatabaseCRMock(ns, name string) PostgresDatabase

type PostgresDatabaseSpec added in v0.1.1

type PostgresDatabaseSpec struct {
	Username string `json:"username"`
}

type ThirdLevel

type ThirdLevel struct {
	Something string `json:"something"`
}

ThirdLevel ...

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL