mocks

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: May 28, 2020 License: Apache-2.0 Imports: 23 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"
	OperatorKind       = "ServiceBindingRequest"
	OperatorAPIVersion = "apps.openshift.io/v1alpha1"
)

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 CRDDescriptionConfigMapMock

func CRDDescriptionConfigMapMock() olmv1alpha1.CRDDescription

CRDDescriptionConfigMapMock based on PostgreSQL operator, returns a mock using configmap based spec-descriptor

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 CreateEtcdClusterMock added in v0.1.1

func CreateEtcdClusterMock(ns, name string) (*v1beta2.EtcdCluster, *corev1.Service)

CreateEtcdClusterMock returns all the resources required to setup an etcd cluster using etcd-operator. It creates following resources. 1. EtcdCluster resource. 2. Service(this gets created in etcd reconcile loop).

func DatabaseCRDMock added in v0.1.1

func DatabaseCRMock

func DatabaseCRMock(ns, name string) *pgv1alpha1.Database

DatabaseCRMock based on PostgreSQL operator, returning a instantiated object.

func DeploymentConfigListMock added in v0.1.1

func DeploymentConfigListMock(ns, name string, matchLabels map[string]string) ocav1.DeploymentConfigList

DeploymentConfigListMock returns a list of DeploymentMock.

func DeploymentConfigMock added in v0.1.1

func DeploymentConfigMock(ns, name string, matchLabels map[string]string) ocav1.DeploymentConfig

DeploymentConfigMock creates a mocked Deployment object of busybox.

func DeploymentListMock

func DeploymentListMock(ns, name string, matchLabels map[string]string) appsv1.DeploymentList

DeploymentListMock returns a list of DeploymentMock.

func DeploymentMock

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

DeploymentMock creates a mocked Deployment object of busybox.

func KnativeServiceListMock added in v0.1.1

func KnativeServiceListMock(ns, name string, matchLabels map[string]string) knativev1.ServiceList

KnativeServiceListMock returns a list of KnativeServiceMock.

func KnativeServiceMock added in v0.1.1

func KnativeServiceMock(ns, name string, matchLabels map[string]string) knativev1.Service

KnativeServiceMock creates a mocked knative serivce object of busybox.

func MultiNamespaceServiceBindingRequestMock added in v0.1.1

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

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

func RouteCRMock added in v0.0.21

func RouteCRMock(ns, name string) *ocv1.Route

func SecretMock

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

SecretMock returns a Secret based on PostgreSQL operator usage.

func ServiceBindingRequestMock

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

ServiceBindingRequestMock 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) (*unstructured.Unstructured, error)

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,
	matchLabels map[string]string,
) (*ustrv1.Unstructured, error)

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, error)

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 UnstructuredServiceBindingRequestMock added in v0.0.19

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

UnstructuredServiceBindingRequestMock 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) AddMockedServiceBindingRequest

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

AddMockedServiceBindingRequest add mocked object from ServiceBindingRequestMock.

func (*Fake) AddMockedServiceBindingRequestWithUnannotated added in v0.0.21

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

AddMockedServiceBindingRequestWithUnannotated add mocked object from ServiceBindingRequestMock 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) AddMockedUnstructuredServiceBindingRequest added in v0.0.19

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

AddMockedUnstructuredServiceBindingRequest creates a mock ServiceBindingRequest object

func (*Fake) AddMockedUnstructuredServiceBindingRequestWithoutApplication added in v0.1.1

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

AddMockedUnstructuredServiceBindingRequestWithoutApplication creates a mock ServiceBindingRequest object

func (*Fake) AddNamespacedMockedSecret added in v0.1.1

func (f *Fake) AddNamespacedMockedSecret(name string, namespace string)

AddNamespacedMockedSecret add mocked object from SecretMock in a namespace which isn't necessarily same as that of the ServiceBindingRequest 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