diff --git a/test/unit/gen/challenge.go b/test/unit/gen/challenge.go new file mode 100644 index 000000000..b47d77584 --- /dev/null +++ b/test/unit/gen/challenge.go @@ -0,0 +1,83 @@ +/* +Copyright 2018 The Jetstack cert-manager contributors. + +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 gen + +import ( + "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1alpha1" +) + +type ChallengeModifier func(*v1alpha1.Challenge) + +func Challenge(name string, mods ...ChallengeModifier) *v1alpha1.Challenge { + c := &v1alpha1.Challenge{ + ObjectMeta: ObjectMeta(name), + } + for _, mod := range mods { + mod(c) + } + return c +} + +func ChallengeFrom(ch *v1alpha1.Challenge, mods ...ChallengeModifier) *v1alpha1.Challenge { + for _, mod := range mods { + mod(ch) + } + return ch +} + +func SetChallengeType(t string) ChallengeModifier { + return func(ch *v1alpha1.Challenge) { + ch.Spec.Type = t + } +} + +// SetIssuer sets the challenge.spec.issuerRef field +func SetChallengeIssuer(o v1alpha1.ObjectReference) ChallengeModifier { + return func(c *v1alpha1.Challenge) { + c.Spec.IssuerRef = o + } +} + +func SetChallengeDNSName(dnsName string) ChallengeModifier { + return func(ch *v1alpha1.Challenge) { + ch.Spec.DNSName = dnsName + } +} + +func SetChallengePresented(p bool) ChallengeModifier { + return func(ch *v1alpha1.Challenge) { + ch.Status.Presented = p + } +} + +func SetChallengeState(s v1alpha1.State) ChallengeModifier { + return func(ch *v1alpha1.Challenge) { + ch.Status.State = s + } +} + +func SetChallengeReason(s string) ChallengeModifier { + return func(ch *v1alpha1.Challenge) { + ch.Status.Reason = s + } +} + +func SetChallengeURL(s string) ChallengeModifier { + return func(ch *v1alpha1.Challenge) { + ch.Spec.URL = s + } +} diff --git a/test/unit/gen/doc.go b/test/unit/gen/doc.go new file mode 100644 index 000000000..d4e50ceb0 --- /dev/null +++ b/test/unit/gen/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2018 The Jetstack cert-manager contributors. + +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 gen implements helper functions to construct API resource test fixtures. +package gen diff --git a/test/unit/gen/objectmeta.go b/test/unit/gen/objectmeta.go new file mode 100644 index 000000000..ef98c3112 --- /dev/null +++ b/test/unit/gen/objectmeta.go @@ -0,0 +1,46 @@ +/* +Copyright 2018 The Jetstack cert-manager contributors. + +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 gen + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + // DefaultTestNamespace is the default namespace set on resources that + // are namespaced. + DefaultTestNamespace = "default-unit-test-ns" +) + +// ObjectMetaModifier applies a transformation to the provider ObjectMeta +type ObjectMetaModifier func(*metav1.ObjectMeta) + +// ObjectMeta creates a new metav1.ObjectMeta with the given name, optionally +// applying the provided ObjectMetaModifiers. +// It applies a DefaultTestNamespace by default. +// Cluster-scoped resource generators should explicitly add `SetNamespace("")` +// to their constructors. +func ObjectMeta(name string, mods ...ObjectMetaModifier) metav1.ObjectMeta { + m := &metav1.ObjectMeta{ + Name: name, + Namespace: DefaultTestNamespace, + } + for _, mod := range mods { + mod(m) + } + return *m +}