102 lines
3.7 KiB
Markdown
102 lines
3.7 KiB
Markdown
# ST Flow Tests
|
|
|
|
Canonical test harness for Axway SecureTransport Advanced Routing flows.
|
|
|
|
## Purpose
|
|
|
|
This repo provides:
|
|
- **Fixture files** — deterministic test inputs with known content and checksums
|
|
- **Test runner** — automated upload → route → verify cycle via SFTP and ST API
|
|
- **Flow specs** — declarative YAML definitions of reference AR flows
|
|
- **Machine context** — structured metadata for AI agents building/testing flows
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# Configure environment
|
|
cp env.example .env
|
|
# Edit .env with your ST host, credentials, SFTP target, and partner destination
|
|
|
|
# Install dependencies
|
|
pip install -r requirements.txt
|
|
|
|
# Run full test suite against a configured flow
|
|
python scripts/run_tests.py --spec specs/compress-pgp-passthrough.yaml --env .env
|
|
```
|
|
|
|
## Test Suite Structure
|
|
|
|
```
|
|
fixtures/ # Canonical input files (committed, never regenerated)
|
|
test.txt # Plain text — expected: compressed to .zip
|
|
test.md # Markdown — expected: PGP encrypted to .md.pgp
|
|
test.csv # CSV — expected: pass-through, unchanged
|
|
test.pdf # PDF stub — expected: pass-through, unchanged
|
|
test.jpg # JPEG stub — expected: pass-through, unchanged
|
|
|
|
specs/ # Declarative flow definitions
|
|
compress-pgp-passthrough.yaml # Reference 3-step flow
|
|
schema.md # Spec format documentation
|
|
|
|
scripts/
|
|
run_tests.py # Main test runner
|
|
st_env_snapshot.py # Query live ST environment for context injection
|
|
st_deploy.py # Idempotent deploy from spec YAML
|
|
|
|
results/ # Test run output (gitignored)
|
|
.gitkeep
|
|
```
|
|
|
|
## Test Matrix
|
|
|
|
| Fixture | Expected Transformation | Verification Method |
|
|
|---------|------------------------|---------------------|
|
|
| `test.txt` | Compressed → `test.txt.zip` | Filename suffix + size increase |
|
|
| `test.md` | PGP encrypted → `test.md.pgp` | Filename suffix + binary PGP header `0xC1` |
|
|
| `test.csv` | Pass-through — unchanged | Filename exact match + byte-for-byte size |
|
|
| `test.pdf` | Pass-through — unchanged | Filename exact match + byte-for-byte size |
|
|
| `test.jpg` | Pass-through — unchanged | Filename exact match + byte-for-byte size |
|
|
|
|
## Environment Variables
|
|
|
|
| Variable | Description |
|
|
|----------|-------------|
|
|
| `ST_HOST` | ST admin host (e.g. `192.168.0.245`) |
|
|
| `ST_ADMIN_PORT` | Admin API port (default `444`) |
|
|
| `ST_ADMIN_USER` | Admin username |
|
|
| `ST_ADMIN_PASS` | Admin password |
|
|
| `ST_SFTP_HOST` | ST SFTP host |
|
|
| `ST_SFTP_PORT` | SFTP port (default `8022`) |
|
|
| `ST_SFTP_USER` | SFTP upload account |
|
|
| `ST_SFTP_PASS` | SFTP upload password |
|
|
| `ST_SFTP_UPLOAD_DIR` | Remote upload directory (e.g. `/skill-test`) |
|
|
| `PARTNER_SSH_HOST` | Partner destination host |
|
|
| `PARTNER_SSH_PORT` | Partner SSH port |
|
|
| `PARTNER_SSH_USER` | Partner SSH user |
|
|
| `PARTNER_SSH_KEY` | Path to partner SSH private key |
|
|
| `PARTNER_DEST_DIR` | Partner destination directory to verify |
|
|
| `ROUTING_TIMEOUT_SEC` | Seconds to wait for routing to complete (default `30`) |
|
|
|
|
## Fixture Checksums (SHA-256)
|
|
|
|
Fixtures are committed with known content. Verify before running:
|
|
|
|
```bash
|
|
sha256sum fixtures/*
|
|
```
|
|
|
|
Expected values are recorded in `fixtures/CHECKSUMS`.
|
|
|
|
## Adding a New Test Case
|
|
|
|
1. Add the fixture file to `fixtures/` with deterministic content
|
|
2. Update `fixtures/CHECKSUMS`
|
|
3. Add a row to the test matrix in `MACHINE.md`
|
|
4. The runner auto-discovers all fixtures — no code changes needed for new file types
|
|
|
|
## Relation to st-flows Skill
|
|
|
|
This repo is the **validation layer** for flows built using the `st-flows` agent skill.
|
|
The flow specs in `specs/` are the declarative source of truth for what the agent builds.
|
|
The test runner confirms the built flow behaves as specified.
|