#!/bin/bash

TEST_HOST=sabod-rital.test.arrdem.com

function kook_setup {
  kook -g geo_test group delete
  kook -g rack_test_test group delete
  kook -H $TEST_HOST host delete
}

function kook_test {
  ##################################################
  # Group CRU
  if kook group create geo_test; then
    echo "[OK]   Geo group created"
  else
    echo "[FAIL] Geo group not created"
  fi

  if kook -g geo_test var create geo test; then
    echo "[OK]   Var created"
  else
    echo "[FAIL] Var create failed"
  fi

  if [ $(kook -g geo_test group details | jq '.geo_test.geo == "test"') == "true" ]; then
    echo "[OK]   Var read after write"
  else
    echo "[FAIL] Var not read back"
  fi

  # These two paths have already been tested
  kook group create rack_test_test
  kook -g rack_test_test var create rack test

  # Testing vars on parent groups
  if kook -g rack_test_test group add geo_test; then
    echo "[OK]   Group-group added"
  else
    echo "[FAIL] Group-group not added"
  fi

  if [ $(kook -g rack_test_test group details | jq '.rack_test_test.geo == "test"') == "true" ]; then
    echo "[OK]   'geo' var inherited from supergroup"
  else
    echo "[FAIL] Var not inherited!"
  fi

  if [ $(kook -g rack_test_test group details | jq '.rack_test_test.rack == "test"') == "true" ]; then
    echo "[OK]   'rack' var set"
  else
    echo "[FAIL] Var not set!"
  fi

  ##################################################
  # Host CRU
  if kook host create $TEST_HOST; then
    echo "[OK]   Host created"
  else
    echo "[FAIL] Host not created"
  fi

  if kook host list | grep -q $TEST_HOST > /dev/null; then
    echo "[OK]   Host read after write"
  else
    echo "[FAIL] Host not read"
  fi

  if kook -H $TEST_HOST var create foo bar; then
    echo "[OK]   Var created"
  else
    echo "[FAIL] Unable to create host var"
  fi

  if [ $(kook -H $TEST_HOST host details | jq ".[\"${TEST_HOST}\"].foo == \"bar\"") == "true" ]; then
    echo "[OK]   Able to read var back"
  else
    echo "[FAIL] Unable to read host var back!"
  fi

  # And for a host...
  if kook -H $TEST_HOST group add rack_test_test; then
    echo "[OK]   Added host to rack group"
  else
    echo "[FAIL] Unable to add host to rack group"
  fi

  # Checking that the host is in both group's list.
  if kook -g rack_test_test host list | grep -q $TEST_HOST; then
    echo "[OK]   Host is in the rack group"
  else
    echo "[FAIL] Host is not in the rack group!"
  fi

  # And in the geo's list.
  if kook -g geo_test host list | grep -q $TEST_HOST; then
    echo "[OK]   Host is in the geo group"
  else
    echo "[FAIL] Host is not in the geo group!"
  fi
}

function kook_teardown {
  kook_setup
}

kook_setup 1>/dev/null 2>/dev/null
kook_test
kook_teardown 1>/dev/null 2>/dev/null