marky

Lightweight bookmarking + plaintext archive
Log | Files | Refs | README | LICENSE

user_route_test.go (1131B)


      1 package internal
      2 
      3 import (
      4 	"net/http"
      5 	"net/http/httptest"
      6 	"testing"
      7 )
      8 
      9 func TestUsernameRoute404WhenMissing(t *testing.T) {
     10 	t.Parallel()
     11 	db, err := OpenAtPath(t.Context(), t.TempDir()+"/r.db")
     12 	if err != nil {
     13 		t.Fatalf("open db: %v", err)
     14 	}
     15 	t.Cleanup(func() { _ = db.Close() })
     16 	h, err := NewHandler(db)
     17 	if err != nil {
     18 		t.Fatalf("handler: %v", err)
     19 	}
     20 	srv := httptest.NewServer(h)
     21 	defer srv.Close()
     22 
     23 	// Missing user should 404
     24 	resp, _ := http.Get(srv.URL + "/nouser")
     25 	if resp.StatusCode != http.StatusNotFound {
     26 		t.Fatalf("expected 404 for /nouser, got %d", resp.StatusCode)
     27 	}
     28 
     29 	// Create a user
     30 	_, err = db.CreateUser(t.Context(), "alice", "pw")
     31 	if err != nil {
     32 		t.Fatalf("create user: %v", err)
     33 	}
     34 	// Legacy /{username} route removed: should 404
     35 	resp2, _ := http.Get(srv.URL + "/alice")
     36 	if resp2.StatusCode != http.StatusNotFound {
     37 		t.Fatalf("expected 404 for /alice, got %d", resp2.StatusCode)
     38 	}
     39 	// New route /u:{username} should serve the page
     40 	resp3, _ := http.Get(srv.URL + "/u:alice")
     41 	if resp3.StatusCode != http.StatusOK {
     42 		t.Fatalf("expected 200 for /u:alice, got %d", resp3.StatusCode)
     43 	}
     44 }