85 lines
3.6 KiB
Bash
Executable File
85 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Simuleert 20 familiezendingen via de echte website-flow (paszin -> formulier),
|
|
# publiceert ze als redactie en drukt de Herfst-editie.
|
|
set -u
|
|
BASE=http://localhost:8080
|
|
PASS="ProostenKrant2024!"
|
|
JAR=/tmp/sim.cookies
|
|
IMG1="/home/douwe/Projects/proostenkrant.net/app/public/images/articles/930c7e6f_ScreenshotFrom20260806141156.png"
|
|
IMG2="/home/douwe/Projects/proostenkrant.net/app/public/images/articles/3b901c4e_ScreenshotFrom20260212232013.png"
|
|
|
|
get_token() {
|
|
curl -s -b "$JAR" -c "$JAR" "$BASE$1" -o "$2"
|
|
TOKEN=$(grep -o 'name="__RequestVerificationToken"[^>]*value="[^"]*"' "$2" | head -1 | sed 's/.*value="//;s/"$//')
|
|
HANDLER=$(grep -o 'name="_handler" value="[^"]*"' "$2" | head -1 | sed 's/.*value="//;s/"$//')
|
|
}
|
|
|
|
echo "=== Opruimen: testartikelen van eerder ==="
|
|
docker exec proostenkrant-mysql mysql -u proostenkrant -pproostenkrant proostenkrant -e "TRUNCATE TABLE articles;" 2>/dev/null
|
|
|
|
echo "=== 20 artikelen indienen via /indienen ==="
|
|
n=0
|
|
declare -A UID_MAP
|
|
while IFS=$'\t' read -r naam id; do
|
|
UID_MAP["$naam"]="$id"
|
|
done < <(docker exec proostenkrant-mysql mysql -N -u proostenkrant -pproostenkrant proostenkrant -e "SELECT display_name, id FROM users;" 2>/dev/null | tr -d ' ')
|
|
id_van() { echo "${UID_MAP[$1]:-0}"; }
|
|
|
|
while IFS='|' read -r TITEL TEKST SCHRIJVER DEELNEMERS DATUM; do
|
|
[ -z "$TITEL" ] && continue
|
|
n=$((n+1))
|
|
# paszin-flow per artikel (cookie wordt na elke indiening gewist)
|
|
rm -f "$JAR"
|
|
get_token "/indienen" /tmp/sim_pas.html
|
|
curl -s -b "$JAR" -c "$JAR" -X POST "$BASE/indienen" \
|
|
--data-urlencode "_handler=$HANDLER" \
|
|
--data-urlencode "Input.Paszin=$PASS" \
|
|
--data-urlencode "__RequestVerificationToken=$TOKEN" \
|
|
-o /dev/null
|
|
get_token "/indienen/formulier" /tmp/sim_form.html
|
|
# wissel de twee dummy-afbeeldingen af
|
|
if [ $((n % 2)) -eq 1 ]; then IMG="$IMG1"; else IMG="$IMG2"; fi
|
|
IFS=',' read -ra NAMEN <<< "$DEELNEMERS"
|
|
ARGS=()
|
|
for d in "${NAMEN[@]}"; do ARGS+=(-F "Participants=$(id_van "$d")"); done
|
|
code=$(curl -s -b "$JAR" -X POST "$BASE/indienen/formulier" \
|
|
-F "_handler=$HANDLER" \
|
|
-F "Input.Title=$TITEL" \
|
|
-F "Input.Content=$TEKST" \
|
|
-F "Input.WriterId=$(id_van "$SCHRIJVER")" \
|
|
-F "Input.EventDate=$DATUM" \
|
|
"${ARGS[@]}" \
|
|
-F "Afbeelding=@$IMG" \
|
|
-F "__RequestVerificationToken=$TOKEN" \
|
|
-o /dev/null -w "%{http_code}")
|
|
echo "artikel $n: $code - $TITEL"
|
|
done < /home/douwe/Projects/proostenkrant.net/scripts/demo-articles.tsv
|
|
|
|
echo "=== Inloggen als redactie en publiceren ==="
|
|
rm -f "$JAR"
|
|
get_token "/login" /tmp/sim_login.html
|
|
curl -s -b "$JAR" -c "$JAR" -X POST "$BASE/login" \
|
|
--data-urlencode "_handler=$HANDLER" \
|
|
--data-urlencode "Input.Username=douwe" \
|
|
--data-urlencode "Input.Password=$PASS" \
|
|
--data-urlencode "__RequestVerificationToken=$TOKEN" \
|
|
-o /dev/null
|
|
|
|
IDS=$(docker exec proostenkrant-mysql mysql -N -u proostenkrant -pproostenkrant proostenkrant -e "SELECT id FROM articles WHERE status='draft' ORDER BY id;" 2>/dev/null)
|
|
for id in $IDS; do
|
|
get_token "/artikelen/$id" /tmp/sim_art.html
|
|
code=$(curl -s -b "$JAR" -X POST "$BASE/artikelen/$id" \
|
|
--data-urlencode "_handler=$HANDLER" \
|
|
--data-urlencode "__RequestVerificationToken=$TOKEN" \
|
|
-o /dev/null -w "%{http_code}")
|
|
echo "publiceer $id: $code"
|
|
done
|
|
|
|
echo "=== Krant drukken (Herfst) ==="
|
|
get_token "/seizoenen" /tmp/sim_seiz.html
|
|
curl -s -b "$JAR" -X POST "$BASE/api/genereer-pdf" \
|
|
-F "SeizoenId=3" \
|
|
-F "__RequestVerificationToken=$TOKEN" \
|
|
-o /dev/null -w "drukken: %{http_code} -> %{redirect_url}\n" --max-time 240
|
|
ls -la /home/douwe/Projects/proostenkrant.net/app/storage/latex/*.pdf
|