From 501edee9a4cbb04ab563c7fd9a6d629dcc84de58 Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Sun, 17 Nov 2024 14:10:59 +1300 Subject: [PATCH] Test Blossom --- test_blossom/.gitignore | 3 ++ test_blossom/README.md | 7 +++ test_blossom/avatar-placeholder.webp | Bin 0 -> 2446 bytes test_blossom/blossom/.gitignore | 2 + test_blossom/clean.rs | 3 ++ test_blossom/config.toml | 37 ++++++++++++++ test_blossom/create_auth.sh | 26 ++++++++++ test_blossom/run.rs | 6 +++ test_blossom/test.sh | 72 +++++++++++++++++++++++++++ 9 files changed, 156 insertions(+) create mode 100644 test_blossom/.gitignore create mode 100644 test_blossom/README.md create mode 100644 test_blossom/avatar-placeholder.webp create mode 100644 test_blossom/blossom/.gitignore create mode 100755 test_blossom/clean.rs create mode 100644 test_blossom/config.toml create mode 100755 test_blossom/create_auth.sh create mode 100755 test_blossom/run.rs create mode 100755 test_blossom/test.sh diff --git a/test_blossom/.gitignore b/test_blossom/.gitignore new file mode 100644 index 0000000..20080a8 --- /dev/null +++ b/test_blossom/.gitignore @@ -0,0 +1,3 @@ +event.map +lmdb/ +downloaded diff --git a/test_blossom/README.md b/test_blossom/README.md new file mode 100644 index 0000000..dbdd73d --- /dev/null +++ b/test_blossom/README.md @@ -0,0 +1,7 @@ +# Testing Blossom functionality of Chorus + +In one shell run `run.sh` to run a local chorus. + +Then in another shell run `test.sh` to run tests against that running instance. + +When done, break out of the server and run `clean.sh` diff --git a/test_blossom/avatar-placeholder.webp b/test_blossom/avatar-placeholder.webp new file mode 100644 index 0000000000000000000000000000000000000000..e8f5973c66956186ffbb0ba99e5c49e8dacc4e17 GIT binary patch literal 2446 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 literal 0 HcmV?d00001 diff --git a/test_blossom/blossom/.gitignore b/test_blossom/blossom/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/test_blossom/blossom/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/test_blossom/clean.rs b/test_blossom/clean.rs new file mode 100755 index 0000000..80a123d --- /dev/null +++ b/test_blossom/clean.rs @@ -0,0 +1,3 @@ +#!/bin/bash + +rm -rf ./event.map ./lmdb/ ./blossom/* ./downloaded diff --git a/test_blossom/config.toml b/test_blossom/config.toml new file mode 100644 index 0000000..c6b2f8f --- /dev/null +++ b/test_blossom/config.toml @@ -0,0 +1,37 @@ +# See contrib/chorus.toml for a documented config file + +data_directory = "." +ip_address = "127.0.0.1" +port = 8089 +hostname = "localhost" +chorus_is_behind_a_proxy = false +use_tls = false +certchain_pem_path = "tls/fullchain.pem" +key_pem_path = "tls/privkey.pem" +name = "Chorus Sample" +description = "A sample run of the Chorus relay" +# icon_url = +open_relay = false +user_hex_keys = [ + "12bb541d03bfc3cab0f4a8e4db28947f60faae6fca4e315eb27f809c6eff9a0b" +] +moderator_hex_keys = [ + "12bb541d03bfc3cab0f4a8e4db28947f60faae6fca4e315eb27f809c6eff9a0b" +] +verify_events = true +allow_scraping = false +allow_scrape_if_limited_to = 100 +allow_scrape_if_max_seconds = 7200 +max_subscriptions = 128 +serve_ephemeral = true +serve_relay_lists = true +server_log_level = "Info" +library_log_level = "Info" +client_log_level = "Warn" +enable_ip_blocking = true +minimum_ban_seconds = 1 +timeout_seconds = 60 +max_connections_per_ip = 5 +throttling_bytes_per_second = 131072 +throttling_burst = 4194304 +blossom_directory = "./blossom" \ No newline at end of file diff --git a/test_blossom/create_auth.sh b/test_blossom/create_auth.sh new file mode 100755 index 0000000..a536e1b --- /dev/null +++ b/test_blossom/create_auth.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +PUBKEY=12bb541d03bfc3cab0f4a8e4db28947f60faae6fca4e315eb27f809c6eff9a0b +PRIVKEY=b4a98d96270b6cd30c80e4fd594461d2b22d8dbcfbcd1f7b11bf0ef2b028a56b +AUTH_EXPIRATION=1900000000 + +VERB=$1 +HASH=$2 + +if [ x$VERB = x ] ; then + echo "USAGE: create_auth.sh VERB HASH" + exit 1 +fi + +if [ x$HASH = x ] ; then + echo "USAGE: create_auth.sh VERB HASH" + exit 1 +fi + +PRE_EVENT='{"pubkey": "'$PUBKEY'", "kind": 24242, "created_at": 0, "tags": [["expiration","'$AUTH_EXPIRATION'"], ["t","'$VERB'"], ["x","'$HASH'"]], "content":""}' + +EVENT=$(echo "$PRE_EVENT" | nak event --sec $PRIVKEY) + +EVENT_BASE64=$(echo $EVENT | base64 -w 0) + +echo "Authorization: Nostr $EVENT_BASE64" diff --git a/test_blossom/run.rs b/test_blossom/run.rs new file mode 100755 index 0000000..ecfbf4b --- /dev/null +++ b/test_blossom/run.rs @@ -0,0 +1,6 @@ +#!/bin/bash + +pushd .. +cargo build --release || exit 1 +popd +../target/release/chorus ./config.toml diff --git a/test_blossom/test.sh b/test_blossom/test.sh new file mode 100755 index 0000000..7ef675b --- /dev/null +++ b/test_blossom/test.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +if ! command -v curl 2>&1 >/dev/null +then + echo "curl command is required." + exit 1 +fi + +if ! command -v jq 2>&1 >/dev/null +then + echo "jq command is required." + exit 1 +fi + +if ! command -v nak 2>&1 >/dev/null +then + echo "nak command is required. https://github.com/fiatjaf/nak" + exit 1 +fi + +# UPLOAD TEST ------------ + +FILE="./avatar-placeholder.webp" +HASH=$(sha256sum $FILE | awk '{print $1}') + +# Generate nostr auth +AUTH=$(./create_auth.sh upload $HASH) + +# Upload +DESCRIPTOR=$(curl -s --data-binary @"$FILE" -X PUT --header "$AUTH" http://127.0.0.1:8089/upload) +if [ $? -ne 0 ] ; then + echo "FAILED: Curl (uploading) exited with a non-zero status" + exit 1 +fi +echo "PASS: FILE UPLOADED" + +# Extract the sha256 and compare it +DHASH=$(echo "$DESCRIPTOR" | jq -r .sha256) +if [ $? -ne 0 ] ; then + echo "FAILED: jq failed extracting sha256 from descriptor" + exit 1 +fi +if [ "$HASH" != "$DHASH" ] ; then + echo "returned descriptor 'sha256' does not match the hash" +fi +echo "PASS: DESCRIPTOR HASH MATCHES" + +# Extract the URL for download +URL=$(echo "$DESCRIPTOR" | jq -r .url) +if [ $? -ne 0 ] ; then + echo "FAILED: jq failed extracting url from descriptor" + exit 1 +fi + +# DOWNLOAD TEST ----------- + +curl -s "$URL" > downloaded +if [ $? -ne 0 ] ; then + echo "FAILED: Curl (downloading) exited with a non-zero status" + exit 1 +fi +echo "PASS: FILE DOWNLOADED" + +# Compare the files +if cmp -s "$FILE" downloaded; then + echo "PASS: THE DOWNLOADED FILE MATCHES THE UPLOADED FILE" +else + echo "FAIL: THE DOWNLOADED FILE DOES NOT MATCH THE UPLOADED FILE" +fi + +echo "end." +exit 0