diff options
| author | Adam Mathes <adam@adammathes.com> | 2026-02-14 09:38:31 -0800 |
|---|---|---|
| committer | Adam Mathes <adam@adammathes.com> | 2026-02-14 09:38:31 -0800 |
| commit | 23947045c011e84149bc1b9d48805e57bb0bb3ba (patch) | |
| tree | a4eb5015a5456a0ac93a792f59270675beccabd5 /web/routing_test.go | |
| parent | 22eacbaf2712aee2a1c448a0e53f241f8c7bd255 (diff) | |
| download | neko-23947045c011e84149bc1b9d48805e57bb0bb3ba.tar.gz neko-23947045c011e84149bc1b9d48805e57bb0bb3ba.tar.bz2 neko-23947045c011e84149bc1b9d48805e57bb0bb3ba.zip | |
routing: make new UI default at / and move legacy UI to /v1/ (fixing NK-mgmn5m, NK-p89hyt)
Diffstat (limited to 'web/routing_test.go')
| -rw-r--r-- | web/routing_test.go | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/web/routing_test.go b/web/routing_test.go new file mode 100644 index 0000000..972b208 --- /dev/null +++ b/web/routing_test.go @@ -0,0 +1,75 @@ +package web + +import ( + "net/http" + "net/http/httptest" + "strings" + "testing" + + "adammathes.com/neko/config" +) + +func TestRouting(t *testing.T) { + config.Config.DigestPassword = "secret" + router := NewRouter(&config.Config) + + tests := []struct { + name string + path string + method string + cookie *http.Cookie + expectedStatus int + containsBody string + }{ + { + name: "Root serves new UI", + path: "/", + method: "GET", + expectedStatus: http.StatusOK, + containsBody: "<!doctype html>", // from React dist/v2 + }, + { + name: "/v2/ serves new UI", + path: "/v2/", + method: "GET", + expectedStatus: http.StatusOK, + containsBody: "<!doctype html>", + }, + { + name: "/v1/ redirects unauthenticated", + path: "/v1/", + method: "GET", + expectedStatus: http.StatusTemporaryRedirect, + }, + { + name: "/v1/ serves legacy UI when authenticated", + path: "/v1/", + method: "GET", + cookie: authCookie(), + expectedStatus: http.StatusOK, + containsBody: "<title>neko rss mode</title>", // from legacy ui.html + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + req := httptest.NewRequest(tt.method, tt.path, nil) + if tt.cookie != nil { + req.AddCookie(tt.cookie) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + if rr.Code != tt.expectedStatus { + t.Errorf("Expected status %d, got %d", tt.expectedStatus, rr.Code) + } + + if tt.containsBody != "" { + body := strings.ToLower(rr.Body.String()) + if !strings.Contains(body, strings.ToLower(tt.containsBody)) { + t.Errorf("Expected body to contain %q, but it didn't", tt.containsBody) + } + } + }) + } +} |
