#! /usr/bin/env bash

# This file contains bunch of compatibility tests that ensures
# that the API interface of `scripts/legacy-api.py` remains stable

set -e

OUTDIR=$(mktemp -d)

echo "Using directory $OUTDIR"

# Start API
python -u scripts/legacy_api.py --web --host=localhost --port=3333 --outdir=$OUTDIR &> $OUTDIR/sd.log &
APP_PID=$!

echo "Wait for server to startup"

tail -f -n0 $OUTDIR/sd.log | grep -qe "Point your browser at"

echo "Started, continuing"

if [ $? == 1 ]; then
    echo "Search terminated without finding the pattern"
fi

# Generate image
RESULT=$(curl -v -X POST -d '{"index":0,"variation_amount":0,"with_variations":"","steps":25,"width":512,"seed":"1337","prompt":"A cat wearing a hat","strength":0.5,"initimg":null,"cfg_scale":2,"iterations":1,"upscale_level":0,"upscale_strength":0,"sampler_name":"k_euler","height":512}' localhost:3333 | grep result)

# Test 01 - Image contents
FILENAME=$(echo $RESULT | jq -r .url)

ACTUAL_CHECKSUM=$(sha256sum $FILENAME)
EXPECTED_CHECKSUM="a77799226a4dfc62a1674498e575c775da042959a4b90b13e26f666c302f079f"

if [ "$ACTUAL_CHECKSUM" != "$EXPECTED_CHECKSUM" ]; then
    echo "Expected hash $EXPECTED_CHECKSUM but got hash $ACTUAL_CHECKSUM"
    kill $APP_PID
    # rm -r $OUTDIR
    exit 33
fi

# Assert output

# Cleanup
kill $APP_PID
# rm -r $OUTDIR