Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: add tests and fix global URL substitution for identity APIs #21

Merged
merged 1 commit into from
Nov 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/bump-version.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ jobs:
permissions:
issues: write
pull-requests: write
contents: write
steps:
- uses: mheap/github-action-required-labels@v5
with:
Expand All @@ -33,19 +34,23 @@ jobs:
repo: speakeasy
cli_name: speakeasy
package_type: zip

- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.PAT }}

- name: Reset .speakeasy/gen.yaml to the version on main
run: |
git fetch origin main
git checkout origin/main .speakeasy/gen.yaml .speakeasy/gen.lock

- name: Set bump (patch)
run: |
BUMP_TYPE=$(echo '${{ toJson(github.event.pull_request.labels.*.name) }}' | jq -r '.[]' | grep -E 'patch|minor|major')
speakeasy bump $BUMP_TYPE

- name: Commit SDK changes to the PR
uses: EndBug/add-and-commit@v9
with:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/generate_on_pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ jobs:
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.PAT }}

- name: Configure speakeasy CLI
run: |
Expand Down
53 changes: 53 additions & 0 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: tests
run-name: tests, branch:${{ github.ref_name }}, triggered by @${{ github.actor }}

concurrency:
# Run only for most recent commit in PRs but for all tags and commits on main
# Ref: https://docs.github.com/en/actions/using-jobs/using-concurrency
group: ${{ github.workflow }}-${{ github.head_ref || github.sha }}
cancel-in-progress: true

on:
pull_request:
branches:
- '*'
push:
branches:
- 'main'
schedule:
- cron: '30 2 * * *'
workflow_dispatch: {}

jobs:
unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod

- name: run unit tests
run: make test.unit

integration-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- konnect-api-url: https://us.api.konghq.tech
- konnect-api-url: https://eu.api.konghq.tech
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod

- name: run integration tests
run: make test.integration
env:
KONNECT_API_URL: ${{ matrix.konnect-api-url }}
KONNECT_API_PAT: ${{ secrets.KONNECT_API_PAT }}
2 changes: 1 addition & 1 deletion .speakeasy/gen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ generation:
oAuth2ClientCredentialsEnabled: false
oAuth2PasswordEnabled: false
go:
version: 0.1.7
version: 0.1.8
additionalDependencies: {}
allowUnknownFieldsInWeakUnions: false
clientServerStatusCodesAsErrors: true
Expand Down
12 changes: 12 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -107,3 +107,15 @@ generate.sdk:
speakeasy generate sdk --lang go --out . --schema ./$(OPENAPI_FILE)
$(MAKE) _generate.omitempty
go mod tidy

.PHONY: test
test: test.unit test.integration

.PHONY: test.unit
test.unit:

.PHONY: test.integration
test.integration:
KONNECT_TEST_RUN_ID=$(shell openssl rand -hex 8) \
go test -v -race $(GOTESTFLAGS) \
./test/integration/...
7 changes: 7 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,11 @@ go 1.20
require (
github.com/cenkalti/backoff/v4 v4.2.0
github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05
github.com/stretchr/testify v1.10.0
)

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
10 changes: 10 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4=
github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05 h1:S92OBrGuLLZsyM5ybUzgc/mPjIYk2AZqufieooe98uw=
github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05/go.mod h1:M9R1FoZ3y//hwwnJtO51ypFGwm8ZfpxPT/ZLtO1mcgQ=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
174 changes: 174 additions & 0 deletions internal/hooks/globalurl.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
package hooks

import (
"net/http"
"strings"
)

type GlobalAPIURLRequestHook struct{}

var _ beforeRequestHook = (*GlobalAPIURLRequestHook)(nil)

