#!/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")} source "${TESTDIR}/common" skip_test_no_tpm20 "${SWTPM_EXE}" STATEBASENAME="tpm2-00.permall" trap "cleanup" SIGTERM EXIT function cleanup() { rm -rf "${workdir}" } # Test 1: --not-overwrite with dummy state file workdir="$(mktemp -d)" || exit 1 statefile="${workdir}/${STATEBASENAME}" dummydata="DUMMY" echo "$dummydata" > "${statefile}" if ! $SWTPM_SETUP \ --tpm2 \ --not-overwrite \ --tpm-state "${workdir}" \ --config "${SWTPM_SETUP_CONF}" \ --logfile "${workdir}/logfile" \ --tpm "${SWTPM_EXE} socket ${SWTPM_TEST_SECCOMP_OPT}"; then echo "Test 1 failed: Error: Could not run $SWTPM_SETUP." echo "Setup Logfile:" cat "${workdir}/logfile" exit 1 fi if ! grep -q "${dummydata}" "${statefile}"; then echo "Test 1 failed: Error: The state file was unexpectedly overwritten." echo "Setup Logfile:" cat "${workdir}/logfile" exit 1 fi echo "Test 1 passed" cleanup # Test 2: --overwrite with dummy state file workdir="$(mktemp -d)" || exit 1 statefile="${workdir}/${STATEBASENAME}" dummydata="DUMMY" echo "$dummydata" > "${statefile}" if ! $SWTPM_SETUP \ --tpm2 \ --overwrite \ --tpm-state "${workdir}" \ --config "${SWTPM_SETUP_CONF}" \ --logfile "${workdir}/logfile" \ --tpm "${SWTPM_EXE} socket ${SWTPM_TEST_SECCOMP_OPT}"; then echo "Test 2 failed: Error: Could not run $SWTPM_SETUP." echo "Setup Logfile:" cat "${workdir}/logfile" exit 1 fi if grep -q "${dummydata}" "${statefile}"; 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" cleanup # Test 3: neither "--overwrite" nor "--not-overwrite" with dummy state file workdir="$(mktemp -d)" || exit 1 statefile="${workdir}/${STATEBASENAME}" dummydata="DUMMY" echo "$dummydata" > "${statefile}" $SWTPM_SETUP \ --tpm2 \ --tpm-state "${workdir}" \ --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 ! grep -q "${dummydata}" "${statefile}"; 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