summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/test.sh
blob: 1b78960ebcd57537a1da539412714401eaaec7bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env bash

set -euo pipefail

HOST=${1:-https://lambda.pankzsoft.net}

ALICE=$(curl -s -X POST -H 'content-type: application/json' $HOST/api/register -d '"alice"' | jq -r)
echo "registered alice with token '$ALICE'"
sleep 2

for i in $(seq 1 14); do
    GRADE=$(curl -s -X GET  -H 'content-type: application/json' "$HOST/api/score?token=$ALICE" | jq -r .grade)
    echo "alice's grade is $GRADE"
    sleep 1

    CHAL=$(curl -s -X GET -H 'content-type: application/json' "$HOST/api/challenge?token=$ALICE" | jq -r .expr)
    echo "alice's challenge is '$CHAL'"
    sleep 1

    ANSWER=$(echo "$CHAL" | cabal run)
    echo "alice's answer is '$ANSWER'"

    RESULT=$(curl -s -X POST -H 'content-type: application/json' "$HOST/api/challenge?token=$ALICE" -d "\"$ANSWER\"")

    if [ "$RESULT" != "[]" ]; then
        echo "Failed challenge: $RESULT"
    fi
done

SCORE=$(curl -s -X DELETE  -H 'content-type: application/json' "$HOST/api/register?token=$ALICE")

echo "Unregistered alice: $SCORE"