#!/bin/bash

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

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

PATH=$ROOT/src/swtpm:$PATH

[ "${SWTPM_IFACE}" == "cuse" ] && source ${TESTDIR}/test_cuse
source ${TESTDIR}/common

trap "cleanup" SIGTERM EXIT

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

# Test 1: No states

workdir="$(mktemp -d)" || exit 1
msg="$(${SWTPM_EXE} ${SWTPM_IFACE} --print-states --tpmstate dir=${workdir} 2>&1)"

if [ $? -ne 0 ]; then
	echo "Error: Could not pass --print-states"
	echo "${msg}"
	exit 1
fi

exp='\{ "type": "swtpm", "states": \[\] \}'
if ! [[ ${msg} =~ ${exp} ]]; then
	echo "Unexpected response from ${SWTPM_IFACE} TPM to --print-states:"
	echo "Actual   : ${msg}"
	echo "Expected : ${exp}"
	echo "Test 1: Failed"
	exit 1
fi

echo "Test 1: OK"
cleanup

# Test 2: Existing state

workdir="$(mktemp -d)" || exit 1
statefile="${workdir}/tpm-00.permall"
dummydata="DUMMY"
echo $dummydata > ${statefile}

msg="$(${SWTPM_EXE} ${SWTPM_IFACE} --print-states --tpmstate dir=${workdir} 2>&1)"

if [ $? -ne 0 ]; then
	echo "Error: Could not pass --print-states"
	echo "${msg}"
	exit 1
fi

exp='\{ "type": "swtpm", "states": \[ \{"name": "permall", "size": 6\} \] \}'
if ! [[ ${msg} =~ ${exp} ]]; then
	echo "Unexpected response from ${SWTPM_IFACE} TPM to --print-states:"
	echo "Actual   : ${msg}"
	echo "Expected : ${exp}"
	exit 1
fi

echo "Test 2: OK"
cleanup

exit 0
