#!/usr/bin/env bash

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

if [ "$(id -u)" -eq 0 ]; then
	echo "Not running this test as root."
	exit 77
fi

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

source "${TESTDIR}/common"

trap "cleanup" SIGTERM EXIT

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

workdir="$(mktemp -d)" || exit 1

FILES="swtpm-localca.conf swtpm-localca.options swtpm_setup.conf"

if ! XDG_CONFIG_HOME="${workdir}" ${SWTPM_SETUP} \
	--create-config-files 1>/dev/null;
then
	echo "Error: Could not created config files (without parameters)"
	exit 1
fi
for f in ${FILES}; do
	if ! [ -f "${workdir}/${f}" ]; then
		echo "Error: File ${workdir}/${f} was not created"
		exit 1
	fi
done
if ! [ -d "${workdir}/var/lib/swtpm-localca" ]; then
	echo "Error: Directory var/lib/swtpm-localca was not created"
	exit 1
fi

if ! XDG_CONFIG_HOME="${workdir}" ${SWTPM_SETUP} \
	--create-config-files skip-if-exist 1>/dev/null;
then
	echo "Error: skip-if-exists should have exit'ed with 0."
	exit 1
fi

echo "Test 1: Ok"
cleanup

workdir="$(mktemp -d)" || exit 1

if ! XDG_CONFIG_HOME="${workdir}" ${SWTPM_SETUP} \
	--create-config-files skip-if-exist 1>/dev/null;
then
	echo "Error: skip-if-exists should have exit'ed with 0."
	exit 1
fi
for f in ${FILES}; do
	if ! [ -f "${workdir}/${f}" ]; then
		echo "Error: File ${workdir}/${f} was not created"
		exit 1
	fi
done
if ! [ -d "${workdir}/var/lib/swtpm-localca" ]; then
	echo "Error: Directory var/lib/swtpm-localca was not created"
	exit 1
fi

echo "Test 2: Ok"
cleanup

exit 0
