Add API fixture generator package
Signed-off-by: James Munnelly <james@munnelly.eu>
This commit is contained in:
parent
54d8ef7e8a
commit
fd52302891
83
test/unit/gen/challenge.go
Normal file
83
test/unit/gen/challenge.go
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
18
test/unit/gen/doc.go
Normal file
18
test/unit/gen/doc.go
Normal file
@ -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
|
||||
46
test/unit/gen/objectmeta.go
Normal file
46
test/unit/gen/objectmeta.go
Normal file
@ -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
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user