summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/test.sh
blob: 6bb9dc47bd321484b4f0327e3dcd8824a78c1e37 (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
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env bash

set -euo pipefail

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

post () {
    url=$1
    data=$2

    curl -s -X POST -H 'content-type: application/json' "$url" -d "$data"
}

get () {
    url=$1

    curl -s -X GET -H 'content-type: application/json' "$url"
}

ALICE=$(post $HOST/api/register '"alice"' | jq -r)
echo "registered alice with token '$ALICE'"
sleep 2

for i in $(seq 1 14); do
    GRADE=$(get "$HOST/api/score?token=$ALICE" | jq -r .grade)
    echo "alice's grade is $GRADE"
    sleep 1

    CHAL=$(get "$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=$(post "$HOST/api/challenge?token=$ALICE" "\"$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"