...
1
16
17 package builder
18
19 import (
20 "testing"
21
22 . "github.com/onsi/ginkgo/v2"
23 . "github.com/onsi/gomega"
24 apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
25 "k8s.io/apimachinery/pkg/api/meta"
26 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27 "k8s.io/apimachinery/pkg/runtime/schema"
28 "k8s.io/client-go/rest"
29 metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
30
31 "sigs.k8s.io/controller-runtime/pkg/envtest"
32 "sigs.k8s.io/controller-runtime/pkg/internal/testing/addr"
33 logf "sigs.k8s.io/controller-runtime/pkg/log"
34 "sigs.k8s.io/controller-runtime/pkg/log/zap"
35 "sigs.k8s.io/controller-runtime/pkg/webhook"
36 )
37
38 func TestBuilder(t *testing.T) {
39 RegisterFailHandler(Fail)
40 RunSpecs(t, "application Suite")
41 }
42
43 var testenv *envtest.Environment
44 var cfg *rest.Config
45
46 var _ = BeforeSuite(func() {
47 logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true)))
48
49 testenv = &envtest.Environment{}
50 addCRDToEnvironment(testenv,
51 testDefaulterGVK,
52 testValidatorGVK,
53 testDefaultValidatorGVK)
54
55 var err error
56 cfg, err = testenv.Start()
57 Expect(err).NotTo(HaveOccurred())
58
59
60 metricsserver.DefaultBindAddress = "0"
61
62 webhook.DefaultPort, _, err = addr.Suggest("")
63 Expect(err).NotTo(HaveOccurred())
64 })
65
66 var _ = AfterSuite(func() {
67 Expect(testenv.Stop()).To(Succeed())
68
69
70 metricsserver.DefaultBindAddress = ":8080"
71
72
73 webhook.DefaultPort = 9443
74 })
75
76 func addCRDToEnvironment(env *envtest.Environment, gvks ...schema.GroupVersionKind) {
77 for _, gvk := range gvks {
78 plural, singular := meta.UnsafeGuessKindToResource(gvk)
79 crd := &apiextensionsv1.CustomResourceDefinition{
80 TypeMeta: metav1.TypeMeta{
81 APIVersion: "apiextensions.k8s.io/v1",
82 Kind: "CustomResourceDefinition",
83 },
84 ObjectMeta: metav1.ObjectMeta{
85 Name: plural.Resource + "." + gvk.Group,
86 },
87 Spec: apiextensionsv1.CustomResourceDefinitionSpec{
88 Group: gvk.Group,
89 Names: apiextensionsv1.CustomResourceDefinitionNames{
90 Plural: plural.Resource,
91 Singular: singular.Resource,
92 Kind: gvk.Kind,
93 },
94 Scope: apiextensionsv1.NamespaceScoped,
95 Versions: []apiextensionsv1.CustomResourceDefinitionVersion{
96 {
97 Name: gvk.Version,
98 Served: true,
99 Storage: true,
100 Schema: &apiextensionsv1.CustomResourceValidation{
101 OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{
102 Type: "object",
103 },
104 },
105 },
106 },
107 },
108 }
109 env.CRDInstallOptions.CRDs = append(env.CRDInstallOptions.CRDs, crd)
110 }
111 }
112
View as plain text