From 730ae1c161d1b89a52e9c9c0fb60e61548017fe0 Mon Sep 17 00:00:00 2001 From: Prashansa Kulshrestha Date: Thu, 10 Oct 2024 11:20:35 +0530 Subject: [PATCH] tests: added tests for deck file and gateway validate --- tests/integration/testdata/validate/kong.yaml | 16 ++++ .../integration/testdata/validate/kong3x.yaml | 16 ++++ tests/integration/validate_test.go | 94 +++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 tests/integration/testdata/validate/kong.yaml create mode 100644 tests/integration/testdata/validate/kong3x.yaml diff --git a/tests/integration/testdata/validate/kong.yaml b/tests/integration/testdata/validate/kong.yaml new file mode 100644 index 000000000..da79fdfed --- /dev/null +++ b/tests/integration/testdata/validate/kong.yaml @@ -0,0 +1,16 @@ +_format_version: "1.1" +services: +- connect_timeout: 60000 + id: 58076db2-28b6-423b-ba39-a797193017f7 + host: mockbin.org + name: svc1 + port: 80 + protocol: http + read_timeout: 60000 + retries: 5 + routes: + - name: r1 + id: 87b6a97e-f3f7-4c47-857a-7464cb9e202b + https_redirect_status_code: 301 + paths: + - /r1 \ No newline at end of file diff --git a/tests/integration/testdata/validate/kong3x.yaml b/tests/integration/testdata/validate/kong3x.yaml new file mode 100644 index 000000000..a6ff52d42 --- /dev/null +++ b/tests/integration/testdata/validate/kong3x.yaml @@ -0,0 +1,16 @@ +_format_version: "3.0" +services: +- connect_timeout: 60000 + id: 58076db2-28b6-423b-ba39-a797193017f7 + host: mockbin.org + name: svc1 + port: 80 + protocol: http + read_timeout: 60000 + retries: 5 + routes: + - name: r1 + id: 87b6a97e-f3f7-4c47-857a-7464cb9e202b + https_redirect_status_code: 301 + paths: + - /r1 diff --git a/tests/integration/validate_test.go b/tests/integration/validate_test.go index 25f259299..ad7edf13a 100644 --- a/tests/integration/validate_test.go +++ b/tests/integration/validate_test.go @@ -88,3 +88,97 @@ func Test_Validate_Konnect(t *testing.T) { }) } } +func Test_Validate_File(t *testing.T) { + setup(t) + + tests := []struct { + name string + stateFile string + additionalArgs []string + errorExpected bool + }{ + { + name: "file validate format version 1.1", + stateFile: "testdata/validate/kong.yaml", + additionalArgs: []string{}, + }, + { + name: "file validate format version 3.0", + stateFile: "testdata/validate/kong3x.yaml", + additionalArgs: []string{}, + }, + { + name: "file validate with --konnect-compatibility", + stateFile: "testdata/validate/konnect.yaml", + additionalArgs: []string{"--konnect-compatibility"}, + }, + { + name: "file validate with --workspace", + stateFile: "testdata/validate/kong3x.yaml", + additionalArgs: []string{"--workspace=default"}, + }, + { + name: "file validate with --rbac-resources-only", + stateFile: "testdata/validate/rbac-resources.yaml", + additionalArgs: []string{"--rbac-resources-only"}, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + validateOpts := []string{ + tc.stateFile, + } + validateOpts = append(validateOpts, tc.additionalArgs...) + + err := validate(false, validateOpts...) + assert.NoError(t, err) + }) + } +} + +func Test_Validate_Gateway(t *testing.T) { + setup(t) + runWhen(t, "kong", ">=2.8.0") + + tests := []struct { + name string + stateFile string + additionalArgs []string + errorExpected bool + }{ + { + name: "validate format version 1.1", + stateFile: "testdata/validate/kong.yaml", + additionalArgs: []string{}, + }, + { + name: "validate format version 3.0", + stateFile: "testdata/validate/kong3x.yaml", + additionalArgs: []string{}, + }, + { + name: "validate with --konnect-compatibility", + stateFile: "testdata/validate/konnect.yaml", + additionalArgs: []string{"--konnect-compatibility"}, + }, + { + name: "validate with --workspace", + stateFile: "testdata/validate/kong3x.yaml", + additionalArgs: []string{"--workspace=default"}, + }, + // TODO: Add a rbac flag test, once the behaviour is fixed + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + validateOpts := []string{ + tc.stateFile, + } + validateOpts = append(validateOpts, tc.additionalArgs...) + + err := validate(true, validateOpts...) + assert.NoError(t, err) + }) + } +}