#!/usr/bin/env bash

# For the license, see the LICENSE file in the root directory.

ROOT=${abs_top_builddir:-$(dirname "$0")/..}
TESTDIR=${abs_top_testdir:-$(dirname "$0")}
SRCDIR=${abs_top_srcdir:-$(dirname "$0")/..}

source ${TESTDIR}/common
skip_test_no_tpm12 "${SWTPM_EXE}"

SWTPM_SETUP_CONF=$SRCDIR/samples/swtpm_setup.conf

state_save_dir="$(mktemp -d)" || exit 1
state_save=${state_save_dir}/swtpm-test.state.save

trap "cleanup" SIGTERM EXIT

function cleanup()
{
	rm -rf ${workdir} ${state_save_dir}
}

# Test 1: no dummy file, create new state

workdir="$(mktemp -d)" || exit 1
statefile="${workdir}/swtpm-test.state"

$SWTPM_SETUP \
	--not-overwrite \
	--tpm-state "file://${statefile}" \
	--config ${SWTPM_SETUP_CONF} \
	--logfile ${workdir}/logfile \
	--tpm "${SWTPM_EXE} socket ${SWTPM_TEST_SECCOMP_OPT}"

if [ $? -ne 0 ]; then
	echo "Test 1 failed: Error: Could not run $SWTPM_SETUP."
	echo "Setup Logfile:"
	cat ${workdir}/logfile
	exit 1
fi

echo "Test 1 passed"

# copy out and reuse the valid state from test 1 as dummy, as file backend will
# not detect files without at least a valid header - but append some garbage at
# the end to distinguish it from newly created states
cp ${statefile} ${state_save}
echo "GARBAGE" >> ${state_save}

rm -rf ${workdir}

# Test 2: --overwrite with dummy state file

workdir="$(mktemp -d)" || exit 1
statefile="${workdir}/swtpm-test.state"
cp ${state_save} ${statefile}

$SWTPM_SETUP \
	--overwrite \
	--tpm-state "file://${statefile}" \
	--config ${SWTPM_SETUP_CONF} \
	--logfile ${workdir}/logfile \
	--tpm "${SWTPM_EXE} socket ${SWTPM_TEST_SECCOMP_OPT}"

if [ $? -ne 0 ]; then
	echo "Test 2 failed: Error: Could not run $SWTPM_SETUP."
	echo "Setup Logfile:"
	cat ${workdir}/logfile
	exit 1
fi

if cmp -s "${statefile}" "${state_save}"; then
	echo "Test 2 failed: Error: The state file was not overwritten."
	echo "Setup Logfile:"
	cat ${workdir}/logfile
	exit 1
fi

echo "Test 2 passed"
rm -rf ${workdir}

# Test 3: neither "--overwrite" nor "--not-overwrite" with dummy state file

workdir="$(mktemp -d)" || exit 1
statefile="${workdir}/swtpm-test.state"
cp ${state_save} ${statefile}

$SWTPM_SETUP \
	--tpm-state "file://${statefile}" \
	--config ${SWTPM_SETUP_CONF} \
	--logfile ${workdir}/logfile \
	--tpm "${SWTPM_EXE} socket ${SWTPM_TEST_SECCOMP_OPT}"

if [ $? -ne 1 ]; then
	echo "Test 3 failed: Error: $SWTPM_SETUP did not exit with exit code 1."
	echo "Setup Logfile:"
	cat ${workdir}/logfile
	exit 1
fi

if ! cmp -s "${statefile}" "${state_save}"; then
	echo "Test 3 failed: Error: The state file was unexpectedly overwritten."
	echo "Setup Logfile:"
	cat ${workdir}/logfile
	exit 1
fi

echo "Test 3 passed"

cleanup
exit 0
