1 changed files with 0 additions and 123 deletions
@ -1,123 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
# Configurable pause duration (in seconds) |
|||
PAUSE_DURATION=2 |
|||
MANUAL_CONTINUE=true |
|||
|
|||
# Function to test deep link |
|||
test_link() { |
|||
echo "----------------------------------------" |
|||
echo "Testing: $1" |
|||
echo "Description: $2" |
|||
echo "----------------------------------------" |
|||
adb shell am start -W -a android.intent.action.VIEW -d "$1" app.timesafari.app |
|||
|
|||
if [ "$MANUAL_CONTINUE" = true ]; then |
|||
read -p "Press Enter to continue to next test..." |
|||
else |
|||
sleep $PAUSE_DURATION |
|||
fi |
|||
} |
|||
|
|||
# Allow command line override of pause settings |
|||
while getopts "t:a" opt; do |
|||
case $opt in |
|||
t) PAUSE_DURATION=$OPTARG ;; |
|||
a) MANUAL_CONTINUE=false ;; |
|||
esac |
|||
done |
|||
|
|||
echo "Starting TimeSafari Deep Link Tests" |
|||
echo "======================================" |
|||
echo "Pause duration: $PAUSE_DURATION seconds" |
|||
echo "Manual continue: $MANUAL_CONTINUE" |
|||
|
|||
# Contact Import Routes |
|||
echo "\nTesting Contact Import Routes:" |
|||
|
|||
# 1. Direct Query Parameter Import (URL-encoded JSON) |
|||
QUERY_CONTACTS='[{ |
|||
"did":"did:ethr:" |
|||
},{ |
|||
"did":"did:ethr:", |
|||
"name":"Jordan", |
|||
"nextPubKeyHashB64":"IBfRZfwdzeKOzqCx8b+WlLpMJHOAT9ZknIDJo7F3rZE=", |
|||
"publicKeyBase64":"A1eIndfaxgMpVwyD5dYe74DgjuIo5SwPZFCcLdOemjf" |
|||
}]' |
|||
ENCODED_CONTACTS=$(echo $QUERY_CONTACTS | jq -c | python3 -c "import urllib.parse; print(urllib.parse.quote(input()))") |
|||
test_link "timesafari://contact-import?contacts=$ENCODED_CONTACTS" "Bulk import via query parameters" |
|||
|
|||
# 2. JWT Path Imports |
|||
# Original JWT with multiple contacts |
|||
BULK_JWT="eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJpYXQiOjE3NDA3NDA0NTMsImNvbnRhY3RzIjpbeyJkaWQiOiJkaWQ6ZXRocjoweGY5NjlBNURlRTdhNTgwNmQxQzM3ZjRFYzQ5QTU1NUFiOTc5MTEwODkifSx7ImRpZCI6ImRpZDpldGhyOjB4RkVkM2I0MTY5NDZiMjNGM0Y0NzI3OTkwNTMxNDRCNEUzNDE1NUI1YiIsIm5hbWUiOiJKb3JkYW4iLCJuZXh0UHViS2V5SGFzaEI2NCI6IklCZlJaZndkemVLT3pxQ3g4YitXbExwTUpIT0FUOVprbklESm83RjNyWkU9IiwicHVibGljS2V5QmFzZTY0IjoiQTFlSW5kZmF4Z01wVnd5RDVkWWU3NERnanQ5SW81U3dQWkZDY0xkT2VtamYifV0sImlzcyI6ImRpZDpldGhyOjB4RDUzMTE0ODMwRDRhNUQ5MDQxNkI0M0ZjOTlhMjViMGRGOGJiMUJBZCJ9.yKEFounxUGU9-grAMFHA12dif9BKYkftg8F3wAIcFYh0H_k1tevjEYyD1fvAyIxYxK5xR0E8moqMhi78ipJXcg" |
|||
test_link "timesafari://contact-import/$BULK_JWT" "Multiple contacts via JWT" |
|||
|
|||
# 3. Contact Page JWT Redirect |
|||
test_link "timesafari://contacts?contactJwt=$BULK_JWT" "Multiple contacts redirect" |
|||
|
|||
# Contact Management Routes |
|||
test_link "timesafari://contact-edit/did:ethr:" \ |
|||
"Edit first contact" |
|||
|
|||
# Error Cases |
|||
echo "\nTesting Contact Import Error Cases:" |
|||
test_link "timesafari://contact-import/eyJJTlZBTElEIn0" "Invalid JWT format" |
|||
test_link "timesafari://contact-import?contacts=[{invalid:data}]" "Invalid contact data" |
|||
|
|||
# Original Routes (preserved from previous version) |
|||
echo "\nTesting Other Routes:" |
|||
|
|||
# Test claim routes |
|||
echo "\nTesting Claim Routes:" |
|||
test_link "timesafari://claim/01JMAAFZRNSRTQ0EBSD70A8E1H" |
|||
test_link "timesafari://claim-cert/01JMAAFZRNSRTQ0EBSD70A8E1H" |
|||
|
|||
# Test project routes |
|||
echo "\nTesting Project Routes:" |
|||
test_link "timesafari://project/https%3A%2F%2Fendorser.ch%2Fentity%2F01JKW0QZX1XVCVZV85VXAMB31R" |
|||
|
|||
# Test gift routes |
|||
echo "\nTesting Gift Routes:" |
|||
test_link "timesafari://confirm-gift/01JMTC8T961KFPP2N8ZB92ER4K" |
|||
|
|||
# Test offer routes |
|||
echo "\nTesting Offer Routes:" |
|||
test_link "timesafari://offer-details/101" |
|||
|
|||
# Test complex query parameters |
|||
echo "\nTesting Complex Query Parameters:" |
|||
test_link "timesafari://contact-import/jwt?contacts=%5B%7B%22name%22%3A%22Test%22%7D%5D" |
|||
|
|||
# New test cases |
|||
echo "\nTesting DID Routes:" |
|||
test_link "timesafari://did/did:example:123" |
|||
test_link "timesafari://did/did:example:456?view=details" |
|||
|
|||
echo "\nTesting Additional Contact Routes:" |
|||
test_link "timesafari://contact-import/jwt?contacts=%5B%7B%22did%22%3A%22did%3Aexample%3A123%22%7D%5D" |
|||
test_link "timesafari://contact-edit/did:example:123?action=edit" |
|||
|
|||
echo "\nTesting Error Cases:" |
|||
test_link "timesafari://invalid-route/123" |
|||
test_link "timesafari://claim/123?view=invalid" |
|||
test_link "timesafari://did/invalid-did" |
|||
|
|||
# Single invite JWT test |
|||
# Header: {"typ":"JWT","alg":"ES256K"} |
|||
# Payload: { |
|||
# "iat": 1740740453, |
|||
# "contact": { |
|||
# "did": "did:ethr:", |
|||
# "name": "Jordan", |
|||
# "nextPubKeyHashB64": "IBfRZfwdzeKOzqCx8b+WlLpMJHOAT9ZknIDJo7F3rZE=", |
|||
# "publicKeyBase64": "A1eIndfaxgMpVwyD5dYe74DgjuIo5SwPZFCcLdOemjf" |
|||
# }, |
|||
# "iss": "did:ethr:" |
|||
# } |
|||
|
|||
SINGLE_INVITE_JWT="eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJpYXQiOjE3NDA3NDA0NTMsImNvbnRhY3QiOnsiZGlkIjoiZGlkOmV0aHI6MHhGRWQzYjQxNjk0NmIyM0YzRjQ3Mjc5OTA1MzE0NEI0RTM0MTU1QjViIiwibmFtZSI6IkpvcmRhbiIsIm5leHRQdWJLZXlIYXNoQjY0IjoiSUJmUlpmd2R6ZUtPenFDeDhiK1dsTHBNSkhPQVQ5WmtuSURKbzdGM3JaRT0iLCJwdWJsaWNLZXlCYXNlNjQiOiJBMWVJbmRmYXhnTXBWd3lENWRZZTc0RGdqdUlvNVN3UFpGQ2NMZEtlbWpmIn0sImlzcyI6ImRpZDpldGhyOjB4RDUzMTE0ODMwRDRhNUQ5MDQxNkI0M0ZjOTlhMjViMGRGOGJiMUJBZCJ9.yKEFounxUGU9-grAMFHA12dif9BKYkftg8F3wAIcFYh0H_k1tevjEYyD1fvAyIxYxK5xR0E8moqMhi78ipJXcg" |
|||
|
|||
test_link "timesafari://invite-one-accept/$SINGLE_INVITE_JWT" "Single contact invite via JWT" |
|||
|
|||
echo "\nDeep link testing complete" |
|||
echo "======================================" |
Loading…
Reference in new issue