test: add E2E smoke test for sync
This commit is contained in:
parent
a1a50863c5
commit
84c0bcbcab
|
|
@ -0,0 +1,57 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "=== Verstak Sync E2E Smoke Test ==="
|
||||
|
||||
SERVER_PORT=18999
|
||||
SDIR=$(mktemp -d)
|
||||
VD=$(mktemp -d)
|
||||
cleanup() { kill "$SPID" 2>/dev/null || true; rm -rf "$SDIR" "$VD"; }
|
||||
trap cleanup EXIT
|
||||
|
||||
echo ":: Build"
|
||||
go build -o /tmp/vs-server ./cmd/verstak-server/
|
||||
go build -o /tmp/vs-cli ./cmd/verstak/
|
||||
|
||||
echo ":: Start server"
|
||||
/tmp/vs-server --port "$SERVER_PORT" --data "$SDIR" --admin-user admin --admin-pass pass > /dev/null 2>&1 &
|
||||
SPID=$!
|
||||
sleep 2
|
||||
|
||||
echo ":: Health"
|
||||
curl -sf "http://localhost:$SERVER_PORT/api/v1/health" | grep -q '"ok"' && echo " OK"
|
||||
|
||||
echo ":: Register device"
|
||||
REG=$(curl -sf -X POST "http://localhost:$SERVER_PORT/api/v1/device/register" \
|
||||
-H "Content-Type: application/json" -d '{"name":"smoke"}')
|
||||
DID=$(echo "$REG" | python3 -c "import sys,json;print(json.load(sys.stdin)['device_id'])")
|
||||
AKEY=$(echo "$REG" | python3 -c "import sys,json;print(json.load(sys.stdin)['api_key'])")
|
||||
echo " device=$DID"
|
||||
|
||||
echo ":: Init vault"
|
||||
/tmp/vs-cli init --vault "$VD"
|
||||
|
||||
echo ":: Configure sync"
|
||||
cat > "$VD/.verstak/config.yml" <<YML
|
||||
sync:
|
||||
server_url: http://localhost:$SERVER_PORT
|
||||
api_key: $AKEY
|
||||
device_id: $DID
|
||||
auto_sync: false
|
||||
YML
|
||||
|
||||
echo ":: Insert sync op (simulate recorded op)"
|
||||
sqlite3 "$VD/.verstak/index.db" \
|
||||
"INSERT INTO sync_ops (id, op_id, device_id, entity_type, entity_id, op_type, payload_json, created_at) VALUES ('e1','e1','$DID','node','n1','create','{\"title\":\"t\"}',datetime('now'));"
|
||||
|
||||
echo ":: Push"
|
||||
/tmp/vs-cli sync push --vault "$VD" | grep -q "Pushed 1" && echo " OK"
|
||||
|
||||
echo ":: Pull"
|
||||
/tmp/vs-cli sync pull --vault "$VD" | grep -q "Pulled" && echo " OK"
|
||||
|
||||
echo ":: Status"
|
||||
/tmp/vs-cli sync status --vault "$VD"
|
||||
|
||||
echo ""
|
||||
echo "=== ALL TESTS PASSED ==="
|
||||
Loading…
Reference in New Issue