test(07-07): cover already-activated activate and 22-ported corpus counts

Unit tests now expect Winter 500 HTML when the target user is already
active, and the inventory assertions match 169/22/147.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jakub Zych
2026-09-22 23:57:10 +02:00
parent d94634d5d8
commit d4066a8c3f
2 changed files with 34 additions and 3 deletions

View File

@@ -10,6 +10,7 @@ import (
"git.golem15.com/golem15/fonoteka/plugins/golem15/user/classes"
"git.golem15.com/golem15/fonoteka/plugins/golem15/user/controllers"
"git.golem15.com/golem15/fonoteka/plugins/golem15/user/models"
"git.golem15.com/golem15/summercms/postcard"
)
@@ -85,6 +86,13 @@ func TestActivate(t *testing.T) {
if rec.Code != http.StatusOK || !strings.Contains(rec.Body.String(), `"is_activated":false`) {
t.Fatalf("activate %d %s", rec.Code, rec.Body.String())
}
already := loginToken(t, app, gdb, "activate-already@example.test")
if err := gdb.Model(&models.User{}).Where("email = ?", "activate-already@example.test").Update("is_activated", true).Error; err != nil {
t.Fatal(err)
}
locked := bearerJSON(t, controllers.Activate(app), "/_user/api/v1/activate", already, `{"code":"wrong"}`)
assertWinterErrorPage(t, locked)
}
func TestActivateByCode(t *testing.T) {
@@ -124,9 +132,20 @@ func TestActivateByCode(t *testing.T) {
if _, ok := errorsBody["code"]; !ok {
t.Fatalf("errors = %#v", verr)
}
bad := postJSON(t, controllers.ActivateByCode(app), "/_user/api/v1/activate-by-code", `{"code":"1!nope"}`)
if bad.Body.String() != `{"error":"This activation link is invalid or has expired"}` {
t.Fatalf("bad %d %s", bad.Code, bad.Body.String())
bad := postJSON(t, controllers.ActivateByCode(app), "/_user/api/v1/activate-by-code", `{"code":"`+strconv.FormatUint(uint64(user.ID), 10)+`!nope"}`)
assertWinterErrorPage(t, bad)
}
func assertWinterErrorPage(t *testing.T, rec *httptest.ResponseRecorder) {
t.Helper()
if rec.Code != http.StatusInternalServerError {
t.Fatalf("status %d body %s", rec.Code, rec.Body.String())
}
if rec.Header().Get("Content-Type") != "text/html; charset=UTF-8" {
t.Fatalf("content-type %q", rec.Header().Get("Content-Type"))
}
if !strings.Contains(rec.Body.String(), "Błąd strony") {
t.Fatalf("missing winter error marker: %s", rec.Body.String())
}
}

View File

@@ -92,8 +92,20 @@ func TestCodes(t *testing.T) {
if err != nil {
t.Fatal(err)
}
before, err := IsAlreadyActivated(t.Context(), db, pending.ID)
if err != nil || before {
t.Fatalf("pending already-activated = %t err=%v", before, err)
}
activated, ok := VerifyActivationCode(t.Context(), db, pending.ID, activation)
if !ok || activated == nil || !activated.IsActivated {
t.Fatalf("activate = %v %#v", ok, activated)
}
after, err := IsAlreadyActivated(t.Context(), db, pending.ID)
if err != nil || !after {
t.Fatalf("activated already-activated = %t err=%v", after, err)
}
missing, err := IsAlreadyActivated(t.Context(), db, 999999)
if err != nil || missing {
t.Fatalf("missing already-activated = %t err=%v", missing, err)
}
}