package templates import ( "bytes" "context" "strings" "testing" "backend/internal/auth" ) // TestLayout_LogoutFormVisibleWhenAuthed verifies that the logout form is // rendered in the header when Layout receives a non-nil user (D-22). func TestLayout_LogoutFormVisibleWhenAuthed(t *testing.T) { var buf bytes.Buffer user := &auth.User{Email: "a@b.c"} err := Layout("Test", user).Render(context.Background(), &buf) if err != nil { t.Fatalf("Layout.Render: %v", err) } body := buf.String() if !strings.Contains(body, `action="/logout"`) { t.Errorf("Layout body missing action=\"/logout\"; want logout form when authed\nbody: %s", body) } if !strings.Contains(body, `method="POST"`) { t.Errorf("Layout body missing method=\"POST\"; logout must be a POST form (D-22)") } } // TestLayout_LogoutFormHiddenWhenUnauthed verifies that no logout form is // rendered when Layout receives a nil user (unauthenticated request). func TestLayout_LogoutFormHiddenWhenUnauthed(t *testing.T) { var buf bytes.Buffer err := Layout("Test", nil).Render(context.Background(), &buf) if err != nil { t.Fatalf("Layout.Render: %v", err) } body := buf.String() if strings.Contains(body, `action="/logout"`) { t.Errorf("Layout body must NOT contain action=\"/logout\" when user is nil (unauthenticated)") } }