func (i *GlobalAPIURLRequestHook) BeforeRequest(hookCtx BeforeRequestContext, req *http.Request) (*http.Request, error) {
// NOTE: the list below was generated with
// for op in $(rg --no-line-number -o "operationId: (.*)" -r '$1' ../platform-api/src/konnect/definitions/identity/v3/openapi.yaml); do printf "case \"$op\":\n\tfallthrough\n"; done
switch hookCtx.OperationID {
case "post-auth0-register-internal":
fallthrough
case "get-auth0-organizations-internal":
fallthrough
case "get-users-internal":
fallthrough
case "post-oauth-device-authorize":
fallthrough
case "post-oauth-device-token":
fallthrough
case "post-oauth-device-authorize-user":
fallthrough
case "patch-oauth-device-confirm":
fallthrough
case "get-impersonation-settings":
fallthrough
case "update-impersonation-settings":
fallthrough
case "get-authentication-settings":
fallthrough
case "update-authentication-settings":
fallthrough
case "invite-user":
fallthrough
case "get-identity-providers":
fallthrough
case "create-identity-provider":
fallthrough
case "get-identity-provider":
fallthrough
case "update-identity-provider":
fallthrough
case "delete-identity-provider":
fallthrough
case "get-idp-configuration":
fallthrough
case "update-idp-configuration":
fallthrough
case "update-idp-team-mappings":
fallthrough
case "get-idp-team-mappings":
fallthrough
case "get-team-group-mappings":
fallthrough
case "patch-team-group-mappings":
fallthrough
case "get-predefined-roles":
fallthrough
case "list-teams":
fallthrough
case "create-team":
fallthrough
case "list-team-users":
fallthrough
case "add-user-to-team":
fallthrough
case "get-team":
fallthrough
case "update-team":
fallthrough
case "delete-team":
fallthrough
case "remove-user-from-team":
fallthrough
case "list-team-roles":
fallthrough
case "teams-assign-role":
fallthrough
case "teams-remove-role":
fallthrough
case "list-users":
fallthrough
case "get-user":
fallthrough
case "update-user":
fallthrough
case "delete-user":
fallthrough
case "list-user-teams":
fallthrough
case "list-user-roles":
fallthrough
case "users-assign-role":
fallthrough
case "users-remove-role":
fallthrough
case "get-system-accounts":
fallthrough
case "post-system-accounts":
fallthrough
case "get-system-accounts-id":
fallthrough
case "patch-system-accounts-id":
fallthrough
case "delete-system-accounts-id":
fallthrough
case "get-system-account-id-access-tokens":
fallthrough
case "post-system-accounts-id-access-tokens":
fallthrough
case "get-system-accounts-id-access-tokens-id":
fallthrough
case "patch-system-accounts-id-access-tokens-id":
fallthrough
case "delete-system-accounts-id-access-tokens-id":
fallthrough
case "get-system-accounts-assigned-roles-internal":
fallthrough
case "create-system-accounts-assigned-roles-internal":
fallthrough
case "get-system-accounts-accountId-assigned-roles":
fallthrough
case "post-system-accounts-accountId-assigned-roles":
fallthrough
case "delete-system-accounts-accountId-assigned-roles-roleId":
fallthrough
case "get-teams-teamId-system-accounts":
fallthrough
case "post-teams-teamId-system-accounts":
fallthrough
case "delete-teams-teamId-system-accounts-accountId":
fallthrough
case "get-system-accounts-accountId-teams":
fallthrough
case "get-users-me":
fallthrough
case "delete-users-me":
fallthrough
case "patch-users-me":
fallthrough
case "get-users-me-permissions":
fallthrough
case "get-organizations-me":
fallthrough
case "update-organizations-me":
fallthrough
case "refresh-token":
fallthrough
case "logout":
fallthrough
case "resolveCustomer":
fallthrough
case "authenticate-sso":
// NOTE(pmalek): This is because we merge OpenAPI specs and /organizations/me
// is only served by the global API.
// @mheap mentioned that we can add operation specific URLs to do away with this.
if strings.HasSuffix(req.URL.Host, "api.konghq.tech") {
req.URL.Host = "global.api.konghq.tech"
req.Host = "global.api.konghq.tech"
} else {
req.URL.Host = "global.api.konghq.com"
req.Host = "global.api.konghq.com"
}

default:

}
return req, nil
}
2 changes: 2 additions & 0 deletions internal/hooks/registration.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import "os"
func initHooks(h *Hooks) {
h.registerBeforeRequestHook(&UserAgentPreRequestHook{})

h.registerBeforeRequestHook(&GlobalAPIURLRequestHook{})

h.registerBeforeRequestHook(&APIURLRequestHook{
CustomDomain: os.Getenv("KONG_CUSTOM_DOMAIN"),
})
Expand Down
Loading
Loading