Files
foxhunt/testing/integration/e2e_helpers/QUICKSTART.md
jgrusewski 9c3d741a08 refactor: restructure repo — crates/, bin/, testing/ layout
Move 17 library crates into crates/, CLI binary into bin/fxt,
consolidate 10 test crates into testing/, split config crate
from deployment config files.

Root directory reduced from 38+ to ~17 directories.
All Cargo.toml paths and build.rs proto refs updated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 11:56:00 +01:00

3.3 KiB

JWT Token Generator - Quick Start

5-Minute Guide for E2E Testing

Installation

Already installed - No additional setup required!

Dependencies: Python3 + PyJWT (already available)

Basic Usage

1. Generate Token (Default)

cd tests/e2e_helpers
./jwt_token_generator.sh

Output: JWT token for trader with 1-hour expiration

2. Use in API Request

TOKEN=$(./jwt_token_generator.sh)
curl -H "Authorization: Bearer $TOKEN" http://localhost:50051/api/v1/orders

3. Admin Token

./jwt_token_generator.sh admin_user admin "api.access,system.admin"

4. Custom Expiration (10 minutes)

./jwt_token_generator.sh test_user trader "api.access" 600

Common Patterns

E2E Test Script

#!/bin/bash
cd tests/e2e_helpers

# Generate token
TOKEN=$(./jwt_token_generator.sh)

# Test endpoint
curl -H "Authorization: Bearer $TOKEN" \
  http://localhost:50051/api/v1/orders

# Submit order
curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"symbol": "BTC/USD", "quantity": 1.0, "side": "buy"}' \
  http://localhost:50051/api/v1/orders

Load Test

# Generate 10 tokens
for i in {1..10}; do
    TOKEN=$(./jwt_token_generator.sh "user_$i" trader "api.access")
    echo "$TOKEN" > "token_$i.txt"
done

Command Syntax

./jwt_token_generator.sh [user_id] [role] [permissions] [ttl_seconds]
Argument Default Example
user_id test_user_123 admin_user
role trader admin, viewer
permissions api.access "api.access,system.admin"
ttl_seconds 3600 600 (10 min)

Role Presets

# Trader (default)
./jwt_token_generator.sh

# Admin
./jwt_token_generator.sh admin_user admin "api.access,system.admin"

# Viewer (read-only)
./jwt_token_generator.sh viewer_user viewer "api.read"

Environment Variable

# Custom JWT secret
export JWT_SECRET="your-secret-key-here"
./jwt_token_generator.sh

Troubleshooting

Token not working?

  1. Check API Gateway is running: curl http://localhost:8080/health
  2. Verify JWT secret matches: Check .env file
  3. Regenerate token: TOKEN=$(./jwt_token_generator.sh)

Permission denied?

Generate admin token:

./jwt_token_generator.sh admin admin "api.access,system.admin"

Token expired?

Use shorter expiration for testing:

./jwt_token_generator.sh user trader "api.access" 60  # 60 seconds

Documentation

Quick Reference

# Default token (trader, 1 hour)
./jwt_token_generator.sh

# Admin token
./jwt_token_generator.sh admin_user admin "api.access,system.admin"

# Short-lived (60 sec)
./jwt_token_generator.sh user trader "api.access" 60

# Multiple permissions
./jwt_token_generator.sh user trader "api.access,orders.submit,risk.view"

# Custom secret
JWT_SECRET="secret" ./jwt_token_generator.sh

# Inspect token
TOKEN=$(./jwt_token_generator.sh)
python3 -c "import jwt, json; token='$TOKEN'; print(json.dumps(jwt.decode(token, options={'verify_signature': False}), indent=2))"

Ready to use! Run ./jwt_token_generator.sh to get started.