| #!/bin/bash
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
| REPO_ROOT="$(dirname "$SCRIPT_DIR")"
|
| SOVEREIGN_DIR="$REPO_ROOT/sovereign"
|
| TEST_TEMP="/tmp/pax-node-auth-test-$$"
|
| PASS=0
|
| FAIL=0
|
|
|
| mkdir -p "$TEST_TEMP"
|
| trap "rm -rf $TEST_TEMP" EXIT
|
|
|
| echo "=========================================="
|
| echo "PAX-CODER NODE AUTHORIZATION TEST SUITE"
|
| echo "=========================================="
|
| echo ""
|
|
|
|
|
| ORIGINAL_AUTH=$(cat "$SOVEREIGN_DIR/authorization.json")
|
|
|
| test_case() {
|
| local test_num=$1
|
| local test_name=$2
|
| local expected_result=$3
|
| local auth_modification=$4
|
|
|
| echo "[Test $test_num] $test_name"
|
|
|
|
|
| eval "$auth_modification"
|
|
|
|
|
| if "$SCRIPT_DIR/verify-node-authorization" > /dev/null 2>&1; then
|
| actual="ALLOW"
|
| else
|
| actual="DENY"
|
| fi
|
|
|
|
|
| if [ "$actual" = "$expected_result" ]; then
|
| echo " ✓ PASS (expected: $expected_result, got: $actual)"
|
| ((PASS++))
|
| else
|
| echo " ✗ FAIL (expected: $expected_result, got: $actual)"
|
| ((FAIL++))
|
| fi
|
|
|
|
|
| echo "$ORIGINAL_AUTH" > "$SOVEREIGN_DIR/authorization.json"
|
| echo ""
|
| }
|
|
|
|
|
| test_case 1 "ACTIVE authorization" "ALLOW" \
|
| 'echo "$ORIGINAL_AUTH" | sed "s|\"authorization_status\": \"[^\"]*\"|\"authorization_status\": \"ACTIVE\"|" > "$SOVEREIGN_DIR/authorization.json"'
|
|
|
|
|
| test_case 2 "REQUESTED authorization" "DENY" \
|
| 'echo "$ORIGINAL_AUTH" | sed "s|\"authorization_status\": \"[^\"]*\"|\"authorization_status\": \"REQUESTED\"|" > "$SOVEREIGN_DIR/authorization.json"'
|
|
|
|
|
| test_case 3 "SUSPENDED authorization" "DENY" \
|
| 'echo "$ORIGINAL_AUTH" | sed "s|\"authorization_status\": \"[^\"]*\"|\"authorization_status\": \"SUSPENDED\"|" > "$SOVEREIGN_DIR/authorization.json"'
|
|
|
|
|
| test_case 4 "REVOKED authorization" "DENY" \
|
| 'echo "$ORIGINAL_AUTH" | sed "s|\"revocation_status\": \"[^\"]*\"|\"revocation_status\": \"REVOKED\"|" > "$SOVEREIGN_DIR/authorization.json"'
|
|
|
|
|
| test_case 5 "EXPIRED authorization" "DENY" \
|
| 'echo "$ORIGINAL_AUTH" | sed "s|\"expires_at_utc\": \"[^\"]*\"|\"expires_at_utc\": \"2020-01-01T00:00:00Z\"|" > "$SOVEREIGN_DIR/authorization.json"'
|
|
|
|
|
| test_case 6 "Authorization matches node ID" "ALLOW" \
|
| 'echo "$ORIGINAL_AUTH" | sed "s|\"authorization_status\": \"[^\"]*\"|\"authorization_status\": \"ACTIVE\"|" > "$SOVEREIGN_DIR/authorization.json"'
|
|
|
|
|
| test_case 7 "Authorization mismatched node ID" "DENY" \
|
| 'echo "$ORIGINAL_AUTH" | sed "s|\"node_id\": \"[^\"]*\"|\"node_id\": \"wrong-node-id-999999\"|" > "$SOVEREIGN_DIR/authorization.json"'
|
|
|
|
|
| echo "=========================================="
|
| echo "TEST RESULTS"
|
| echo "=========================================="
|
| echo " Passed: $PASS/7"
|
| echo " Failed: $FAIL/7"
|
| echo ""
|
|
|
| if [ $FAIL -eq 0 ]; then
|
| echo "All node authorization tests passed!"
|
| exit 0
|
| else
|
| echo "Some tests failed!"
|
| exit 1
|
| fi
|
|
|