server: cover HTMX auth-redirect path in repo-ops tests

This commit is contained in:
2026-05-03 23:00:38 +01:00
parent ef2a30a82d
commit a899cc2d04
+31
View File
@@ -328,4 +328,35 @@ func TestRunOpsRequireAuth(t *testing.T) {
}
})
}
// HTMX path: unauthenticated POST with HX-Request: true → 303 to /login.
// Auth check fires before host lookup so the host ID doesn't need to exist.
for _, path := range []string{
"/hosts/" + hostID + "/repo/prune",
"/hosts/" + hostID + "/repo/check",
"/hosts/" + hostID + "/repo/unlock",
} {
path := path
t.Run("htmx"+path, func(t *testing.T) {
t.Parallel()
client := &stdhttp.Client{
CheckRedirect: func(_ *stdhttp.Request, _ []*stdhttp.Request) error {
return stdhttp.ErrUseLastResponse
},
}
req, _ := stdhttp.NewRequest("POST", url+path, nil)
req.Header.Set("HX-Request", "true")
res, err := client.Do(req)
if err != nil {
t.Fatalf("do: %v", err)
}
defer res.Body.Close()
if res.StatusCode != stdhttp.StatusSeeOther {
t.Errorf("want 303, got %d", res.StatusCode)
}
if loc := res.Header.Get("Location"); loc != "/login" {
t.Errorf("want Location=/login, got %q", loc)
}
})
}
}