From 5614649d144df040da7d9bb732bdfd41db2660d3 Mon Sep 17 00:00:00 2001 From: Jeffrey Regan Date: Mon, 13 May 2019 12:29:20 -0700 Subject: [PATCH] Standalone service generator test --- pkg/plugins/loader_test.go | 8 +- pkg/target/generatorplugin_test.go | 167 ------------------ ...ceGenerator.go => SomeServiceGenerator.go} | 1 + .../v1/SomeServiceGenerator_test.go | 58 ++++++ 4 files changed, 63 insertions(+), 171 deletions(-) delete mode 100644 pkg/target/generatorplugin_test.go rename plugin/someteam.example.com/v1/{ServiceGenerator.go => SomeServiceGenerator.go} (96%) create mode 100644 plugin/someteam.example.com/v1/SomeServiceGenerator_test.go diff --git a/pkg/plugins/loader_test.go b/pkg/plugins/loader_test.go index bc7625f20..52ed82107 100644 --- a/pkg/plugins/loader_test.go +++ b/pkg/plugins/loader_test.go @@ -45,9 +45,9 @@ literals: - FRUIT=apple - VEGETABLE=carrot ` - serviceGenerator = ` + someServiceGenerator = ` apiVersion: someteam.example.com/v1 -kind: ServiceGenerator +kind: SomeServiceGenerator metadata: name: myServiceGenerator service: my-service @@ -62,7 +62,7 @@ func TestLoader(t *testing.T) { tc.BuildGoPlugin( "builtin", "", "SecretGenerator") tc.BuildGoPlugin( - "someteam.example.com", "v1", "ServiceGenerator") + "someteam.example.com", "v1", "SomeServiceGenerator") rmF := resmap.NewFactory(resource.NewFactory( kunstruct.NewKunstructuredFactoryImpl())) @@ -75,7 +75,7 @@ func TestLoader(t *testing.T) { ldr := loadertest.NewFakeLoader("/foo") m, err := rmF.NewResMapFromBytes([]byte( - serviceGenerator + "---\n" + secretGenerator)) + someServiceGenerator + "---\n" + secretGenerator)) if err != nil { t.Fatal(err) } diff --git a/pkg/target/generatorplugin_test.go b/pkg/target/generatorplugin_test.go deleted file mode 100644 index 094e0c32f..000000000 --- a/pkg/target/generatorplugin_test.go +++ /dev/null @@ -1,167 +0,0 @@ -/* -Copyright 2019 The Kubernetes Authors. - -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 target_test - -import ( - "path/filepath" - "testing" - - "sigs.k8s.io/kustomize/internal/plugintest" - "sigs.k8s.io/kustomize/k8sdeps/kv/plugin" - "sigs.k8s.io/kustomize/pkg/kusttest" -) - -func writeServiceGenerator(th *kusttest_test.KustTestHarness, path string) { - th.WriteF(path, ` -apiVersion: someteam.example.com/v1 -kind: ServiceGenerator -metadata: - name: myServiceGenerator -name: my-service -port: "12345" -`) -} - -func TestServiceGeneratorPlugin(t *testing.T) { - tc := plugintest_test.NewPluginTestEnv(t).Set() - defer tc.Reset() - - tc.BuildGoPlugin( - "someteam.example.com", "v1", "ServiceGenerator") - - th := kusttest_test.NewKustTestHarnessWithPluginConfig( - t, "/app", plugin.ActivePluginConfig()) - th.WriteK("/app", ` -generators: -- serviceGenerator.yaml -`) - writeServiceGenerator(th, "/app/serviceGenerator.yaml") - m, err := th.MakeKustTarget().MakeCustomizedResMap() - if err != nil { - t.Fatalf("Err: %v", err) - } - th.AssertActualEqualsExpected(m, ` -apiVersion: v1 -kind: Service -metadata: - labels: - app: dev - name: my-service -spec: - ports: - - port: 12345 - selector: - app: dev -`) -} - -func writeSecretGeneratorConfig(th *kusttest_test.KustTestHarness, root string) { - th.WriteF(filepath.Join(root, "secretGenerator.yaml"), ` -apiVersion: builtin -kind: SecretGenerator -metadata: - name: mySecGen -name: mySecret -behavior: merge -envs: -- a.env -- b.env -files: -- longsecret.txt -literals: -- FRUIT=apple -- VEGETABLE=carrot -`) - th.WriteF(filepath.Join(root, "a.env"), ` -ROUTER_PASSWORD=admin -`) - th.WriteF(filepath.Join(root, "b.env"), ` -DB_PASSWORD=iloveyou -`) - th.WriteF(filepath.Join(root, "longsecret.txt"), ` -Lorem ipsum dolor sit amet, -consectetur adipiscing elit. -`) -} - -func TestSecretGenerator(t *testing.T) { - tc := plugintest_test.NewPluginTestEnv(t).Set() - defer tc.Reset() - - tc.BuildGoPlugin( - "builtin", "", "SecretGenerator") - - th := kusttest_test.NewKustTestHarnessWithPluginConfig( - t, "/app", plugin.ActivePluginConfig()) - th.WriteK("/app", ` -generators: -- secretGenerator.yaml -`) - writeSecretGeneratorConfig(th, "/app") - m, err := th.MakeKustTarget().MakeCustomizedResMap() - if err != nil { - t.Fatalf("Err: %v", err) - } - th.AssertActualEqualsExpected(m, ` -apiVersion: v1 -data: - DB_PASSWORD: aWxvdmV5b3U= - FRUIT: YXBwbGU= - ROUTER_PASSWORD: YWRtaW4= - VEGETABLE: Y2Fycm90 - longsecret.txt: CkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LApjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuCg== -kind: Secret -metadata: - name: mySecret-g4g4kh4f7t -type: Opaque -`) -} - -func TestConfigMapGenerator(t *testing.T) { - tc := plugintest_test.NewPluginTestEnv(t).Set() - defer tc.Reset() - - tc.BuildExecPlugin( - "someteam.example.com", "v1", "ConfigMapGenerator") - - th := kusttest_test.NewKustTestHarnessWithPluginConfig( - t, "/app", plugin.ActivePluginConfig()) - th.WriteK("/app", ` -generators: -- configmapGenerator.yaml -`) - th.WriteF("/app/configmapGenerator.yaml", ` -apiVersion: someteam.example.com/v1 -kind: ConfigMapGenerator -metadata: - name: some-random-name -argsOneLiner: "admin secret" -`) - m, err := th.MakeKustTarget().MakeCustomizedResMap() - if err != nil { - t.Fatalf("Err: %v", err) - } - th.AssertActualEqualsExpected(m, ` -apiVersion: v1 -data: - password: secret - username: admin -kind: ConfigMap -metadata: - name: example-configmap-test -`) -} diff --git a/plugin/someteam.example.com/v1/ServiceGenerator.go b/plugin/someteam.example.com/v1/SomeServiceGenerator.go similarity index 96% rename from plugin/someteam.example.com/v1/ServiceGenerator.go rename to plugin/someteam.example.com/v1/SomeServiceGenerator.go index 489075948..20f6a2edf 100644 --- a/plugin/someteam.example.com/v1/ServiceGenerator.go +++ b/plugin/someteam.example.com/v1/SomeServiceGenerator.go @@ -29,6 +29,7 @@ import ( "sigs.k8s.io/yaml" ) +// A simple generator example. Makes one service. type plugin struct { Name string `json:"name,omitempty" yaml:"name,omitempty"` Port string `json:"port,omitempty" yaml:"port,omitempty"` diff --git a/plugin/someteam.example.com/v1/SomeServiceGenerator_test.go b/plugin/someteam.example.com/v1/SomeServiceGenerator_test.go new file mode 100644 index 000000000..7f94c83c7 --- /dev/null +++ b/plugin/someteam.example.com/v1/SomeServiceGenerator_test.go @@ -0,0 +1,58 @@ +/* +Copyright 2019 The Kubernetes Authors. + +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 main_test + +import ( + "testing" + + "sigs.k8s.io/kustomize/internal/plugintest" + "sigs.k8s.io/kustomize/k8sdeps/kv/plugin" + "sigs.k8s.io/kustomize/pkg/kusttest" +) + +func TestSomeServiceGeneratorPlugin(t *testing.T) { + tc := plugintest_test.NewPluginTestEnv(t).Set() + defer tc.Reset() + + tc.BuildGoPlugin( + "someteam.example.com", "v1", "SomeServiceGenerator") + + th := kusttest_test.NewKustTestHarnessWithPluginConfig( + t, "/app", plugin.ActivePluginConfig()) + + m := th.LoadAndRunGenerator(` +apiVersion: someteam.example.com/v1 +kind: SomeServiceGenerator +metadata: + name: myGenerator +name: my-service +port: "12345" +`) + th.AssertActualEqualsExpected(m, ` +apiVersion: v1 +kind: Service +metadata: + labels: + app: dev + name: my-service +spec: + ports: + - port: 12345 + selector: + app: dev +`) +}