#!/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