All checks were successful
Publish / Test, build, and push image (push) Successful in 3m38s
66 lines
2.2 KiB
Go
66 lines
2.2 KiB
Go
package app
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestAdminMutationsRedirectToOwningTabs(t *testing.T) {
|
|
srv := newTestServer(t)
|
|
handler := srv.Routes()
|
|
cookie := loginCookie(t, handler)
|
|
|
|
for _, test := range []struct {
|
|
path string
|
|
form url.Values
|
|
want string
|
|
}{
|
|
{
|
|
path: "/admin/contact-details",
|
|
form: url.Values{"email": {"studio@example.com"}, "phone": {"123"}, "location": {"London"}},
|
|
want: "/admin/contact-details?ok=contact+details+saved",
|
|
},
|
|
{
|
|
path: "/admin/content",
|
|
form: url.Values{
|
|
"hero_title": {"Hero"}, "hero_subtitle": {"Subtitle"}, "intro_title": {"Intro"}, "intro_text": {"Text"},
|
|
"about_name": {"Name"}, "about_role": {"Role"}, "about_bio": {"Bio"},
|
|
"hero_image_current": {"/static/placeholders/hero.svg"}, "about_image_current": {"/static/placeholders/about.svg"},
|
|
},
|
|
want: "/admin/main?ok=content+saved",
|
|
},
|
|
} {
|
|
req := httptest.NewRequest(http.MethodPost, test.path, strings.NewReader(test.form.Encode()))
|
|
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
|
req.AddCookie(cookie)
|
|
rec := httptest.NewRecorder()
|
|
handler.ServeHTTP(rec, req)
|
|
if rec.Code != http.StatusSeeOther || rec.Header().Get("Location") != test.want {
|
|
t.Fatalf("%s expected redirect %q, got %d %q", test.path, test.want, rec.Code, rec.Header().Get("Location"))
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAdminProjectValidation(t *testing.T) {
|
|
srv := newTestServer(t)
|
|
handler := srv.Routes()
|
|
cookie := loginCookie(t, handler)
|
|
form := url.Values{"title": {" "}, "location": {"London"}, "year": {"2026"}, "category": {"Residential"}, "description": {"Text"}}
|
|
req := httptest.NewRequest(http.MethodPost, "/admin/projects", strings.NewReader(form.Encode()))
|
|
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
|
req.AddCookie(cookie)
|
|
rec := httptest.NewRecorder()
|
|
|
|
handler.ServeHTTP(rec, req)
|
|
|
|
if rec.Code != http.StatusSeeOther {
|
|
t.Fatalf("expected redirect, got %d", rec.Code)
|
|
}
|
|
if location := rec.Header().Get("Location"); !strings.Contains(location, "/admin/projects?err=") || !strings.Contains(location, "project+title+is+required") {
|
|
t.Fatalf("expected validation error redirect, got %q", location)
|
|
}
|
|
}
|