#!/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