From 7d31793d419ad6a07e3a8e38da235bc749f3c4e4 Mon Sep 17 00:00:00 2001 From: Joshua Weber <57131123+daschaa@users.noreply.github.com> Date: Tue, 24 Dec 2024 13:04:27 +0100 Subject: [PATCH 01/19] Add GitHub action to run tests on every commit to main and pull requests --- For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/daschaa/open-idp?shareId=XXXX-XXXX-XXXX-XXXX). --- .github/workflows/test.yml | 40 ++++++++++++++++++++++++++++++++++++++ Taskfile.yaml | 5 ++++- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..ce0eba1 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,40 @@ +name: Run Tests + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + test: + runs-on: ubuntu-latest + + services: + docker: + image: docker:19.03.12 + options: --privileged + ports: + - 2375:2375 + + steps: + - name: Check out repository + uses: actions/checkout@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Set up Docker Compose + uses: docker/setup-qemu-action@v1 + + - name: Run docker-compose + run: docker-compose -f docker/docker-compose.yml up -d + + - name: Install Task + run: | + sudo sh -c "curl -s https://taskfile.dev/install.sh | sh" + + - name: Run tests + run: task test diff --git a/Taskfile.yaml b/Taskfile.yaml index fbb5bf5..20db597 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -7,4 +7,7 @@ tasks: test: desc: test project cmds: [go test ./...] - + deps: [setup-local-db] + setup-local-db: + desc: run docker-compose + cmds: [docker-compose -f docker/docker-compose.yml up -d] From e0d9a3e070dbb1fc29b7f637f755fd6e201834e9 Mon Sep 17 00:00:00 2001 From: Joshua Weber <57131123+daschaa@users.noreply.github.com> Date: Tue, 24 Dec 2024 13:06:06 +0100 Subject: [PATCH 02/19] --- .github/workflows/test.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ce0eba1..a2f9e4e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,6 +29,11 @@ jobs: - name: Set up Docker Compose uses: docker/setup-qemu-action@v1 + - name: Install Docker Compose + run: | + sudo apt-get update + sudo apt-get install -y docker-compose + - name: Run docker-compose run: docker-compose -f docker/docker-compose.yml up -d From b7b683c26fe595b25a1717c9aae2c190dd8eebb9 Mon Sep 17 00:00:00 2001 From: Joshua Weber <57131123+daschaa@users.noreply.github.com> Date: Tue, 24 Dec 2024 13:09:53 +0100 Subject: [PATCH 03/19] Add GitHub Actions workflow for running tests * **.github/workflows/test.yml** - Create a new GitHub Actions workflow file - Add steps to check out the repository, set up Docker, and run the docker-compose file - Add steps to install Task and run the tests defined in the Taskfile - Configure the workflow to run on push to `main` and on pull requests * **Taskfile.yaml** - Rename the `docker-compose` task to `setup-local-db` - Update the `test` task to depend on the `setup-local-db` task --- .github/workflows/test.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a2f9e4e..9578106 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,13 +29,8 @@ jobs: - name: Set up Docker Compose uses: docker/setup-qemu-action@v1 - - name: Install Docker Compose - run: | - sudo apt-get update - sudo apt-get install -y docker-compose - - - name: Run docker-compose - run: docker-compose -f docker/docker-compose.yml up -d + - name: Run docker compose + run: docker compose -f docker/docker-compose.yml up -d - name: Install Task run: | From d295e9cd13c22efb8d8d272a70faa94f9463bcc7 Mon Sep 17 00:00:00 2001 From: Joshua Weber <57131123+daschaa@users.noreply.github.com> Date: Tue, 24 Dec 2024 13:11:29 +0100 Subject: [PATCH 04/19] Add GitHub Actions workflow for running tests * **.github/workflows/test.yml** - Create a new GitHub Actions workflow file - Add steps to check out the repository, set up Docker, and run the docker-compose file - Add steps to install Task and run the tests defined in the Taskfile - Configure the workflow to run on push to `main` and on pull requests * **Taskfile.yaml** - Rename the `docker-compose` task to `setup-local-db` - Update the `test` task to depend on the `setup-local-db` task --- .github/workflows/test.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9578106..13968b6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,12 +29,13 @@ jobs: - name: Set up Docker Compose uses: docker/setup-qemu-action@v1 - - name: Run docker compose - run: docker compose -f docker/docker-compose.yml up -d + - name: Run docker-compose + run: docker-compose -f docker/docker-compose.yml up -d - name: Install Task run: | sudo sh -c "curl -s https://taskfile.dev/install.sh | sh" + sudo mv ./bin/task /usr/local/bin/task - name: Run tests run: task test From 3ab284b586e2e3c9acb7ee1a3fff8c8625280d07 Mon Sep 17 00:00:00 2001 From: Joshua Weber <57131123+daschaa@users.noreply.github.com> Date: Tue, 24 Dec 2024 12:15:57 +0000 Subject: [PATCH 05/19] changes workflow --- .github/workflows/test.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 13968b6..0d3b728 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,12 +30,12 @@ jobs: uses: docker/setup-qemu-action@v1 - name: Run docker-compose - run: docker-compose -f docker/docker-compose.yml up -d - + run: docker compose -f docker/docker-compose.yml up -d - name: Install Task - run: | - sudo sh -c "curl -s https://taskfile.dev/install.sh | sh" - sudo mv ./bin/task /usr/local/bin/task - + uses: arduino/setup-task@v2 + with: + version: 3.x + repo-token: ${{ secrets.GITHUB_TOKEN }} + - name: Run tests run: task test From b0bc3b94ac2bd0b64e1c19021af7b6c1d7494ab2 Mon Sep 17 00:00:00 2001 From: Joshua Weber <57131123+daschaa@users.noreply.github.com> Date: Tue, 24 Dec 2024 12:17:27 +0000 Subject: [PATCH 06/19] refactors taskfile --- Taskfile.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Taskfile.yaml b/Taskfile.yaml index 20db597..2ae7a58 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -7,7 +7,3 @@ tasks: test: desc: test project cmds: [go test ./...] - deps: [setup-local-db] - setup-local-db: - desc: run docker-compose - cmds: [docker-compose -f docker/docker-compose.yml up -d] From 8c7df981cfa6e2eb071dfa81bdfd994f2bd6958a Mon Sep 17 00:00:00 2001 From: Joshua Weber <57131123+daschaa@users.noreply.github.com> Date: Tue, 24 Dec 2024 13:59:22 +0000 Subject: [PATCH 07/19] chamges docker compose install --- .github/workflows/test.yml | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0d3b728..dc390ce 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,23 +12,20 @@ jobs: test: runs-on: ubuntu-latest - services: - docker: - image: docker:19.03.12 - options: --privileged - ports: - - 2375:2375 - steps: - name: Check out repository uses: actions/checkout@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - - name: Set up Docker Compose - uses: docker/setup-qemu-action@v1 - + - name: Install Docker using Docker's official script + run: | + curl -fsSL https://get.docker.com -o get-docker.sh + sudo sh get-docker.sh + continue-on-error: false + - name: Install Docker Compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + docker-compose --version + continue-on-error: false - name: Run docker-compose run: docker compose -f docker/docker-compose.yml up -d - name: Install Task From ee56d77cac00c835bba48c7473bed2077de38708 Mon Sep 17 00:00:00 2001 From: Joshua Weber <57131123+daschaa@users.noreply.github.com> Date: Tue, 24 Dec 2024 14:19:46 +0000 Subject: [PATCH 08/19] adds clients table --- docker/docker-compose.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 0be4834..0a6e557 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -8,4 +8,14 @@ services: - "8000:8000" volumes: - "./dynamodb:/home/dynamodblocal/data" - working_dir: /home/dynamodblocal \ No newline at end of file + working_dir: /home/dynamodblocal + entrypoint: > + sh -c " + aws dynamodb create-table \ + --table-name clients \ + --attribute-definitions AttributeName=clientId,AttributeType=S \ + --key-schema AttributeName=clientId,KeyType=HASH \ + --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ + --endpoint-url http://localhost:8000 + wait + " \ No newline at end of file From 64fc0525ad1caa23a00f379cd23065407f897ab6 Mon Sep 17 00:00:00 2001 From: daschaa Date: Sun, 29 Dec 2024 21:37:37 +0100 Subject: [PATCH 09/19] delete some unnecessary stuff --- .github/workflows/test.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dc390ce..bbc3785 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,21 +11,9 @@ on: jobs: test: runs-on: ubuntu-latest - steps: - name: Check out repository uses: actions/checkout@v2 - - name: Install Docker using Docker's official script - run: | - curl -fsSL https://get.docker.com -o get-docker.sh - sudo sh get-docker.sh - continue-on-error: false - - name: Install Docker Compose - run: | - sudo curl -L "https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - sudo chmod +x /usr/local/bin/docker-compose - docker-compose --version - continue-on-error: false - name: Run docker-compose run: docker compose -f docker/docker-compose.yml up -d - name: Install Task @@ -33,6 +21,5 @@ jobs: with: version: 3.x repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Run tests run: task test From 480b502290f5cf60156b5615ce5056623385e97f Mon Sep 17 00:00:00 2001 From: daschaa Date: Sun, 29 Dec 2024 21:49:31 +0100 Subject: [PATCH 10/19] adds table creation --- .github/workflows/test.yml | 8 ++++++++ docker/docker-compose.yml | 12 +----------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bbc3785..f73fb52 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,5 +21,13 @@ jobs: with: version: 3.x repo-token: ${{ secrets.GITHUB_TOKEN }} + - name: Create DynamoDB table + run: | + aws dynamodb create-table \ + --table-name clients \ + --attribute-definitions AttributeName=clientId,AttributeType=S \ + --key-schema AttributeName=clientId,KeyType=HASH \ + --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ + --endpoint-url http://localhost:8000 - name: Run tests run: task test diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 0a6e557..0be4834 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -8,14 +8,4 @@ services: - "8000:8000" volumes: - "./dynamodb:/home/dynamodblocal/data" - working_dir: /home/dynamodblocal - entrypoint: > - sh -c " - aws dynamodb create-table \ - --table-name clients \ - --attribute-definitions AttributeName=clientId,AttributeType=S \ - --key-schema AttributeName=clientId,KeyType=HASH \ - --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ - --endpoint-url http://localhost:8000 - wait - " \ No newline at end of file + working_dir: /home/dynamodblocal \ No newline at end of file From 906a02eeb388ac5b47ef119e220439436465b657 Mon Sep 17 00:00:00 2001 From: daschaa Date: Sun, 29 Dec 2024 21:51:16 +0100 Subject: [PATCH 11/19] adds region --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f73fb52..611d107 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,6 +24,7 @@ jobs: - name: Create DynamoDB table run: | aws dynamodb create-table \ + --region eu-west-1 \ --table-name clients \ --attribute-definitions AttributeName=clientId,AttributeType=S \ --key-schema AttributeName=clientId,KeyType=HASH \ From 9f011ac0f28c13ec9331c7296ec3cac25a528e4f Mon Sep 17 00:00:00 2001 From: daschaa Date: Sun, 29 Dec 2024 21:54:33 +0100 Subject: [PATCH 12/19] adds dummy credentials for unit test --- .github/workflows/test.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 611d107..8df8672 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,6 +21,11 @@ jobs: with: version: 3.x repo-token: ${{ secrets.GITHUB_TOKEN }} + - name: Set AWS credentials + run: | + export AWS_ACCESS_KEY_ID="DUMMYIDEXAMPLE" + export AWS_SECRET_ACCESS_KEY="DUMMYEXAMPLEKEY" + export AWS_SESSION_TOKEN="dummy" - name: Create DynamoDB table run: | aws dynamodb create-table \ From 8536757d5bc803ee6d2478bb829b79ab2859d9ba Mon Sep 17 00:00:00 2001 From: daschaa Date: Sun, 29 Dec 2024 22:02:02 +0100 Subject: [PATCH 13/19] moves credentials right before aws cli execution --- .github/workflows/test.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8df8672..7709456 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,13 +21,11 @@ jobs: with: version: 3.x repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Set AWS credentials + - name: Create DynamoDB table run: | export AWS_ACCESS_KEY_ID="DUMMYIDEXAMPLE" export AWS_SECRET_ACCESS_KEY="DUMMYEXAMPLEKEY" export AWS_SESSION_TOKEN="dummy" - - name: Create DynamoDB table - run: | aws dynamodb create-table \ --region eu-west-1 \ --table-name clients \ From e36a9e87e895b85c89663d802a6363e8d882f054 Mon Sep 17 00:00:00 2001 From: daschaa Date: Sun, 29 Dec 2024 22:07:33 +0100 Subject: [PATCH 14/19] adds no-cli-pager option --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7709456..1eb4680 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,6 +32,7 @@ jobs: --attribute-definitions AttributeName=clientId,AttributeType=S \ --key-schema AttributeName=clientId,KeyType=HASH \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ - --endpoint-url http://localhost:8000 + --endpoint-url http://localhost:8000 \ + --no-cli-pager - name: Run tests run: task test From 916c2265d98114196fa7d3596f3d482798cea8b2 Mon Sep 17 00:00:00 2001 From: daschaa Date: Mon, 30 Dec 2024 21:31:36 +0100 Subject: [PATCH 15/19] adds wait script --- .github/workflows/test.yml | 1 + docker/wait-for-db.sh | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100755 docker/wait-for-db.sh diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1eb4680..6db46b4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,6 +26,7 @@ jobs: export AWS_ACCESS_KEY_ID="DUMMYIDEXAMPLE" export AWS_SECRET_ACCESS_KEY="DUMMYEXAMPLEKEY" export AWS_SESSION_TOKEN="dummy" + ./docker/wait-for-db.sh aws dynamodb create-table \ --region eu-west-1 \ --table-name clients \ diff --git a/docker/wait-for-db.sh b/docker/wait-for-db.sh new file mode 100755 index 0000000..279c9fd --- /dev/null +++ b/docker/wait-for-db.sh @@ -0,0 +1,10 @@ +#!/bin/bash +export AWS_ACCESS_KEY_ID="DUMMYIDEXAMPLE" +export AWS_SECRET_ACCESS_KEY="DUMMYEXAMPLEKEY" +export AWS_SESSION_TOKEN="dummy" +until aws --region us-east-1 --endpoint-url=http://localhost:8000 dynamodb list-tables; do + >&2 echo "DynamoDB is unavailable - sleeping" + sleep 1 +done + +echo "DynamoDB is available" \ No newline at end of file From 321df2a717a71c3a0ecd2532bfc5059e4dee237b Mon Sep 17 00:00:00 2001 From: daschaa Date: Wed, 1 Jan 2025 12:37:40 +0100 Subject: [PATCH 16/19] changes workflow to use services and env variables --- .github/workflows/test.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6db46b4..f6441c4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,21 +11,25 @@ on: jobs: test: runs-on: ubuntu-latest + services: + dynamodb: + image: amazon/dynamodb-local + ports: + - 8000:8000 steps: - name: Check out repository uses: actions/checkout@v2 - - name: Run docker-compose - run: docker compose -f docker/docker-compose.yml up -d - name: Install Task uses: arduino/setup-task@v2 with: version: 3.x repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Create DynamoDB table + env: + AWS_ACCESS_KEY_ID: DUMMYIDEXAMPLE + AWS_SECRET_ACCESS_KEY: DUMMYEXAMPLEKEY + AWS_SESSION_TOKEN: dummy run: | - export AWS_ACCESS_KEY_ID="DUMMYIDEXAMPLE" - export AWS_SECRET_ACCESS_KEY="DUMMYEXAMPLEKEY" - export AWS_SESSION_TOKEN="dummy" ./docker/wait-for-db.sh aws dynamodb create-table \ --region eu-west-1 \ @@ -36,4 +40,8 @@ jobs: --endpoint-url http://localhost:8000 \ --no-cli-pager - name: Run tests + env: + AWS_ACCESS_KEY_ID: DUMMYIDEXAMPLE + AWS_SECRET_ACCESS_KEY: DUMMYEXAMPLEKEY + AWS_SESSION_TOKEN: dummy run: task test From bd9fb101c0121fa4c602e466fa5acea27820b8fc Mon Sep 17 00:00:00 2001 From: daschaa Date: Wed, 1 Jan 2025 12:39:13 +0100 Subject: [PATCH 17/19] moves env variables to workflow --- .github/workflows/test.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f6441c4..08a1401 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,6 +7,12 @@ on: pull_request: branches: - main +env: + AWS_REGION: eu-west-1 + AWS_DEFAULT_REGION: eu-west-1 + AWS_ACCESS_KEY_ID: DUMMYIDEXAMPLE + AWS_SECRET_ACCESS_KEY: DUMMYEXAMPLEKEY + AWS_SESSION_TOKEN: dummy jobs: test: @@ -25,10 +31,6 @@ jobs: version: 3.x repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Create DynamoDB table - env: - AWS_ACCESS_KEY_ID: DUMMYIDEXAMPLE - AWS_SECRET_ACCESS_KEY: DUMMYEXAMPLEKEY - AWS_SESSION_TOKEN: dummy run: | ./docker/wait-for-db.sh aws dynamodb create-table \ @@ -40,8 +42,4 @@ jobs: --endpoint-url http://localhost:8000 \ --no-cli-pager - name: Run tests - env: - AWS_ACCESS_KEY_ID: DUMMYIDEXAMPLE - AWS_SECRET_ACCESS_KEY: DUMMYEXAMPLEKEY - AWS_SESSION_TOKEN: dummy run: task test From 34e80cb7bdf30c03ac2ddada93b390de38cd76a9 Mon Sep 17 00:00:00 2001 From: daschaa Date: Wed, 1 Jan 2025 12:41:11 +0100 Subject: [PATCH 18/19] adds verbose flag to go tests --- Taskfile.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskfile.yaml b/Taskfile.yaml index 2ae7a58..7290877 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -6,4 +6,4 @@ tasks: cmds: [go build -o build/server/idp-server cmd/server/main.go] test: desc: test project - cmds: [go test ./...] + cmds: [go test -v ./...] From 1621c3762cc59f55ce5d038d87ad92fea3b368d3 Mon Sep 17 00:00:00 2001 From: daschaa Date: Wed, 1 Jan 2025 12:47:55 +0100 Subject: [PATCH 19/19] adds go test formatter --- .github/workflows/test.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 08a1401..8f71b3d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,5 +41,11 @@ jobs: --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ --endpoint-url http://localhost:8000 \ --no-cli-pager + - name: Set up gotestfmt + uses: gotesttools/gotestfmt-action@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} - name: Run tests - run: task test + run: | + set -euo pipefail + go test -json -v ./... 2>&1 | tee /tmp/gotest.log | gotestfmt