Skip to content

ci: backend-sdk-testing #578

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

Merged
merged 2 commits into from
Apr 21, 2025
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
91 changes: 91 additions & 0 deletions .github/workflows/backend-sdk-testing.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: "Backend SDK Tests"

on:
pull_request:
types:
- opened
- reopened
- synchronize
push:
branches:
- master
- "v[0-9]+.[0-9]+"
tags:
- "(dev-)?v[0-9]+.[0-9]+.[0-9]+"

jobs:
define-versions:
runs-on: ubuntu-latest
outputs:
fdiVersions: ${{ steps.versions.outputs.fdiVersions }}
cdiVersions: ${{ steps.versions.outputs.cdiVersions }}
pyVersions: '["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]'
nodeVersions: '["20"]'
steps:
- uses: actions/checkout@v4
- uses: supertokens/get-supported-versions-action@main
id: versions
with:
has-fdi: true
has-cdi: true

test:
runs-on: ubuntu-latest
needs: define-versions

strategy:
fail-fast: false
matrix:
cdi-version: ${{ fromJSON(needs.define-versions.outputs.cdiVersions) }}
fdi-version: ${{ fromJSON(needs.define-versions.outputs.fdiVersions) }}
py-version: ${{ fromJson(needs.define-versions.outputs.pyVersions) }}
node-version: ${{ fromJson(needs.define-versions.outputs.nodeVersions) }}

env:
API_PORT: 3030
SUPERTOKENS_CORE_PORT: 3567
SUPERTOKENS_CORE_HOST: localhost

steps:
- uses: actions/checkout@v4
with:
# Checking out to a custom path since the test repo will also be cloned
path: supertokens-python

- uses: supertokens/get-versions-action@main
id: versions
with:
driver-name: python
cdi-version: ${{ matrix.cdi-version }}
fdi-version: ${{ matrix.fdi-version }}
env:
SUPERTOKENS_API_KEY: ${{ secrets.SUPERTOKENS_API_KEY }}

- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Create virtual environment and install dependencies
working-directory: supertokens-python
# Upgrade `pip` and `setuptools` to have the latest versions before further installs
run: |
python3 -m venv venv
source venv/bin/activate
python3 -m pip install pip setuptools --upgrade
make dev-install && rm -rf src
- name: Start core and server
working-directory: supertokens-python
env:
SUPERTOKENS_ENV: testing
SUPERTOKENS_CORE_VERSION: ${{ steps.versions.outputs.coreVersionXy }}
run: |
source venv/bin/activate
docker compose up --build --wait
python3 tests/test-server/app.py &
- uses: supertokens/backend-sdk-testing-action@main
with:
version: ${{ matrix.fdi-version }}
check-name-suffix: '[CDI=${{ matrix.cdi-version }}][Core=${{ steps.versions.outputs.coreVersionXy }}][FDI=${{ matrix.fdi-version }}][Py=${{ matrix.py-version }}][Node=${{ matrix.node-version }}]'
path: backend-sdk-testing
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0


## [unreleased]
- Sets up workflow to run backend-sdk-testing
- Updates test-servers to work with updated tests

## [0.29.1] - 2025-04-11
- Fixes an issue where `removeDevice` API allowed removing TOTP devices without the user completing MFA.
Expand Down
10 changes: 10 additions & 0 deletions compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,18 @@ services:
# Uses `$SUPERTOKENS_CORE_PORT` when available, else 3567 for local port
- ${SUPERTOKENS_CORE_PORT:-3567}:3567
platform: linux/amd64
depends_on: [oauth]
environment:
OAUTH_PROVIDER_PUBLIC_SERVICE_URL: http://oauth:4444
OAUTH_PROVIDER_ADMIN_SERVICE_URL: http://oauth:4445
OAUTH_PROVIDER_CONSENT_LOGIN_BASE_URL: http://localhost:3001/auth
OAUTH_CLIENT_SECRET_ENCRYPTION_KEY: asdfasdfasdfasdfasdf
healthcheck:
test: bash -c 'curl -s "http://127.0.0.1:3567/hello" | grep "Hello"'
interval: 10s
timeout: 5s
retries: 5

oauth:
image: supertokens/oauth2-test:latest
platform: linux/amd64
12 changes: 11 additions & 1 deletion tests/test-server/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,17 @@ def origin_func( # pylint: disable=unused-argument, dangerous-default-value
return origin
return "http://localhost:8080"

core_host: str = os.environ.get("SUPERTOKENS_CORE_HOST", "localhost")
core_port: str = os.environ.get("SUPERTOKENS_CORE_PORT", "3567")
core_url = f"http://{core_host}:{core_port}"

init(
app_info=InputAppInfo(
app_name="SuperTokens",
api_domain="http://api.supertokens.io",
origin=origin_func,
),
supertokens_config=SupertokensConfig(connection_uri="http://localhost:3567"),
supertokens_config=SupertokensConfig(connection_uri=core_url),
framework="flask",
recipe_list=[emailpassword.init(), session.init()],
)
Expand Down Expand Up @@ -739,6 +743,12 @@ def reset_override_params_api():
return jsonify({"ok": True})


@app.route("/test/resetoverridelogs", methods=["GET"]) # type: ignore
def reset_override_logs():
override_logging.reset_override_logs()
return jsonify({"ok": True})


@app.route("/test/getoverridelogs", methods=["GET"]) # type: ignore
def get_override_logs():
return jsonify({"logs": override_logging.override_logs})
Expand Down