Skip to content

Commit

Permalink
tests: Added e2e tests for gateway validation with konnect.
Browse files Browse the repository at this point in the history
Also, this change adds a conditional that ensures that rbac flag used
with konnect mode, gives an legible error to the user.
  • Loading branch information
Prashansa-K committed Oct 10, 2024
1 parent e07f7b0 commit a05a422
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 0 deletions.
4 changes: 4 additions & 0 deletions cmd/gateway_validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ func executeValidate(cmd *cobra.Command, _ []string) error {
ctx := cmd.Context()
var kongClient *kong.Client
if validateOnline {
if validateCmdRBACResourcesOnly && mode == modeKonnect {
return fmt.Errorf("rbac validation not yet supported in konnect mode")
}

kongClient, err = getKongClient(ctx, targetContent, mode)
if err != nil {
return err
Expand Down
20 changes: 20 additions & 0 deletions tests/integration/test_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -374,3 +374,23 @@ func render(opts ...string) (string, error) {

return stripansi.Strip(string(out)), cmdErr
}

func validate(online bool, opts ...string) error {
deckCmd := cmd.NewRootCmd()

var args []string
if online {
args = []string{"gateway", "validate"}
} else {
args = []string{"file", "validate"}
}

if len(opts) > 0 {
args = append(args, opts...)
}
deckCmd.SetArgs(args)

cmdErr := deckCmd.ExecuteContext(context.Background())

return cmdErr
}
18 changes: 18 additions & 0 deletions tests/integration/testdata/validate/konnect.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
_format_version: "3.0"
_konnect:
control_plane_name: default
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
81 changes: 81 additions & 0 deletions tests/integration/validate_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
//go:build integration

package integration

import (
"testing"

"github.com/stretchr/testify/assert"
)

func Test_Validate_Konnect(t *testing.T) {
setup(t)
runWhen(t, "konnect", "")

tests := []struct {
name string
stateFile string
additionalArgs []string
errorExpected bool
}{
{
name: "validate with konnect",
stateFile: "testdata/validate/konnect.yaml",
additionalArgs: []string{},
},
{
name: "validate with --konnect-compatibility",
stateFile: "testdata/validate/konnect.yaml",
additionalArgs: []string{"--konnect-compatibility"},
},
{
name: "validate with --workspace",
stateFile: "testdata/validate/konnect.yaml",
additionalArgs: []string{"--workspace=default"},
},
}

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)
})
}
}

func Test_Validate_Konnect_RBAC(t *testing.T) {
setup(t)
runWhen(t, "konnect", "")

tests := []struct {
name string
stateFile string
additionalArgs []string
errorExpected bool
}{
{
name: "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(true, validateOpts...)
assert.Error(t, err)
assert.Contains(t, err.Error(), "rbac validation not yet supported in konnect mode")
})
}
}

0 comments on commit a05a422

Please sign in to comment.