#!/usr/bin/env bash
# Execute from the "test" directory so that the test files are available.
#
# We recommend you have the pkgx.dev tools installed.
# If you want to use your installed curl & jq & node, you can comment out the two "pkgx" commands.
HOST = http://localhost:3002
if ! [ [ " $PWD " = = */test ] ] ; then
echo "Error: Run this script in the 'test' directory."
exit 1
fi
# load the tools: curl, jq, node
eval " $( pkgx --shellcode) "
env +curl +jq +node
JWT_CODE_USER_0 = 'OWNER_DID="did:ethr:0x0000694B58C2cC69658993A90D3840C560f2F51F"; OWNER_PRIVATE_KEY_HEX="2b6472c026ec2aa2c4235c994a63868fc9212d18b58f6cbfe861b52e71330f5b"; didJwt = require("did-jwt"); didJwt.createJWT({ exp: Math.floor(Date.now() / 1000) + 60, iat: Math.floor(Date.now() / 1000), iss: OWNER_DID }, { issuer: OWNER_DID, signer: didJwt.SimpleSigner(OWNER_PRIVATE_KEY_HEX) }).then(console.log)'
JWT_CODE_USER_1 = 'OWNER_DID="did:ethr:0x111d15564f824D56C7a07b913aA7aDd03382aA39"; OWNER_PRIVATE_KEY_HEX="be64d297e1c6f3545971cd0bc24c3bf32656f8639a2ae32cb84a1e3c75ad69cd"; didJwt = require("did-jwt"); didJwt.createJWT({ exp: Math.floor(Date.now() / 1000) + 60, iat: Math.floor(Date.now() / 1000), iss: OWNER_DID }, { issuer: OWNER_DID, signer: didJwt.SimpleSigner(OWNER_PRIVATE_KEY_HEX) }).then(console.log)'
# exit as soon as anything fails
set -e
echo "Upload test0.png by user #0"
JWT = $( node -e " $JWT_CODE_USER_0 " )
echo JWT: $JWT
RESULT = $( curl -X POST -H " Authorization: Bearer $JWT " -F "image=@test0.png" " $HOST /image " )
echo curl result: $RESULT
SUCCESS = $( echo $RESULT | jq -r '.success' )
if [ $SUCCESS = "true" ] ; then
echo "User #0 uploaded file."
else
echo "User #0 failed to upload a file." ;
exit 1
fi
echo "Download from the URL supplied"
URL0 = $( echo $RESULT | jq -r '.url' )
# -L to follow redirect because the returned URL is a timesafari.app URL
STATUS_CODE = $( curl -o test0-back.png -w "%{http_code}" -L $URL0 ) ;
if [ $STATUS_CODE -ne 200 ] ; then
echo " File is not accessible, received status code: $STATUS_CODE " ;
fi
echo "Check that downloaded file is the same as the original"
if diff "test0.png" "test0-back.png" >/dev/null; then
echo "Got the same file."
else
echo "Did not get the same file."
exit 1
fi
echo "Upload test1.png by user #1"
JWT = $( node -e " $JWT_CODE_USER_1 " )
echo JWT: $JWT
RESULT = $( curl -X POST -H " Authorization: Bearer $JWT " -F "image=@test1.png" " $HOST /image " )
echo curl result: $RESULT
URL2 = $( echo $RESULT | jq -r '.url' )
if [ " $URL0 " != " $URL2 " ] ; then
echo "URLs 0 & 1 are different."
else
echo "URLs 0 & 1 are not different."
exit 1
fi
echo "Now fail to upload a change to the image by user 1"
FILENAME0 = $( basename $URL0 )
JWT = $( node -e " $JWT_CODE_USER_1 " )
echo JWT: $JWT
RESULT = $( curl -X POST -H " Authorization: Bearer $JWT " -F "image=@test1.png" -F " fileName= $FILENAME0 " " $HOST /image " )
echo curl result: $RESULT
SUCCESS = $( echo $RESULT | jq -r '.success' )
if [ $SUCCESS = "false" ] ; then
echo "User #1 could not replace existing file."
else
echo "File may have been replaced wrongly." ;
exit 1
fi
echo "Now successfully upload a change to the image by user 0"
JWT = $( node -e " $JWT_CODE_USER_0 " )
echo JWT: $JWT
RESULT = $( curl -X POST -H " Authorization: Bearer $JWT " -F "image=@test1.png" -F " fileName= $FILENAME0 " " $HOST /image " )
echo curl result: $RESULT
SUCCESS = $( echo $RESULT | jq -r '.success' )
if [ $SUCCESS = "true" ] ; then
echo "User #0 did replace file." ;
else
echo "User #0 couldn't replace file." ;
exit 1
fi
echo "Fail to remove test file 0 from the service"
TEST_URL = "https%3A%2F%2Ftest-image.timesafari.app%2F4599145c3a8792a678f458747f2d8512c680e8680bf5563c35b06cd770051ed2.png"
JWT = $( node -e " $JWT_CODE_USER_1 " )
echo JWT: $JWT
RESULT = $( curl -X DELETE -H " Authorization: Bearer $JWT " " $HOST /image/ $TEST_URL " )
echo curl result: $RESULT
SUCCESS = $( echo $RESULT | jq -r '.success' )
if [ " $SUCCESS " = "false" ] ; then
echo "Test file 0 was not cleaned off server."
else
echo "Test file 0 was cleaned off server." ;
exit 1
fi
echo "Remove test file 0 from the service"
TEST_URL = "https%3A%2F%2Ftest-image.timesafari.app%2F4599145c3a8792a678f458747f2d8512c680e8680bf5563c35b06cd770051ed2.png"
JWT = $( node -e " $JWT_CODE_USER_0 " )
echo JWT: $JWT
RESULT = $( curl -X DELETE -H " Authorization: Bearer $JWT " " $HOST /image/ $TEST_URL " )
echo curl result: $RESULT
SUCCESS = $( echo $RESULT | jq -r '.success' )
if [ [ -z " $RESULT " ] ] || [ [ " $SUCCESS " = "true" ] ] ; then
echo "Test file 0 was cleaned off server."
else
echo "Test file 0 was not cleaned off server." ;
exit 1
fi
echo "Remove test file 1 from the service"
TEST_URL = "https%3A%2F%2Ftest-image.timesafari.app%2F83801e59789f962ddd19dbf99abd65b416e4c6560c28bdb3e663cea045561b07.png"
JWT = $( node -e " $JWT_CODE_USER_1 " )
echo JWT: $JWT
RESULT = $( curl -X DELETE -H " Authorization: Bearer $JWT " " $HOST /image/ $TEST_URL " )
echo curl result: $RESULT
SUCCESS = $( echo $RESULT | jq -r '.success' )
if [ [ -z " $RESULT " ] ] || [ [ " $SUCCESS " = "true" ] ] ; then
echo "Test file 1 was cleaned off server."
else
echo "Test file 1 was not cleaned off server." ;
exit 1
fi
echo "Upload test2.png by did:peer user"
JWT = "eyJ0eXAiOiJKV0FOVCIsImFsZyI6IkVTMjU2In0.eyJBdXRoZW50aWNhdGlvbkRhdGFCNjRVUkwiOiJTWllONVlnT2pHaDBOQmNQWkhaZ1c0X2tycm1paGpMSG1Wenp1b01kbDJNRkFBQUFBQSIsIkNsaWVudERhdGFKU09OQjY0VVJMIjoiZXlKMGVYQmxJam9pZDJWaVlYVjBhRzR1WjJWMElpd2lZMmhoYkd4bGJtZGxJam9pWlhsS01sbDVTVFpsZVVwcVkyMVdhMXBYTlRCaFYwWnpWVE5XYVdGdFZtcGtRMGsyWlhsS1FWa3lPWFZrUjFZMFpFTkpOa2x0YURCa1NFSjZUMms0ZG1NeVRtOWFWekZvVEcwNWVWcDVTWE5KYTBJd1pWaENiRWxxYjJsU01td3lXbFZHYW1SSGJIWmlhVWx6U1cxU2JHTXlUbmxoV0VJd1lWYzVkVWxxYjJsalIydzJaVzFGYVdaWU1ITkpiVlkwWTBOSk5rMVVZM2xOUkUwMFQwUlZNazE1ZDJsaFYwWXdTV3B2ZUU1NlNYZE5lbWMwVGxSQmVreERTbkJqTTAxcFQybEthMkZYVVRaalIxWnNZMnB2ZDJWcmRFNVNiWEF5Vmxka1dtTnJNSGhoUm1nelVrZE9kR0pVVWtOWmJtaE1XV3hLVDFWWFJsbFZhM0I1VVRGQ2FGRnNjREJSTWpsd1lVaE9UVlpHUWt0UmJrSnVWbGhTUkU5VmRHdFBXRUo1WldwR2RsWklSalJXTWxaMFVtMWFUMVl3VGs5YU1IaEdVMjVzVVU1RlduWlVSWFF3WWxjMVdHRkdSbmhaVlU1MVVXMVdiVll5T1hSU00wcFVVVlJPTWs1RFNqa2lMQ0p2Y21sbmFXNGlPaUpvZEhSd09pOHZiRzlqWVd4b2IzTjBPamd3T0RBaUxDSmpjbTl6YzA5eWFXZHBiaUk2Wm1Gc2MyVjkiLCJleHAiOjE3MjAzODg1NjMsImlhdCI6MTcyMDM4ODUwMywiaXNzIjoiZGlkOnBlZXI6MHpLTUZqdlVnWXJNMWhYd0RjbW00QmJ4S2JSTlFhWFJKckNQYUJadENvaWhzTFRQSkJwZ1V0QzlLZDlwcnoxb1RxeFdlbUZmTldDTmdMRUp5UDRGb0xLdG1uV2hRcWFDbkJlZldvbUdyU0EzdjQifQ.MEQCIAsMMNUcSjoxn0LZuE6FvZ6dsm-uQROeX3RPWt6QlRyPAiA670XdJXnLw8QFR9a6KCMt-qUyGZg88mMfT-1DtipcwA"
echo JWT: $JWT
RESULT = $( curl -X POST -H " Authorization: Bearer $JWT " -F "image=@test2.svg" " $HOST /image " )
echo curl result: $RESULT
SUCCESS = $( echo $RESULT | jq -r '.success' )
if [ $SUCCESS = "true" ] ; then
echo "User #2 uploaded SVG file."
else
echo "User #2 failed to upload SVG file. Note that this may be because the server wasn't started with NODE_ENV=test-local which bypasses check of the exp date." ;
exit 1
fi