mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-13 00:59:10 +02:00
* OAuth proxy issues its own tokens Implement token factory pattern where proxy issues FastMCP JWTs instead of forwarding upstream tokens. Tokens are minimal references (JTI) that map to encrypted upstream credentials stored server-side. * Update run-tests.yml * Update secret generation and docs * Add upgrade guide
87 lines
2.5 KiB
YAML
87 lines
2.5 KiB
YAML
name: Tests
|
|
|
|
env:
|
|
# enable colored output
|
|
PY_COLORS: 1
|
|
|
|
on:
|
|
push:
|
|
branches: ["main"]
|
|
paths:
|
|
- "src/**"
|
|
- "tests/**"
|
|
- "uv.lock"
|
|
- "pyproject.toml"
|
|
- ".github/workflows/**"
|
|
|
|
# run on all pull requests because these checks are required and will block merges otherwise
|
|
pull_request:
|
|
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
run_tests:
|
|
name: "Run tests: Python ${{ matrix.python-version }} on ${{ matrix.os }}"
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
python-version: ["3.10"]
|
|
fail-fast: false
|
|
timeout-minutes: 10
|
|
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: "uv.lock"
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Install FastMCP
|
|
# run with upgrade to always test against the latest compatible versions
|
|
run: uv sync --upgrade
|
|
|
|
- name: Run tests (excluding integration and client_process)
|
|
run: |
|
|
if [ "${{ matrix.os }}" = "windows-latest" ]; then
|
|
uv run pytest --inline-snapshot=disable tests -m "not integration and not client_process"
|
|
else
|
|
uv run pytest --inline-snapshot=disable tests -m "not integration and not client_process" --numprocesses auto --maxprocesses 4 --dist worksteal
|
|
fi
|
|
shell: bash
|
|
|
|
- name: Run client process tests separately
|
|
run: uv run pytest --inline-snapshot=disable tests -m "client_process" -x
|
|
|
|
run_integration_tests:
|
|
name: "Run integration tests"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: "uv.lock"
|
|
python-version: "3.10"
|
|
|
|
- name: Install FastMCP
|
|
# run with upgrade to always test against the latest compatible versions
|
|
run: uv sync --upgrade
|
|
|
|
- name: Run integration tests
|
|
# use longer per-test timeout than the default 3s
|
|
run: uv run pytest tests -m "integration" --timeout=15 --numprocesses auto --maxprocesses 2 --dist worksteal
|
|
env:
|
|
FASTMCP_GITHUB_TOKEN: ${{ secrets.FASTMCP_GITHUB_TOKEN }}
|
|
FASTMCP_TEST_AUTH_GITHUB_CLIENT_ID: ${{ secrets.FASTMCP_TEST_AUTH_GITHUB_CLIENT_ID }}
|
|
FASTMCP_TEST_AUTH_GITHUB_CLIENT_SECRET: ${{ secrets.FASTMCP_TEST_AUTH_GITHUB_CLIENT_SECRET }}
|