Skip to content

Commit 88c11ca

Browse files
committed
Add tools to run e2e tests locally
1 parent ef15590 commit 88c11ca

23 files changed

Lines changed: 323 additions & 725 deletions

.env.dev.example

Lines changed: 0 additions & 10 deletions
This file was deleted.

.github/workflows/e2e.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@ jobs:
9494
9595
echo "OIDC_SCOPE=$(terraform output -raw oidc_scope)" >> "$GITHUB_ENV"
9696
97+
echo "APPSYNC_E2E_NS_API_KEY=$(terraform output -raw namespace_api_key)" >> "$GITHUB_ENV"
98+
echo "APPSYNC_E2E_NS_IAM=$(terraform output -raw namespace_iam)" >> "$GITHUB_ENV"
99+
echo "APPSYNC_E2E_NS_LAMBDA=$(terraform output -raw namespace_lambda)" >> "$GITHUB_ENV"
100+
echo "APPSYNC_E2E_NS_COGNITO=$(terraform output -raw namespace_cognito)" >> "$GITHUB_ENV"
101+
echo "APPSYNC_E2E_NS_OIDC=$(terraform output -raw namespace_oidc)" >> "$GITHUB_ENV"
102+
97103
- name: Create Cognito user and export ID token
98104
run: |
99105
set -euo pipefail

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
.env
2+
.env.e2e
23
dist/
34

45
**/.terraform

.go-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.24.13
1+
1.26.2

Makefile

Lines changed: 10 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,19 @@
1-
include .env
2-
export
3-
4-
.PHONY: deploy destroy plan dev tf-output build-authorizer create-user authenticate-user oauth-user
5-
6-
deploy:
7-
cd terraform && terraform apply -auto-approve
8-
9-
destroy:
10-
cd terraform && terraform destroy -auto-approve
11-
12-
plan:
13-
cd terraform && terraform plan
14-
15-
tf-output:
16-
cd terraform && terraform output
17-
18-
dev:
19-
APPSYNC_API_KEY=$(APPSYNC_API_KEY) \
20-
HTTP_ENDPOINT=$(HTTP_ENDPOINT) \
21-
WS_ENDPOINT=$(WS_ENDPOINT) \
22-
CHANNEL=$(CHANNEL) \
23-
AWS_REGION=$(AWS_REGION) \
24-
ID_TOKEN=$(ID_TOKEN) \
25-
OIDC_TOKEN=$(OIDC_TOKEN) \
26-
go run ./internal/cmd/dev/
1+
.PHONY: build-authorizer e2e e2e-setup e2e-test e2e-teardown
272

283
build-authorizer:
294
mkdir -p dist/authorizer
305
GOOS=linux GOARCH=arm64 go build -o dist/authorizer/bootstrap ./internal/cmd/authorizer/
316
cd dist/authorizer && zip -j function.zip bootstrap
327

33-
create-user:
34-
ifndef USERNAME
35-
$(error USERNAME is not set. Usage: make create-user USERNAME=<user> PASSWORD=<pass>)
36-
endif
37-
ifndef PASSWORD
38-
$(error PASSWORD is not set. Usage: make create-user USERNAME=<user> PASSWORD=<pass>)
39-
endif
40-
bash scripts/create-user.sh "$(USERNAME)" "$(PASSWORD)"
41-
$(MAKE) authenticate-user
8+
e2e-setup:
9+
bash scripts/e2e-setup.sh
4210

43-
authenticate-user:
44-
ifndef USERNAME
45-
$(error USERNAME is not set. Usage: make authenticate-user USERNAME=<user> PASSWORD=<pass>)
46-
endif
47-
ifndef PASSWORD
48-
$(error PASSWORD is not set. Usage: make authenticate-user USERNAME=<user> PASSWORD=<pass>)
49-
endif
50-
bash scripts/authenticate-user.sh "$(USERNAME)" "$(PASSWORD)"
11+
e2e-test:
12+
set -a && source .env.e2e && set +a && \
13+
go test -tags=e2e ./e2e -count=1 -timeout=3m -v
5114

52-
oauth-user:
53-
bash scripts/oauth-user.sh
15+
e2e-teardown:
16+
bash scripts/e2e-teardown.sh
5417

18+
e2e: e2e-setup
19+
$(MAKE) e2e-test; $(MAKE) e2e-teardown

e2e/e2e_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func TestAppSyncAuthorizers(t *testing.T) {
2828
cases := []auth_case{
2929
{
3030
name: "api_key",
31-
namespace: "api-key-e2e",
31+
namespace: require_env(t, "APPSYNC_E2E_NS_API_KEY"),
3232
authz: func(endpoint string) (authorizer.Authorizer, error) {
3333
return authorizer.ApiKey(authorizer.ApiKeyAuthorizerConfig{
3434
ApiKey: require_env(t, "APPSYNC_E2E_API_KEY"),
@@ -38,7 +38,7 @@ func TestAppSyncAuthorizers(t *testing.T) {
3838
},
3939
{
4040
name: "iam",
41-
namespace: "iam-e2e",
41+
namespace: require_env(t, "APPSYNC_E2E_NS_IAM"),
4242
authz: func(endpoint string) (authorizer.Authorizer, error) {
4343
return authorizer.IAM(authorizer.IAMAuthorizerConfig{
4444
Region: aws_region,
@@ -48,7 +48,7 @@ func TestAppSyncAuthorizers(t *testing.T) {
4848
},
4949
{
5050
name: "lambda",
51-
namespace: "lambda-e2e",
51+
namespace: require_env(t, "APPSYNC_E2E_NS_LAMBDA"),
5252
authz: func(endpoint string) (authorizer.Authorizer, error) {
5353
return authorizer.Token(authorizer.TokenAuthorizerConfig{
5454
AuthToken: require_env(t, "APPSYNC_E2E_LAMBDA_TOKEN"),
@@ -58,7 +58,7 @@ func TestAppSyncAuthorizers(t *testing.T) {
5858
},
5959
{
6060
name: "cognito",
61-
namespace: "cognito-e2e",
61+
namespace: require_env(t, "APPSYNC_E2E_NS_COGNITO"),
6262
authz: func(endpoint string) (authorizer.Authorizer, error) {
6363
return authorizer.Token(authorizer.TokenAuthorizerConfig{
6464
AuthToken: require_env(t, "APPSYNC_E2E_COGNITO_ID_TOKEN"),
@@ -68,7 +68,7 @@ func TestAppSyncAuthorizers(t *testing.T) {
6868
},
6969
{
7070
name: "oidc",
71-
namespace: "oidc-e2e",
71+
namespace: require_env(t, "APPSYNC_E2E_NS_OIDC"),
7272
authz: func(endpoint string) (authorizer.Authorizer, error) {
7373
return authorizer.Token(authorizer.TokenAuthorizerConfig{
7474
AuthToken: require_env(t, "APPSYNC_E2E_OIDC_TOKEN"),

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/exanubes/appsync
22

3-
go 1.24
3+
go 1.26
44

55
require (
66
github.com/aws/aws-lambda-go v1.54.0

internal/cmd/dev/main.go

Lines changed: 0 additions & 120 deletions
This file was deleted.

scripts/authenticate-user.sh

Lines changed: 0 additions & 51 deletions
This file was deleted.

scripts/create-user.sh

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)