Bearbeiten: POST /entry/{pid}/edit (Inhalt ändern)
- handleEditEntry: Eigentümerprüfung, nicht-leer, content-only Update - Bild und last_activity bleiben unverändert; gelöschte Posts nicht editierbar - Frontend: Bearbeiten-Button + Inline-Formular auf der Focus-Seite Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -318,6 +318,54 @@ func TestThreading(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestEditEntry(t *testing.T) {
|
||||
srv := newTestServer(t)
|
||||
alice := registerAndLogin(t, srv, "alice")
|
||||
bob := registerAndLogin(t, srv, "bob")
|
||||
|
||||
pid := createEntry(t, alice, srv, "original")
|
||||
editURL := fmt.Sprintf("%s/entry/%d/edit", srv.URL, pid)
|
||||
|
||||
// Eigentümer bearbeitet -> 200, neuer Inhalt sichtbar.
|
||||
resp := postForm(t, alice, editURL, url.Values{"content": {"korrigiert"}})
|
||||
resp.Body.Close()
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
t.Fatalf("edit: erwartet 200, bekam %d", resp.StatusCode)
|
||||
}
|
||||
if tv := getThread(t, srv, pid); tv.Entry.Content != "korrigiert" {
|
||||
t.Fatalf("inhalt nach edit: %q", tv.Entry.Content)
|
||||
}
|
||||
|
||||
// Leerer Inhalt -> 400.
|
||||
resp = postForm(t, alice, editURL, url.Values{"content": {" "}})
|
||||
resp.Body.Close()
|
||||
if resp.StatusCode != http.StatusBadRequest {
|
||||
t.Fatalf("leerer edit: erwartet 400, bekam %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
// Fremder -> 403.
|
||||
resp = postForm(t, bob, editURL, url.Values{"content": {"hijack"}})
|
||||
resp.Body.Close()
|
||||
if resp.StatusCode != http.StatusForbidden {
|
||||
t.Fatalf("fremd-edit: erwartet 403, bekam %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
// Unbekannte pid -> 404.
|
||||
resp = postForm(t, alice, srv.URL+"/entry/999999/edit", url.Values{"content": {"x"}})
|
||||
resp.Body.Close()
|
||||
if resp.StatusCode != http.StatusNotFound {
|
||||
t.Fatalf("edit unbekannt: erwartet 404, bekam %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
// Nach Soft-Delete ist der Beitrag nicht mehr bearbeitbar (uid=0) -> 403.
|
||||
postForm(t, alice, fmt.Sprintf("%s/entry/%d/delete", srv.URL, pid), url.Values{}).Body.Close()
|
||||
resp = postForm(t, alice, editURL, url.Values{"content": {"wieder da"}})
|
||||
resp.Body.Close()
|
||||
if resp.StatusCode != http.StatusForbidden {
|
||||
t.Fatalf("edit nach delete: erwartet 403, bekam %d", resp.StatusCode)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSoftDelete(t *testing.T) {
|
||||
srv := newTestServer(t)
|
||||
alice := registerAndLogin(t, srv, "alice")
|
||||
|
||||
Reference in New Issue
Block a user