#!/usr/bin/env bash

set -e

eval `ultrapossum-config init`
trap "find $SYSCONFDIR -name '*.extra' | xargs /bin/rm -f; eval `ultrapossum-config term`" 0

ultrapossum-config get
ultrapossum-config module
ultrapossum-config variable
ultrapossum-config status

## Config set test
ultrapossum-config remove . ORGANIZATION SUFFIX
eval `ultrapossum-config get ORGANIZATION`
oORGANIZATION=$ORGANIZATION
oSUFFIX=$SUFFIX

for v in SUFFIX ORGANIZATION
do
  for val in "hello" "hello world" "hello 'quoted'"
  do
    echo -n "Setting $v to $val ... "
    ultrapossum-config set . "$v=$val"
    eval `ultrapossum-config get $v`
    if test "x${!v}" != "x$val"; then
      echo "failed to set $v to $val (${!v})" 1>&2
      exit 1
    fi
    echo "ok"
  done
done


## Config remove test
echo -n "Removing ORGANIZATION, SUFFIX... "
ultrapossum-config remove . ORGANIZATION SUFFIX
eval `ultrapossum-config get ORGANIZATION SUFFIX`
if test "x$ORGANIZATION" != "x$oORGANIZATION"; then
  echo "failed to remove ORGANIZATION" 1>&2
  exit 1
fi
if test "x$SUFFIX" != "x$oSUFFIX"; then
  echo "failed to remove SUFFIX" 1>&2
  exit 1
fi
echo "ok"

## EXTRACONFSUFFIX test
for f in $SYSCONFDIR/ultrapossum.cf $SYSCONFDIR/secret.cf
do
  echo -n "Checking extra configuration for `basename $f`... "
  echo "SUFFIX=extrasuffix" > $f.extra
  eval `EXTRACONFSUFFIX=.extra ultrapossum-config get SUFFIX`
  if test "x$SUFFIX" != "xextrasuffix"; then
    echo "failed"
    exit 1
  fi
  echo "ok"
  /bin/rm -f $f.extra
done

