#! /bin/sh -e die () { echo "ERROR ERROR: $*" exit 1 } CTF_BASE=/tmp/ctf-test.$$ export CTF_BASE trap "rm -rf $CTF_BASE" 0 mkdir $CTF_BASE # Some skeletal structure mkdir -p $CTF_BASE/points.new # Set up some packages for cat in cat1 cat2 cat3; do mkdir -p $CTF_BASE/packages/$cat cat >$CTF_BASE/packages/$cat/answers.txt < $CTF_BASE/token.keys/tokencat # in.tokend uses a random number generator echo -n 'tokencat' | src/in.tokend > /dev/null if ! grep -q 'tokencat:x....-....x' $CTF_BASE/tokens.db; then die "in.tokend didn't write to database" fi if src/claim.cgi t=lalalala k=$(cat $CTF_BASE/tokens.db) | grep -q success; then die "claim.cgi gave points to a bogus team" fi if src/claim.cgi t=$hash k=tokencat:xanax-xanax | grep -q success; then die "claim.cgi gave points for a bogus token" fi if ! src/claim.cgi t=$hash k=$(cat $CTF_BASE/tokens.db) | grep -q success; then die "claim.cgi didn't give me any points" fi if src/claim.cgi t=$hash k=$(cat $CTF_BASE/tokens.db) | grep -q success; then die "claim.cgi gave me points twice for the same token" fi if ! [ -f $CTF_BASE/points.new/*.$hash.tokencat.1 ]; then die "claim.cgi didn't actually record any points" fi echo "All tests passed! You're the best programmer ever!"