diff --git a/CHANGELOG.md b/CHANGELOG.md index 387d4e7..549924d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +## Vikunja fixture: the create verb is PUT, not POST (2026-09-21, R-462) + +Test code only, and a one-line correction to the fixture shipped earlier the same night. + +Vikunja CREATES a project with **`PUT /api/v1/projects`**. The fixture sent `POST`, which answers +`405 Method Not Allowed` — and a 405 in the middle of a seed reads like a broken app rather than a +wrong verb. Measured on the box before the fixture was ported here; the box-side copy was corrected +at the same time and its edge then walked clean (`vikunja 2.3.0 -> 2.6.0`, proven, 24.6 s). + +Kept as its own entry rather than folded into the previous one, because the previous entry claims +these fixtures were proven box-side first — and for this one line that claim was true of the SEED +ROUTE and not of the verb the port carried. + ## Upgrade harness: four new fixtures and seven real upstream EDGES (2026-09-21, R-462) **Test code only. No template changed, and no `image:` line moved.** The update night diff --git a/scripts/upgrade_fixtures.py b/scripts/upgrade_fixtures.py index dba502f..5755c22 100644 --- a/scripts/upgrade_fixtures.py +++ b/scripts/upgrade_fixtures.py @@ -457,9 +457,11 @@ class Vikunja: say(" vikunja: could not log in after registering") return None title = "spike-" + secrets.token_hex(5) + # Vikunja CREATES with PUT, not POST — a POST answers `405 Method Not Allowed`, which + # reads like a broken fixture and is really the wrong verb. Measured 2026-09-21. rc, code, out = _curl(base + "/api/v1/projects", "-H", f"Authorization: Bearer {tok}", "-H", "Content-Type: application/json", - data=json.dumps({"title": title}), method="POST") + data=json.dumps({"title": title}), method="PUT") say(f" vikunja: create project http={code}") if code not in ("200", "201"): say(f" vikunja: project refused {out[:200]}")