#!/bin/bash

set -e


function fail() {
echo
echo -en "\e[0;31m"
echo "!!!!!!!!!!!!!!!!!!!!!!"
echo "!! WARNING: $1 !!"
echo "!!!!!!!!!!!!!!!!!!!!!!"
echo -en "\e[0m"
echo
exit 1
}

USAGE="$0 [-v]"
if [ $# -eq 0 ]; then
    # curl options:
    # -L - follow redirects
    # -f - fail on erroneous codes (exit code 22)
    # -s - silent on errors
    APP="curl -Lfs"
elif [ "$1" = '-v' ]; then
    APP="curl -Lfv"
else
    echo "$USAGE"
    exit 1
fi

HOST="localhost:6000"
YA_ENV_TYPE=`cat /etc/yandex/environment.type`
if [ -f "/etc/yandex/environment.name" ]; then
    YA_ENV_NAME=`cat /etc/yandex/environment.name`
else
    YA_ENV_NAME="localhost"
fi

echo "Yandex environment: $YA_ENV_NAME $YA_ENV_TYPE"

if [ "$YA_ENV_TYPE" = development ] || [ "$YA_ENV_TYPE" = testing ]; then
    if [ "$YA_ENV_NAME" = intranet ]; then
        USER_ID=1100000000000005
    else
        USER_ID=3000153923
    fi
elif [ "$YA_ENV_TYPE" = stress ]; then
    USER_ID=1000000
elif [ "$YA_ENV_TYPE" = rc ] || [ "$YA_ENV_TYPE" = production ]; then
    if [ "$YA_ENV_NAME" = intranet ]; then
        USER_ID=1120000000011117
    else
        USER_ID=172997057
    fi
else
    echo -en "\e[0;31m"
    echo "Unknown yandex environment: $YA_ENV_TYPE"
    echo "Install one of the following packages:"
    echo "	yandex-environment-production"
    echo "	yandex-environment-testing"
    echo "	yandex-environment-development"
    echo -en "\e[0m"
    exit 1
fi

echo "Doing simple /ping check"
SERVICES="db,blackbox,redis"
if [ "$YA_ENV_TYPE" != development ]; then
    SERVICES="$SERVICES,frontend"
fi
$APP -X GET "$HOST/ping?check=$SERVICES" | grep -qF 'Pong' || fail "Ping failed!"

echo "Testing passport with uid: $USER_ID"

echo "Testing unblock -> block -> unblock"
$APP -X POST "$HOST/1/account/$USER_ID/?consumer=dev" -d "is_enabled=1" | grep -qF 'ok' || fail "Unblock failed!"
$APP -X POST "$HOST/passport/admblock" -d "uid=$USER_ID" | grep -qF 'ok' || fail "Block failed!"
$APP -X POST "$HOST/1/account/$USER_ID/?consumer=dev" -d "is_enabled=1" | grep -qF 'ok' || fail "Second unblock failed!"

echo "Testing set karma to 0 -> set karma to 100 -> to 2100 -> set karma to 0"
$APP -X POST "$HOST/1/account/$USER_ID/karma/?consumer=dev" -d "prefix=0&suffix=0" | grep -qE 'ok' || fail "Can't set karma to 0!"
$APP -X POST "$HOST/passport/admkarma" -d "uid=$USER_ID&karma=100" | grep -qF 'ok' || fail "Can't set karma to 100!"
$APP -X POST "$HOST/passport/admkarma" -d "uid=$USER_ID&prefix=2" | grep -qF 'ok' || fail "Can't set karma to 2100!"
$APP -X POST "$HOST/1/account/$USER_ID/karma/?consumer=dev" -d "prefix=0&suffix=0" | grep -qF 'ok' || fail "Can't set karma to 0! (2)"

echo "Testing unsubscribe from 672 -> subscribe to 672 -> unsubscribe from 672"
$APP -X POST "$HOST/passport/admsubscribe" -d "uid=$USER_ID&sid=672&unsubscribe=yes" | grep -qE '(accepted|nothingtodo)' || fail "Unsubscribe from 672 failed!"
$APP -X POST "$HOST/passport/admsubscribe" -d "uid=$USER_ID&sid=672" | grep -qE '(accepted|nothingtodo)' || fail "Subscribe to 672 failed!"
$APP -X POST "$HOST/passport/admsubscribe" -d "uid=$USER_ID&sid=672&unsubscribe=yes" | grep -qE '(accepted|nothingtod)' || fail "Unsubscribe from 672 failed! (2)"

echo "Success!"
exit 0
