You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
5.6 KiB
175 lines
5.6 KiB
#!/bin/bash
|
|
|
|
# Parse command line arguments
|
|
GENERATE_ONLY=false
|
|
ALL_TESTS=false
|
|
while getopts "ga" opt; do
|
|
case $opt in
|
|
g) GENERATE_ONLY=true ;;
|
|
a) ALL_TESTS=true ;;
|
|
\?) echo "Invalid option: -$OPTARG" >&2; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
# Directory for storing generated DIDs
|
|
mkdir -p .generated
|
|
|
|
# Function to validate environment variables
|
|
validate_env() {
|
|
local missing=false
|
|
for var in CONTACT1_DID CONTACT1_KEY CONTACT2_DID CONTACT2_KEY ISSUER_DID ISSUER_KEY; do
|
|
if [ -z "${!var}" ]; then
|
|
echo "Error: $var is not set" >&2
|
|
missing=true
|
|
fi
|
|
done
|
|
if [ "$missing" = true ]; then
|
|
rm -f .generated/test-env.sh # Remove invalid env file
|
|
echo "Please regenerate DIDs by running:" >&2
|
|
echo "./test-scripts/run-deeplink-tests.sh -g" >&2
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
# Check if we already have generated DIDs
|
|
if [ -f .generated/test-env.sh ] && [ "$GENERATE_ONLY" = false ]; then
|
|
echo "Using existing DIDs from .generated/test-env.sh"
|
|
source .generated/test-env.sh
|
|
validate_env || exit 1
|
|
else
|
|
# Function to extract DID info from did_generator.sh output
|
|
extract_did_info() {
|
|
local output="$1"
|
|
|
|
# Debug: Show what we received
|
|
echo "DEBUG: extract_did_info received: '$output'" >&2
|
|
|
|
# Parse and validate JSON
|
|
if ! printf '%s' "$output" | jq -e 'if type == "object" and .status == "success" then true else false end' >/dev/null 2>&1; then
|
|
echo "Error: DID generation failed" >&2
|
|
echo "Error details:" >&2
|
|
if ! printf '%s' "$output" | jq -e . >/dev/null 2>&1; then
|
|
echo "Invalid JSON output: $output" >&2
|
|
else
|
|
printf '%s' "$output" | jq -r '"\(.stage): \(.error // "Unknown error")"' >&2
|
|
fi
|
|
return 1
|
|
fi
|
|
|
|
# Return the successful JSON
|
|
printf '%s' "$output"
|
|
}
|
|
|
|
echo "Generating first contact DID..."
|
|
# Debug: Show raw command output
|
|
DEBUG_OUTPUT=$(DEBUG=0 ./test-scripts/did_generator.sh)
|
|
GEN_STATUS=$?
|
|
echo "DEBUG: Raw did_generator.sh output: '$DEBUG_OUTPUT'" >&2
|
|
|
|
if [ $GEN_STATUS -ne 0 ]; then
|
|
echo "Error: did_generator.sh failed with status $GEN_STATUS" >&2
|
|
exit 1
|
|
fi
|
|
|
|
CONTACT1_OUTPUT=$(printf '%s' "$DEBUG_OUTPUT" | tr -d '\r')
|
|
echo "DEBUG: After tr command: '$CONTACT1_OUTPUT'" >&2
|
|
|
|
# Debug: Show what we're passing to extract_did_info
|
|
echo "DEBUG: Calling extract_did_info with: '$CONTACT1_OUTPUT'" >&2
|
|
CONTACT1_INFO=$(extract_did_info "$CONTACT1_OUTPUT")
|
|
EXTRACT_STATUS=$?
|
|
echo "DEBUG: extract_did_info returned status: $EXTRACT_STATUS" >&2
|
|
echo "DEBUG: CONTACT1_INFO: '$CONTACT1_INFO'" >&2
|
|
|
|
if [ $EXTRACT_STATUS -ne 0 ]; then
|
|
echo "DEBUG: extract_did_info failed" >&2
|
|
exit 1
|
|
fi
|
|
CONTACT1_DID=$(printf '%s' "$CONTACT1_INFO" | jq -r .did)
|
|
CONTACT1_KEY=$(printf '%s' "$CONTACT1_INFO" | jq -r .privateKey)
|
|
|
|
echo "Generating second contact DID (Jordan)..."
|
|
DEBUG_OUTPUT=$(DEBUG=0 ./test-scripts/did_generator.sh)
|
|
CONTACT2_OUTPUT=$(printf '%s' "$DEBUG_OUTPUT" | tr -d '\r')
|
|
CONTACT2_INFO=$(extract_did_info "$CONTACT2_OUTPUT")
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
CONTACT2_DID=$(printf '%s' "$CONTACT2_INFO" | jq -r .did)
|
|
CONTACT2_KEY=$(printf '%s' "$CONTACT2_INFO" | jq -r .privateKey)
|
|
|
|
echo "Generating issuer DID..."
|
|
DEBUG_OUTPUT=$(DEBUG=0 ./test-scripts/did_generator.sh)
|
|
ISSUER_OUTPUT=$(printf '%s' "$DEBUG_OUTPUT" | tr -d '\r')
|
|
ISSUER_INFO=$(extract_did_info "$ISSUER_OUTPUT")
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
ISSUER_DID=$(printf '%s' "$ISSUER_INFO" | jq -r .did)
|
|
ISSUER_KEY=$(printf '%s' "$ISSUER_INFO" | jq -r .privateKey)
|
|
|
|
# Add some visual feedback about the generated DIDs
|
|
echo
|
|
echo "Generated DIDs:"
|
|
echo " Contact 1: ${CONTACT1_DID:0:20}..."
|
|
echo " Contact 2: ${CONTACT2_DID:0:20}..."
|
|
echo " Issuer: ${ISSUER_DID:0:20}..."
|
|
echo
|
|
|
|
# Create a temporary env file with the generated DIDs
|
|
echo "Creating test-env.sh with generated DIDs..."
|
|
cat > .generated/test-env.sh << EOF
|
|
#!/bin/bash
|
|
# Generated $(date)
|
|
export CONTACT1_DID="$CONTACT1_DID"
|
|
export CONTACT1_KEY="$CONTACT1_KEY"
|
|
export CONTACT2_DID="$CONTACT2_DID"
|
|
export CONTACT2_KEY="$CONTACT2_KEY"
|
|
export ISSUER_DID="$ISSUER_DID"
|
|
export ISSUER_KEY="$ISSUER_KEY"
|
|
EOF
|
|
|
|
# Debug output
|
|
echo "Contents of generated test-env.sh:"
|
|
cat .generated/test-env.sh
|
|
|
|
# Make sure file is executable
|
|
chmod +x .generated/test-env.sh
|
|
|
|
# Source and validate the newly created env file
|
|
echo "Sourcing generated test-env.sh..."
|
|
source .generated/test-env.sh
|
|
validate_env || exit 1
|
|
fi
|
|
|
|
if [ "$GENERATE_ONLY" = true ]; then
|
|
echo "Generated DIDs and created environment file at .generated/test-env.sh"
|
|
echo "To use these DIDs, run:"
|
|
echo "source .generated/test-env.sh"
|
|
exit 0
|
|
fi
|
|
|
|
# Create contacts JSON for deep links
|
|
CONTACTS_JSON=$(jq -n \
|
|
--arg did1 "$CONTACT1_DID" \
|
|
--arg did2 "$CONTACT2_DID" \
|
|
'[
|
|
{"did": $did1},
|
|
{
|
|
"did": $did2,
|
|
"name": "Jordan",
|
|
"nextPubKeyHashB64": "IBfRZfwdzeKOzqCx8b+WlLpMJHOAT9ZknIDJo7F3rZE=",
|
|
"publicKeyBase64": "A1eIndfaxgMpVwyD5dYe74DgjuIo5SwPZFCcLdOemjf"
|
|
}
|
|
]')
|
|
|
|
export CONTACTS_JSON
|
|
export TEST_MODE=${TEST_MODE:-print} # Use TEST_MODE from environment or default to print
|
|
|
|
# Run deep link tests in order
|
|
if [ "$ALL_TESTS" = true ]; then
|
|
./test-scripts/test-deeplinks.sh -t 5 -a
|
|
else
|
|
./test-scripts/test-deeplinks.sh -t 5
|
|
fi
|