Files
the_order/scripts/test/generate-test-data.sh

203 lines
5.0 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Generate test data for Entra VerifiedID testing
# Creates sample credentials, test payloads, and validation data
set -euo pipefail
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
cd "$(dirname "$0")/../.."
TEST_DATA_DIR="test-data/entra"
mkdir -p "${TEST_DATA_DIR}"
log_info "Generating test data for Entra VerifiedID..."
# Sample credential issuance request
cat > "${TEST_DATA_DIR}/issuance-request.json" << 'EOF'
{
"claims": {
"email": "test@example.com",
"name": "Test User",
"role": "member",
"userId": "user-123"
},
"pin": "1234",
"callbackUrl": "https://api.theorder.org/vc/entra/webhook"
}
EOF
# Multi-manifest issuance requests
cat > "${TEST_DATA_DIR}/issuance-request-diplomatic.json" << 'EOF'
{
"claims": {
"recipientName": "John Doe",
"recipientTitle": "Ambassador",
"missionCountry": "France",
"missionType": "embassy"
},
"manifestName": "diplomatic"
}
EOF
cat > "${TEST_DATA_DIR}/issuance-request-judicial.json" << 'EOF'
{
"claims": {
"role": "judge",
"appointmentAuthority": "Supreme Court",
"jurisdiction": "EU",
"appointmentDate": "2024-01-01T00:00:00Z"
},
"manifestName": "judicial"
}
EOF
cat > "${TEST_DATA_DIR}/issuance-request-financial.json" << 'EOF'
{
"claims": {
"role": "financial-officer",
"appointmentDate": "2024-01-01T00:00:00Z",
"jurisdiction": "EU"
},
"manifestName": "financial"
}
EOF
# Webhook test payloads
cat > "${TEST_DATA_DIR}/webhook-issuance-successful.json" << 'EOF'
{
"requestId": "test-request-id-123",
"requestStatus": "issuance_successful",
"credential": {
"id": "vc:test:123",
"type": ["VerifiableCredential", "IdentityCredential"],
"issuer": "did:web:test.verifiedid.msidentity.com",
"issuanceDate": "2024-01-01T00:00:00Z",
"credentialSubject": {
"email": "test@example.com",
"name": "Test User"
},
"proof": {
"type": "JsonWebSignature2020",
"created": "2024-01-01T00:00:00Z",
"proofPurpose": "assertionMethod",
"verificationMethod": "did:web:test#key",
"jws": "test-jws-signature"
}
}
}
EOF
cat > "${TEST_DATA_DIR}/webhook-issuance-failed.json" << 'EOF'
{
"requestId": "test-request-id-123",
"requestStatus": "issuance_failed",
"error": {
"code": "ISSUANCE_FAILED",
"message": "Test error message"
}
}
EOF
# Verification test payload
cat > "${TEST_DATA_DIR}/verification-request.json" << 'EOF'
{
"credential": {
"id": "vc:test:123",
"type": ["VerifiableCredential", "IdentityCredential"],
"issuer": "did:web:test.verifiedid.msidentity.com",
"issuanceDate": "2024-01-01T00:00:00Z",
"credentialSubject": {
"email": "test@example.com",
"name": "Test User"
},
"proof": {
"type": "JsonWebSignature2020",
"created": "2024-01-01T00:00:00Z",
"proofPurpose": "assertionMethod",
"verificationMethod": "did:web:test#key",
"jws": "test-jws-signature"
}
}
}
EOF
# eIDAS bridge test payload
cat > "${TEST_DATA_DIR}/eidas-verify-issue-request.json" << 'EOF'
{
"document": "base64-encoded-document-here",
"userId": "user-123",
"userEmail": "test@example.com",
"pin": "1234"
}
EOF
# Test script for API endpoints
cat > "${TEST_DATA_DIR}/test-endpoints.sh" << 'EOF'
#!/bin/bash
# Test Entra VerifiedID API endpoints
BASE_URL="${API_BASE_URL:-http://localhost:4002}"
AUTH_TOKEN="${AUTH_TOKEN:-}"
echo "Testing Entra VerifiedID endpoints..."
# Test issuance
echo "1. Testing credential issuance..."
curl -X POST "${BASE_URL}/vc/issue/entra" \
-H "Content-Type: application/json" \
${AUTH_TOKEN:+-H "Authorization: Bearer ${AUTH_TOKEN}"} \
-d @issuance-request.json
echo -e "\n\n2. Testing credential verification..."
curl -X POST "${BASE_URL}/vc/verify/entra" \
-H "Content-Type: application/json" \
-d @verification-request.json
echo -e "\n\n3. Testing webhook endpoint..."
curl -X POST "${BASE_URL}/vc/entra/webhook" \
-H "Content-Type: application/json" \
-d @webhook-issuance-successful.json
echo -e "\n\n4. Testing status endpoint..."
curl "${BASE_URL}/vc/entra/status/test-request-id-123"
EOF
chmod +x "${TEST_DATA_DIR}/test-endpoints.sh"
# Rate limit test script
cat > "${TEST_DATA_DIR}/test-rate-limits.sh" << 'EOF'
#!/bin/bash
# Test rate limiting by sending multiple requests
BASE_URL="${API_BASE_URL:-http://localhost:4002}"
AUTH_TOKEN="${AUTH_TOKEN:-}"
echo "Testing rate limits (sending 15 requests rapidly)..."
for i in {1..15}; do
echo "Request $i..."
curl -X POST "${BASE_URL}/vc/issue/entra" \
-H "Content-Type: application/json" \
${AUTH_TOKEN:+-H "Authorization: Bearer ${AUTH_TOKEN}"} \
-d '{"claims": {"test": "true"}}' \
-w "\nStatus: %{http_code}\n" \
-s -o /dev/null
sleep 0.1
done
echo "Rate limit test complete. Check for 429 responses."
EOF
chmod +x "${TEST_DATA_DIR}/test-rate-limits.sh"
log_success "Test data generated in ${TEST_DATA_DIR}/"
log_info "Files created:"
ls -la "${TEST_DATA_DIR}"