#!/bin/sh
trap 'killm f' EXIT
#
# Nate Richard
# August 3, 2023

# Wraps runtest to change the different key types
# Skip full tests unless specified
fullSuite="${DTKA_FULLSUITE-}"
if [ "$fullSuite" ]; then
    echo "Running full DTKA test"
fi

./cleanup
echo "Running test for AES key type..."
./runtest
exit_stat=$?
if [ $exit_stat -ne 0 ]; then
    echo "Error running AES test"
    ./cleanup
    exit "$exit_stat"
fi
./cleanup

if [ "$fullSuite" ]; then
    sed 's/aes/ecdsa/g' node.dtkarc >node.dtkarc.tmp &&
        mv node.dtkarc.tmp node.dtkarc || {
        echo "Failed to update node.dtkarc to ECDSA" >&2
        exit 1
    }
    echo "Running test for ECDSA key type..."
    ./runtest
    exit_stat=$?
    if [ $exit_stat -ne 0 ]; then
        echo "Error running ECDSA test"
        sed 's/ecdsa/aes/g' node.dtkarc >node.dtkarc.tmp &&
            mv node.dtkarc.tmp node.dtkarc
        ./cleanup
        exit "$exit_stat"
    fi
    ./cleanup

    sed 's/ecdsa/hmac/g' node.dtkarc >node.dtkarc.tmp &&
        mv node.dtkarc.tmp node.dtkarc || {
        echo "Failed to update node.dtkarc to HMAC" >&2
        exit 1
    }
    echo "Running test for HMAC key type..."
    ./runtest
    exit_stat=$?
    if [ $exit_stat -ne 0 ]; then
        echo "Error running HMAC test"
        sed 's/hmac/aes/g' node.dtkarc >node.dtkarc.tmp &&
            mv node.dtkarc.tmp node.dtkarc
        ./cleanup
        exit "$exit_stat"
    fi
    killm

    # Return to orignal state
    sed 's/hmac/aes/g' node.dtkarc >node.dtkarc.tmp &&
        mv node.dtkarc.tmp node.dtkarc
fi

echo "Tests finished"
exit 0
