From a7e5df718260448cec141b378c416553c7b0383f Mon Sep 17 00:00:00 2001 From: Jason Costello Date: Mon, 8 Apr 2024 18:24:00 -0400 Subject: [PATCH] Adding API defaults unit test + testfile fixture Signed-off-by: Jason Costello --- .../cainjector/v1alpha1/defaults_test.go | 40 +++++++++++++++++++ .../cainjector/v1alpha1/test/apidefaults.go | 23 +++++++++++ .../cainjector/v1alpha1/test/defaults.json | 1 + make/test.mk | 4 ++ 4 files changed, 68 insertions(+) create mode 100644 internal/apis/config/cainjector/v1alpha1/defaults_test.go create mode 100644 internal/apis/config/cainjector/v1alpha1/test/apidefaults.go create mode 100644 internal/apis/config/cainjector/v1alpha1/test/defaults.json diff --git a/internal/apis/config/cainjector/v1alpha1/defaults_test.go b/internal/apis/config/cainjector/v1alpha1/defaults_test.go new file mode 100644 index 000000000..5aa29a681 --- /dev/null +++ b/internal/apis/config/cainjector/v1alpha1/defaults_test.go @@ -0,0 +1,40 @@ +package v1alpha1 + +import ( + "encoding/json" + "github.com/cert-manager/cert-manager/pkg/apis/config/cainjector/v1alpha1" + "os" + "reflect" + "testing" +) + +func TestCAInjectorConfigurationDefaults(t *testing.T) { + tests := []struct { + name string + config *v1alpha1.CAInjectorConfiguration + }{ + { + "cainjection", + &v1alpha1.CAInjectorConfiguration{}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + SetObjectDefaults_CAInjectorConfiguration(tt.config) + + var expected *v1alpha1.CAInjectorConfiguration + expectedData, err := os.ReadFile("./test/defaults.json") + err = json.Unmarshal(expectedData, &expected) + + if err != nil { + t.Errorf("testfile not found") + } + + if !reflect.DeepEqual(tt.config, expected) { + prettyExpected, _ := json.MarshalIndent(expected, "", "\t") + prettyGot, _ := json.MarshalIndent(tt.config, "", "\t") + t.Errorf("expected defaults\n %v \n but got \n %v", string(prettyExpected), string(prettyGot)) + } + }) + } +} diff --git a/internal/apis/config/cainjector/v1alpha1/test/apidefaults.go b/internal/apis/config/cainjector/v1alpha1/test/apidefaults.go new file mode 100644 index 000000000..d157545a0 --- /dev/null +++ b/internal/apis/config/cainjector/v1alpha1/test/apidefaults.go @@ -0,0 +1,23 @@ +package main + +import ( + "encoding/json" + "fmt" + v1alpha1_pkg "github.com/cert-manager/cert-manager/internal/apis/config/cainjector/v1alpha1" + "github.com/cert-manager/cert-manager/pkg/apis/config/cainjector/v1alpha1" + "os" +) + +func main() { + config := &v1alpha1.CAInjectorConfiguration{} + v1alpha1_pkg.SetObjectDefaults_CAInjectorConfiguration(config) + data, err := json.Marshal(config) + if err != nil { + panic(err) + } + err = os.WriteFile("./defaults.json", data, 0644) + if err != nil { + panic(err) + } + fmt.Println("cainjector api defaults updated") +} diff --git a/internal/apis/config/cainjector/v1alpha1/test/defaults.json b/internal/apis/config/cainjector/v1alpha1/test/defaults.json new file mode 100644 index 000000000..eb726c08e --- /dev/null +++ b/internal/apis/config/cainjector/v1alpha1/test/defaults.json @@ -0,0 +1 @@ +{"leaderElectionConfig":{"enabled":true,"namespace":"kube-system","leaseDuration":60000000000,"renewDeadline":40000000000,"retryPeriod":15000000000},"enableDataSourceConfig":{"certificates":true},"enableInjectableConfig":{"validatingWebhookConfigurations":true,"mutatingWebhookConfigurations":true,"customResourceDefinitions":true,"apiServices":true},"enablePprof":false,"pprofAddress":"localhost:6060","logging":{"format":"text","flushFrequency":"5s","verbosity":0,"options":{"json":{"infoBufferSize":"0"}}}} \ No newline at end of file diff --git a/make/test.mk b/make/test.mk index 32d288717..e02d0768e 100644 --- a/make/test.mk +++ b/make/test.mk @@ -87,6 +87,10 @@ unit-test-controller: | $(NEEDS_GOTESTSUM) unit-test-webhook: | $(NEEDS_GOTESTSUM) cd cmd/webhook && $(GOTESTSUM) ./... +.PHONY: update-apidefaults-cainjector +update-apidefaults-cainjector: + cd internal/apis/config/cainjector/v1alpha1/test && bash -c "$(GO) run apidefaults.go" + .PHONY: setup-integration-tests setup-integration-tests: templated-crds