Updated the proostekrant to work properly again.

This commit is contained in:
douwe
2026-10-09 10:33:21 +02:00
parent 56d143b74b
commit 256a81a770
133 changed files with 10491 additions and 837 deletions
+84
View File
@@ -0,0 +1,84 @@
#!/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