key-cape/.forgejo/workflows/acceptance.yaml
tegwick cb51584f58
All checks were successful
Authentication acceptance / acceptance (push) Successful in 1m14s
Authentication acceptance / provider-contract (push) Successful in 13s
Connect P04 audited recovery to fresh-MFA platform browser flow
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a092fe-13b1-7f12-ac74-7d258af4d79c
2026-09-13 21:05:33 +02:00

41 lines
2.1 KiB
YAML

name: Authentication acceptance
on:
push:
branches: [main]
paths: ["src/**", "scripts/provider-onboarding-contract.py", "scripts/factor_recovery.py", "scripts/test_factor_recovery.py", "scripts/recovery_service.py", "scripts/test_recovery_service.py", ".forgejo/workflows/acceptance.yaml"]
workflow_dispatch:
jobs:
acceptance:
runs-on: ubuntu-latest
container:
image: golang:1.23-alpine
steps:
- name: Test exact source revision
run: |
set -eu
wget -qO /tmp/keycape-source.tar.gz "https://forgejo.coulomb.social/${GITHUB_REPOSITORY}/archive/${GITHUB_SHA}.tar.gz"
mkdir -p /tmp/keycape-acceptance
tar xzf /tmp/keycape-source.tar.gz -C /tmp/keycape-acceptance --strip-components=1
cd /tmp/keycape-acceptance/src
/usr/local/go/bin/go test ./...
provider-contract:
runs-on: ubuntu-latest
container:
image: ghcr.io/gpappsoft/privacyidea-docker@sha256:af7841adad262f129e0c1d4f553af13f21cb2f4dc713533f316cfe43ed0b4473
steps:
- name: Exercise isolated provider enrollment and recovery
run: |
python3 - <<'PYCODE'
import os,tarfile,tempfile,urllib.request,subprocess
from pathlib import Path
with tempfile.TemporaryDirectory(prefix='keycape-provider-ci-') as directory:
root=Path(directory)
url='https://forgejo.coulomb.social/'+os.environ['GITHUB_REPOSITORY']+'/archive/'+os.environ['GITHUB_SHA']+'.tar.gz'
with urllib.request.urlopen(url,timeout=30) as response,tempfile.TemporaryFile() as archive:
archive.write(response.read());archive.seek(0)
with tarfile.open(fileobj=archive,mode='r:gz') as tar:tar.extractall(root,filter='data')
script=next(root.glob('*/scripts/provider-onboarding-contract.py'))
subprocess.run(['python3','-m','unittest','discover','-s',str(script.parent),'-p','test_*recovery*.py'],check=True,timeout=30)
subprocess.run(['python3',str(script)],check=True,timeout=90)
PYCODE