Skip to content

Commit

Permalink
ci: add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
pmalek committed Nov 25, 2024
1 parent 4f50eb7 commit 5632e50
Show file tree
Hide file tree
Showing 6 changed files with 144 additions and 0 deletions.
51 changes: 51 additions & 0 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
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'
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 }}
10 changes: 10 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -107,3 +107,13 @@ 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:
go test -v -race ./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=
29 changes: 29 additions & 0 deletions test/integration/envs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package integration

import (
"os"
"testing"

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

const (
// KonnectPersonalAccessTokenEnv is the environment variable name for the Konnect PAT.
KonnectPersonalAccessTokenEnv = "KONNECT_API_PAT"
// KonnectURLEnv is the environment variable name for the Konnect URL.
KonnectURLEnv = "KONNECT_API_URL"
)

// KonnectPersonalAccessToken returns the Konnect PAT from the environment.
func KonnectPersonalAccessToken(t *testing.T) string {
token := os.Getenv(KonnectPersonalAccessTokenEnv)
require.NotEmptyf(t, token, "%s is not set", KonnectPersonalAccessTokenEnv)
return token
}

// KonnectURL returns the Konnect url from the environment.
func KonnectURL(t *testing.T) string {
url := os.Getenv(KonnectURLEnv)
require.NotEmptyf(t, url, "%s is not set", KonnectURLEnv)
return url
}
37 changes: 37 additions & 0 deletions test/integration/me_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package integration

import (
"context"
"testing"

"github.com/stretchr/testify/require"

sdkkonnectgo "github.com/Kong/sdk-konnect-go"
sdkkonnectcomp "github.com/Kong/sdk-konnect-go/models/components"
sdkkonnectops "github.com/Kong/sdk-konnect-go/models/operations"
)

func TestMe(t *testing.T) {
pat := KonnectPersonalAccessToken(t)
url := KonnectURL(t)
sdk := sdkkonnectgo.New(
sdkkonnectgo.WithSecurity(
sdkkonnectcomp.Security{
PersonalAccessToken: sdkkonnectgo.String(pat),
},
),
sdkkonnectgo.WithServerURL(url),
)
require.NotNil(t, sdk)

ctx := context.Background()
// NOTE: This is needed because currently the SDK only lists the prod global API as supported:
// https://github.com/Kong/sdk-konnect-go/blob/999d9a987e1aa7d2e09ac11b1450f4563adf21ea/models/operations/getorganizationsme.go#L10-L12
respOrg, err := sdk.Me.GetOrganizationsMe(ctx, sdkkonnectops.WithServerURL(url))
require.NoError(t, err)
require.NotNil(t, respOrg)
require.NotEmpty(t, respOrg.MeOrganization.ID)
require.NotEmpty(t, respOrg.MeOrganization.Name)
require.NotNil(t, respOrg.MeOrganization.State)
require.EqualValues(t, "active", *respOrg.MeOrganization.State)
}

0 comments on commit 5632e50

Please sign in to comment.