moved common resource definitions to separate function

This commit is contained in:
Natasha Sarkar
2021-02-22 14:35:23 -08:00
parent 7dd0ade0f9
commit 5a0e193002
4 changed files with 138 additions and 311 deletions

View File

@@ -33,7 +33,7 @@ func writeK(path string, content string) FileGen {
} }
func writeTestBase(th kusttest_test.Harness) { func writeTestBase(th kusttest_test.Harness) {
th.WriteK("/app/base", ` th.WriteK("/base", `
resources: resources:
- deploy.yaml - deploy.yaml
configMapGenerator: configMapGenerator:
@@ -42,7 +42,7 @@ configMapGenerator:
- testValue=purple - testValue=purple
- otherValue=green - otherValue=green
`) `)
th.WriteF("/app/base/deploy.yaml", ` th.WriteF("/base/deploy.yaml", `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -53,7 +53,7 @@ spec:
} }
func writeTestComponent(th kusttest_test.Harness) { func writeTestComponent(th kusttest_test.Harness) {
th.WriteC("/app/comp", ` th.WriteC("/comp", `
namePrefix: comp- namePrefix: comp-
replicas: replicas:
- name: storefront - name: storefront
@@ -67,7 +67,7 @@ configMapGenerator:
- testValue=blue - testValue=blue
- compValue=red - compValue=red
`) `)
th.WriteF("/app/comp/stub.yaml", ` th.WriteF("/comp/stub.yaml", `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -78,7 +78,7 @@ spec:
} }
func writeOverlayProd(th kusttest_test.Harness) { func writeOverlayProd(th kusttest_test.Harness) {
th.WriteK("/app/prod", ` th.WriteK("/prod", `
resources: resources:
- ../base - ../base
- db - db
@@ -90,7 +90,7 @@ components:
} }
func writeDB(th kusttest_test.Harness) { func writeDB(th kusttest_test.Harness) {
deployment("db", "/app/prod/db")(th) deployment("db", "/prod/db")(th)
} }
func deployment(name string, path string) FileGen { func deployment(name string, path string) FileGen {
@@ -114,7 +114,7 @@ func TestComponent(t *testing.T) {
// resources that come before it in the resources list of the parent Kustomization. // resources that come before it in the resources list of the parent Kustomization.
"basic-component": { "basic-component": {
input: []FileGen{writeTestBase, writeTestComponent, writeOverlayProd}, input: []FileGen{writeTestBase, writeTestComponent, writeOverlayProd},
runPath: "/app/prod", runPath: "/prod",
expectedOutput: ` expectedOutput: `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
@@ -149,14 +149,14 @@ spec:
}, },
"multiple-components": { "multiple-components": {
input: []FileGen{writeTestBase, writeTestComponent, writeDB, input: []FileGen{writeTestBase, writeTestComponent, writeDB,
writeC("/app/additionalcomp", ` writeC("/additionalcomp", `
configMapGenerator: configMapGenerator:
- name: my-configmap - name: my-configmap
behavior: merge behavior: merge
literals: literals:
- otherValue=orange - otherValue=orange
`), `),
writeK("/app/prod", ` writeK("/prod", `
resources: resources:
- ../base - ../base
- db - db
@@ -166,7 +166,7 @@ components:
- ../additionalcomp - ../additionalcomp
`), `),
}, },
runPath: "/app/prod", runPath: "/prod",
expectedOutput: ` expectedOutput: `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
@@ -201,7 +201,7 @@ spec:
}, },
"nested-components": { "nested-components": {
input: []FileGen{writeTestBase, writeTestComponent, writeDB, input: []FileGen{writeTestBase, writeTestComponent, writeDB,
writeC("/app/additionalcomp", ` writeC("/additionalcomp", `
components: components:
- ../comp - ../comp
configMapGenerator: configMapGenerator:
@@ -210,7 +210,7 @@ configMapGenerator:
literals: literals:
- otherValue=orange - otherValue=orange
`), `),
writeK("/app/prod", ` writeK("/prod", `
resources: resources:
- ../base - ../base
- db - db
@@ -219,7 +219,7 @@ components:
- ../additionalcomp - ../additionalcomp
`), `),
}, },
runPath: "/app/prod", runPath: "/prod",
expectedOutput: ` expectedOutput: `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
@@ -256,13 +256,13 @@ spec:
// without being affected by the component in another branch of the resource tree // without being affected by the component in another branch of the resource tree
"basic-component-with-repeated-base": { "basic-component-with-repeated-base": {
input: []FileGen{writeTestBase, writeTestComponent, writeOverlayProd, input: []FileGen{writeTestBase, writeTestComponent, writeOverlayProd,
writeK("/app/repeated", ` writeK("/repeated", `
resources: resources:
- ../base - ../base
- ../prod - ../prod
`), `),
}, },
runPath: "/app/repeated", runPath: "/repeated",
expectedOutput: ` expectedOutput: `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
@@ -312,7 +312,7 @@ spec:
}, },
"applying-component-directly-should-be-same-as-kustomization": { "applying-component-directly-should-be-same-as-kustomization": {
input: []FileGen{writeTestBase, writeTestComponent, input: []FileGen{writeTestBase, writeTestComponent,
writeC("/app/direct-component", ` writeC("/direct-component", `
resources: resources:
- ../base - ../base
configMapGenerator: configMapGenerator:
@@ -323,7 +323,7 @@ configMapGenerator:
- testValue=blue - testValue=blue
`), `),
}, },
runPath: "/app/direct-component", runPath: "/direct-component",
expectedOutput: ` expectedOutput: `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
@@ -344,7 +344,7 @@ metadata:
}, },
"missing-optional-component-api-version": { "missing-optional-component-api-version": {
input: []FileGen{writeTestBase, writeOverlayProd, input: []FileGen{writeTestBase, writeOverlayProd,
writeF("/app/comp/"+konfig.DefaultKustomizationFileName(), ` writeF("/comp/"+konfig.DefaultKustomizationFileName(), `
kind: Component kind: Component
configMapGenerator: configMapGenerator:
- name: my-configmap - name: my-configmap
@@ -353,7 +353,7 @@ configMapGenerator:
- otherValue=orange - otherValue=orange
`), `),
}, },
runPath: "/app/prod", runPath: "/prod",
expectedOutput: ` expectedOutput: `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
@@ -382,25 +382,25 @@ spec:
// accumulator when "comp-b" is accumulated. In practice we could use simple Kustomizations for this example. // accumulator when "comp-b" is accumulated. In practice we could use simple Kustomizations for this example.
"components-can-add-the-same-base-if-the-first-renames-resources": { "components-can-add-the-same-base-if-the-first-renames-resources": {
input: []FileGen{writeTestBase, input: []FileGen{writeTestBase,
deployment("proxy", "/app/comp-a/proxy.yaml"), deployment("proxy", "/comp-a/proxy.yaml"),
writeC("/app/comp-a", ` writeC("/comp-a", `
resources: resources:
- ../base - ../base
nameSuffix: "-a" nameSuffix: "-a"
`), `),
writeC("/app/comp-b", ` writeC("/comp-b", `
resources: resources:
- ../base - ../base
nameSuffix: "-b" nameSuffix: "-b"
`), `),
writeK("/app/prod", ` writeK("/prod", `
components: components:
- ../comp-a - ../comp-a
- ../comp-b`), - ../comp-b`),
}, },
runPath: "/app/prod", runPath: "/prod",
expectedOutput: ` expectedOutput: `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
@@ -436,34 +436,34 @@ metadata:
"multiple-bases-can-add-the-same-component-if-it-doesn-not-define-named-entities": { "multiple-bases-can-add-the-same-component-if-it-doesn-not-define-named-entities": {
input: []FileGen{ input: []FileGen{
writeC("/app/comp", ` writeC("/comp", `
namespace: prod namespace: prod
`), `),
writeK("/app/base-a", ` writeK("/base-a", `
resources: resources:
- proxy.yaml - proxy.yaml
components: components:
- ../comp - ../comp
`), `),
deployment("proxy-a", "/app/base-a/proxy.yaml"), deployment("proxy-a", "/base-a/proxy.yaml"),
writeK("/app/base-b", ` writeK("/base-b", `
resources: resources:
- proxy.yaml - proxy.yaml
components: components:
- ../comp - ../comp
`), `),
deployment("proxy-b", "/app/base-b/proxy.yaml"), deployment("proxy-b", "/base-b/proxy.yaml"),
writeK("/app/prod", ` writeK("/prod", `
resources: resources:
- proxy.yaml - proxy.yaml
- ../base-a - ../base-a
- ../base-b - ../base-b
`), `),
deployment("proxy-prod", "/app/prod/proxy.yaml"), deployment("proxy-prod", "/prod/proxy.yaml"),
}, },
runPath: "/app/prod", runPath: "/prod",
// Note that the namepsace has not been applied to proxy-prod because it was not in scope when the // Note that the namepsace has not been applied to proxy-prod because it was not in scope when the
// component was applied // component was applied
expectedOutput: ` expectedOutput: `
@@ -513,30 +513,30 @@ func TestComponentErrors(t *testing.T) {
}{ }{
"components-cannot-be-added-to-resources": { "components-cannot-be-added-to-resources": {
input: []FileGen{writeTestBase, writeTestComponent, input: []FileGen{writeTestBase, writeTestComponent,
writeK("/app/compinres", ` writeK("/compinres", `
resources: resources:
- ../base - ../base
- ../comp - ../comp
`), `),
}, },
runPath: "app/compinres", runPath: "compinres",
expectedError: "expected kind != 'Component' for path '/app/comp'", expectedError: "expected kind != 'Component' for path '/comp'",
}, },
"kustomizations-cannot-be-added-to-components": { "kustomizations-cannot-be-added-to-components": {
input: []FileGen{writeTestBase, writeTestComponent, input: []FileGen{writeTestBase, writeTestComponent,
writeK("/app/kustincomponents", ` writeK("/kustincomponents", `
components: components:
- ../base - ../base
- ../comp - ../comp
`), `),
}, },
runPath: "/app/kustincomponents", runPath: "/kustincomponents",
expectedError: "accumulating components: accumulateDirectory: \"expected kind 'Component' for path " + expectedError: "accumulating components: accumulateDirectory: \"expected kind 'Component' for path " +
"'/app/base' but got 'Kustomization'", "'/base' but got 'Kustomization'",
}, },
"files-cannot-be-added-to-components-list": { "files-cannot-be-added-to-components-list": {
input: []FileGen{writeTestBase, input: []FileGen{writeTestBase,
writeF("/app/filesincomponents/stub.yaml", ` writeF("/filesincomponents/stub.yaml", `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -544,18 +544,18 @@ metadata:
spec: spec:
replicas: 1 replicas: 1
`), `),
writeK("/app/filesincomponents", ` writeK("/filesincomponents", `
components: components:
- stub.yaml - stub.yaml
- ../comp - ../comp
`), `),
}, },
runPath: "/app/filesincomponents", runPath: "/filesincomponents",
expectedError: "'/app/filesincomponents/stub.yaml' must be a directory to be a root", expectedError: "'/filesincomponents/stub.yaml' must be a directory to be a root",
}, },
"invalid-component-api-version": { "invalid-component-api-version": {
input: []FileGen{writeTestBase, writeOverlayProd, input: []FileGen{writeTestBase, writeOverlayProd,
writeF("/app/comp/"+konfig.DefaultKustomizationFileName(), ` writeF("/comp/"+konfig.DefaultKustomizationFileName(), `
apiVersion: kustomize.config.k8s.io/v1beta1 apiVersion: kustomize.config.k8s.io/v1beta1
kind: Component kind: Component
configMapGenerator: configMapGenerator:
@@ -565,22 +565,22 @@ configMapGenerator:
- otherValue=orange - otherValue=orange
`), `),
}, },
runPath: "/app/prod", runPath: "/prod",
expectedError: "apiVersion for Component should be kustomize.config.k8s.io/v1alpha1", expectedError: "apiVersion for Component should be kustomize.config.k8s.io/v1alpha1",
}, },
"components-cannot-add-the-same-resource": { "components-cannot-add-the-same-resource": {
input: []FileGen{writeTestBase, input: []FileGen{writeTestBase,
writeC("/app/comp-a", ` writeC("/comp-a", `
resources: resources:
- proxy.yaml - proxy.yaml
`), `),
deployment("proxy", "/app/comp-a/proxy.yaml"), deployment("proxy", "/comp-a/proxy.yaml"),
writeC("/app/comp-b", ` writeC("/comp-b", `
resources: resources:
- proxy.yaml - proxy.yaml
`), `),
deployment("proxy", "/app/comp-b/proxy.yaml"), deployment("proxy", "/comp-b/proxy.yaml"),
writeK("/app/prod", ` writeK("/prod", `
resources: resources:
- ../base - ../base
@@ -588,49 +588,49 @@ components:
- ../comp-a - ../comp-a
- ../comp-b`), - ../comp-b`),
}, },
runPath: "/app/prod", runPath: "/prod",
expectedError: "may not add resource with an already registered id: ~G_v1_Deployment|~X|proxy", expectedError: "may not add resource with an already registered id: ~G_v1_Deployment|~X|proxy",
}, },
"components-cannot-add-the-same-base": { "components-cannot-add-the-same-base": {
input: []FileGen{writeTestBase, input: []FileGen{writeTestBase,
deployment("proxy", "/app/comp-a/proxy.yaml"), deployment("proxy", "/comp-a/proxy.yaml"),
writeC("/app/comp-a", ` writeC("/comp-a", `
resources: resources:
- ../base - ../base
`), `),
writeC("/app/comp-b", ` writeC("/comp-b", `
resources: resources:
- ../base - ../base
`), `),
writeK("/app/prod", ` writeK("/prod", `
components: components:
- ../comp-a - ../comp-a
- ../comp-b`), - ../comp-b`),
}, },
runPath: "/app/prod", runPath: "/prod",
expectedError: "may not add resource with an already registered id: ~G_v1_Deployment|~X|storefront", expectedError: "may not add resource with an already registered id: ~G_v1_Deployment|~X|storefront",
}, },
"components-cannot-add-bases-containing-the-same-resource": { "components-cannot-add-bases-containing-the-same-resource": {
input: []FileGen{writeTestBase, input: []FileGen{writeTestBase,
writeC("/app/comp-a", ` writeC("/comp-a", `
resources: resources:
- ../base-a - ../base-a
`), `),
writeK("/app/base-a", ` writeK("/base-a", `
resources: resources:
- proxy.yaml - proxy.yaml
`), `),
deployment("proxy", "/app/base-a/proxy.yaml"), deployment("proxy", "/base-a/proxy.yaml"),
writeC("/app/comp-b", ` writeC("/comp-b", `
resources: resources:
- ../base-b - ../base-b
`), `),
writeK("/app/base-b", ` writeK("/base-b", `
resources: resources:
- proxy.yaml - proxy.yaml
`), `),
deployment("proxy", "/app/base-b/proxy.yaml"), deployment("proxy", "/base-b/proxy.yaml"),
writeK("/app/prod", ` writeK("/prod", `
resources: resources:
- ../base - ../base
@@ -638,7 +638,7 @@ components:
- ../comp-a - ../comp-a
- ../comp-b`), - ../comp-b`),
}, },
runPath: "/app/prod", runPath: "/prod",
expectedError: "may not add resource with an already registered id: ~G_v1_Deployment|~X|proxy", expectedError: "may not add resource with an already registered id: ~G_v1_Deployment|~X|proxy",
}, },
} }

View File

@@ -14,14 +14,34 @@ func writeTestSchema(th kusttest_test.Harness, filepath string) {
th.WriteF(filepath+"mycrd_schema.json", string(bytes)) th.WriteF(filepath+"mycrd_schema.json", string(bytes))
} }
func writeCustomResource(th kusttest_test.Harness, filepath string) {
th.WriteF(filepath, `
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: server
command: example
ports:
- name: grpc
protocol: TCP
containerPort: 8080
`)
}
func writeTestComponentWithCustomSchema(th kusttest_test.Harness) { func writeTestComponentWithCustomSchema(th kusttest_test.Harness) {
writeTestSchema(th, "/app/comp/") writeTestSchema(th, "/comp/")
openapi.ResetOpenAPI() openapi.ResetOpenAPI()
th.WriteC("/app/comp", ` th.WriteC("/comp", `
openapi: openapi:
path: mycrd_schema.json path: mycrd_schema.json
`) `)
th.WriteF("/app/comp/stub.yaml", ` th.WriteF("/comp/stub.yaml", `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -31,16 +51,7 @@ spec:
`) `)
} }
// Test for issue #2825 const customSchemaPatch = `
func TestCustomOpenApiFieldBasicUsage(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
resources:
- mycrd.yaml
openapi:
path: mycrd_schema.json
patchesStrategicMerge: patchesStrategicMerge:
- |- - |-
apiVersion: example.com/v1alpha1 apiVersion: example.com/v1alpha1
@@ -53,29 +64,9 @@ patchesStrategicMerge:
containers: containers:
- name: server - name: server
image: nginx image: nginx
`) `
th.WriteF("/app/mycrd.yaml", `
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: server
command: example
ports:
- name: grpc
protocol: TCP
containerPort: 8080
`)
writeTestSchema(th, "/app/")
openapi.ResetOpenAPI()
m := th.Run("/app", th.MakeDefaultOptions()) const patchedCustomResource = `
th.AssertActualEqualsExpected(m, `
apiVersion: example.com/v1alpha1 apiVersion: example.com/v1alpha1
kind: MyCRD kind: MyCRD
metadata: metadata:
@@ -91,54 +82,39 @@ spec:
- containerPort: 8080 - containerPort: 8080
name: grpc name: grpc
protocol: TCP protocol: TCP
`) `
// Test for issue #2825
func TestCustomOpenApiFieldBasicUsage(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteK(".", `
resources:
- mycrd.yaml
openapi:
path: mycrd_schema.json
`+customSchemaPatch)
writeCustomResource(th, "/mycrd.yaml")
writeTestSchema(th, "./")
openapi.ResetOpenAPI()
m := th.Run(".", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, patchedCustomResource)
} }
// Error if user tries to specify both builtin version // Error if user tries to specify both builtin version
// and custom schema // and custom schema
func TestCustomOpenApiFieldBothPathAndVersion(t *testing.T) { func TestCustomOpenApiFieldBothPathAndVersion(t *testing.T) {
th := kusttest_test.MakeHarness(t) th := kusttest_test.MakeHarness(t)
th.WriteK("/app", ` th.WriteK(".", `
resources: resources:
- mycrd.yaml - mycrd.yaml
openapi: openapi:
version: v1.18.8 version: v1.18.8
path: mycrd_schema.json path: mycrd_schema.json
`+customSchemaPatch)
patchesStrategicMerge: writeCustomResource(th, "/mycrd.yaml")
- |- writeTestSchema(th, "./")
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: nginx
`)
th.WriteF("/app/mycrd.yaml", `
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: server
command: example
ports:
- name: grpc
protocol: TCP
containerPort: 8080
`)
writeTestSchema(th, "/app/")
openapi.ResetOpenAPI() openapi.ResetOpenAPI()
err := th.RunWithErr("/app", th.MakeDefaultOptions()) err := th.RunWithErr(".", th.MakeDefaultOptions())
assert.Error(t, err) assert.Error(t, err)
assert.Equal(t, assert.Equal(t,
"builtin version and custom schema provided, cannot use both", "builtin version and custom schema provided, cannot use both",
@@ -148,48 +124,18 @@ spec:
// Test for if the filepath specified is not found // Test for if the filepath specified is not found
func TestCustomOpenApiFieldFileNotFound(t *testing.T) { func TestCustomOpenApiFieldFileNotFound(t *testing.T) {
th := kusttest_test.MakeHarness(t) th := kusttest_test.MakeHarness(t)
th.WriteK("/app", ` th.WriteK(".", `
resources: resources:
- mycrd.yaml - mycrd.yaml
openapi: openapi:
path: mycrd_schema.json path: mycrd_schema.json
`+customSchemaPatch)
patchesStrategicMerge: writeCustomResource(th, "/mycrd.yaml")
- |-
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: nginx
`)
th.WriteF("/app/mycrd.yaml", `
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: server
command: example
ports:
- name: grpc
protocol: TCP
containerPort: 8080
`)
openapi.ResetOpenAPI() openapi.ResetOpenAPI()
err := th.RunWithErr("/app", th.MakeDefaultOptions()) err := th.RunWithErr(".", th.MakeDefaultOptions())
assert.Error(t, err) assert.Error(t, err)
assert.Equal(t, assert.Equal(t,
"'/app/mycrd_schema.json' doesn't exist", "'/mycrd_schema.json' doesn't exist",
err.Error()) err.Error())
} }
@@ -198,64 +144,18 @@ func TestCustomOpenApiFieldFromBase(t *testing.T) {
th.WriteK("base", ` th.WriteK("base", `
resources: resources:
- mycrd.yaml - mycrd.yaml
openapi: openapi:
path: mycrd_schema.json path: mycrd_schema.json
`)
th.WriteF("base/mycrd.yaml", `
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: server
command: example
ports:
- name: grpc
protocol: TCP
containerPort: 8080
`) `)
th.WriteK("overlay", ` th.WriteK("overlay", `
resources: resources:
- ../base - ../base
`+customSchemaPatch)
patchesStrategicMerge: writeCustomResource(th, "base/mycrd.yaml")
- |-
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: nginx
`)
writeTestSchema(th, "/base/") writeTestSchema(th, "/base/")
openapi.ResetOpenAPI() openapi.ResetOpenAPI()
m := th.Run("overlay", th.MakeDefaultOptions()) m := th.Run("overlay", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, ` th.AssertActualEqualsExpected(m, patchedCustomResource)
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- command: example
image: nginx
name: server
ports:
- containerPort: 8080
name: grpc
protocol: TCP
`)
assert.Equal(t, "using custom schema from file provided", assert.Equal(t, "using custom schema from file provided",
openapi.GetSchemaVersion()) openapi.GetSchemaVersion())
} }
@@ -265,62 +165,18 @@ func TestCustomOpenApiFieldFromOverlay(t *testing.T) {
th.WriteK("base", ` th.WriteK("base", `
resources: resources:
- mycrd.yaml - mycrd.yaml
`)
th.WriteF("base/mycrd.yaml", `
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: server
command: example
ports:
- name: grpc
protocol: TCP
containerPort: 8080
`) `)
th.WriteK("overlay", ` th.WriteK("overlay", `
resources: resources:
- ../base - ../base
openapi: openapi:
path: mycrd_schema.json path: mycrd_schema.json
patchesStrategicMerge: `+customSchemaPatch)
- |- writeCustomResource(th, "base/mycrd.yaml")
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: nginx
`)
writeTestSchema(th, "/overlay/") writeTestSchema(th, "/overlay/")
openapi.ResetOpenAPI() openapi.ResetOpenAPI()
m := th.Run("overlay", th.MakeDefaultOptions()) m := th.Run("overlay", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, ` th.AssertActualEqualsExpected(m, patchedCustomResource)
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- command: example
image: nginx
name: server
ports:
- containerPort: 8080
name: grpc
protocol: TCP
`)
assert.Equal(t, "using custom schema from file provided", assert.Equal(t, "using custom schema from file provided",
openapi.GetSchemaVersion()) openapi.GetSchemaVersion())
} }
@@ -332,42 +188,14 @@ resources:
- mycrd.yaml - mycrd.yaml
openapi: openapi:
path: mycrd_schema.json path: mycrd_schema.json
`)
th.WriteF("base/mycrd.yaml", `
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: server
command: example
ports:
- name: grpc
protocol: TCP
containerPort: 8080
`) `)
th.WriteK("overlay", ` th.WriteK("overlay", `
resources: resources:
- ../base - ../base
openapi: openapi:
version: v1.19.1 version: v1.19.1
patchesStrategicMerge: `+customSchemaPatch)
- |- writeCustomResource(th, "base/mycrd.yaml")
apiVersion: example.com/v1alpha1
kind: MyCRD
metadata:
name: service
spec:
template:
spec:
containers:
- name: server
image: nginx
`)
writeTestSchema(th, "/base/") writeTestSchema(th, "/base/")
openapi.ResetOpenAPI() openapi.ResetOpenAPI()
m := th.Run("overlay", th.MakeDefaultOptions()) m := th.Run("overlay", th.MakeDefaultOptions())
@@ -383,8 +211,7 @@ spec:
- image: nginx - image: nginx
name: server name: server
`) `)
assert.Equal(t, "v1191", assert.Equal(t, "v1191", openapi.GetSchemaVersion())
openapi.GetSchemaVersion())
} }
func TestCustomOpenAPIFieldFromComponent(t *testing.T) { func TestCustomOpenAPIFieldFromComponent(t *testing.T) {

View File

@@ -11,13 +11,13 @@ import (
func TestOpenApiFieldBasicUsage(t *testing.T) { func TestOpenApiFieldBasicUsage(t *testing.T) {
th := kusttest_test.MakeHarness(t) th := kusttest_test.MakeHarness(t)
th.WriteK("/app", ` th.WriteK(".", `
openapi: openapi:
version: v1.18.8 version: v1.18.8
resources: resources:
- deployment.yaml - deployment.yaml
`) `)
th.WriteF("/app/deployment.yaml", ` th.WriteF("/deployment.yaml", `
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -29,7 +29,7 @@ spec:
- image: whatever - image: whatever
`) `)
m := th.Run("/app", th.MakeDefaultOptions()) m := th.Run(".", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, ` th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
@@ -46,13 +46,13 @@ spec:
func TestOpenApiFieldNotBuiltin(t *testing.T) { func TestOpenApiFieldNotBuiltin(t *testing.T) {
th := kusttest_test.MakeHarness(t) th := kusttest_test.MakeHarness(t)
th.WriteK("/app", ` th.WriteK(".", `
openapi: openapi:
version: v1.14.1 version: v1.14.1
resources: resources:
- deployment.yaml - deployment.yaml
`) `)
th.WriteF("/app/deployment.yaml", ` th.WriteF("/deployment.yaml", `
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -64,7 +64,7 @@ spec:
- image: whatever - image: whatever
`) `)
err := th.RunWithErr("/app", th.MakeDefaultOptions()) err := th.RunWithErr(".", th.MakeDefaultOptions())
if err == nil { if err == nil {
t.Fatalf("expected an error") t.Fatalf("expected an error")
} }
@@ -72,11 +72,11 @@ spec:
func TestOpenApiFieldDefaultVersion(t *testing.T) { func TestOpenApiFieldDefaultVersion(t *testing.T) {
th := kusttest_test.MakeHarness(t) th := kusttest_test.MakeHarness(t)
th.WriteK("/app", ` th.WriteK(".", `
resources: resources:
- deployment.yaml - deployment.yaml
`) `)
th.WriteF("/app/deployment.yaml", ` th.WriteF("/deployment.yaml", `
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -88,7 +88,7 @@ spec:
- image: whatever - image: whatever
`) `)
m := th.Run("/app", th.MakeDefaultOptions()) m := th.Run(".", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, ` th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
@@ -260,7 +260,7 @@ spec:
func TestOpenAPIFieldFromComponentDefault(t *testing.T) { func TestOpenAPIFieldFromComponentDefault(t *testing.T) {
input := []FileGen{writeTestBase, writeTestComponent, writeOverlayProd} input := []FileGen{writeTestBase, writeTestComponent, writeOverlayProd}
runPath := "/app/prod" runPath := "/prod"
th := kusttest_test.MakeHarness(t) th := kusttest_test.MakeHarness(t)
for _, f := range input { for _, f := range input {
@@ -271,11 +271,11 @@ func TestOpenAPIFieldFromComponentDefault(t *testing.T) {
} }
func writeTestComponentWithOlderOpenAPIVersion(th kusttest_test.Harness) { func writeTestComponentWithOlderOpenAPIVersion(th kusttest_test.Harness) {
th.WriteC("/app/comp", ` th.WriteC("/comp", `
openapi: openapi:
version: v1.18.8 version: v1.18.8
`) `)
th.WriteF("/app/comp/stub.yaml", ` th.WriteF("/comp/stub.yaml", `
apiVersion: v1 apiVersion: v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -285,7 +285,7 @@ spec:
`) `)
} }
const runPath = "/app/prod" const runPath = "prod"
func TestOpenAPIFieldFromComponent(t *testing.T) { func TestOpenAPIFieldFromComponent(t *testing.T) {
input := []FileGen{ input := []FileGen{

View File

@@ -481,7 +481,7 @@ func initSchema() {
ResetOpenAPI() ResetOpenAPI()
err := parse(customSchema) err := parse(customSchema)
if err != nil { if err != nil {
panic(err) panic("invalid schema file")
} }
return return
} }