#!/bin/bash

# Test the identity command-line tool.
#
# This tests most operations of the identity command-line tool.
# Not the "seekblessing" command yet, since that requires
# starting a separate server.

source "${VEYRON_ROOT}/environment/scripts/lib/shell_test.sh"

main() {
  # Build binaries.
  cd "${TMPDIR}"
  local -r GO="${REPO_ROOT}/scripts/build/go"
  "${GO}" build veyron/tools/identity || shell_test::fail "line ${LINENO}: failed to build identity"

  ./identity print >/dev/null || shell_test::fail "line ${LINENO}: print failed"
  ./identity generate >/dev/null || shell_test::fail "line ${LINENO}: generate failed"
  ./identity generate root >root || shell_test::fail "line ${LINENO}: generate root failed"

  export VEYRON_IDENTITY="root"

  # Generate an identity and get it blessed by root using "identity bless"
  local GOT=$(./identity generate ignoreme | ./identity bless - child | ./identity print - | awk '/Name/ {print $3}')
  local WANT="root/child"
  if [ "${GOT}" != "${WANT}" ]; then
      shell_test::fail "line ${LINENO}: Got ${GOT}, want ${WANT}"
  fi

  # Generate an identity and get it blessed by root using "identity bless --with"
  ./identity generate other >other || shell_test::fail
  GOT=$(./identity generate ignoreme | ./identity bless --with=other - child | ./identity print - | awk '/Name/ {print $3}')
  WANT="unknown/other/child"
  if [ "${GOT}" != "${WANT}" ]; then
      shell_test::fail "line ${LINENO}: Got ${GOT}, want ${WANT}"
  fi

  shell_test::pass
}

main "$@"
