fs_test.go (880B)
1 package handlers 2 3 import ( 4 "encoding/json" 5 "net/http" 6 "net/http/httptest" 7 "testing" 8 9 "git.prime8.dev/moncheeta/prime8dev/internal/vfs" 10 ) 11 12 func TestFSHandlerServesVisitorTree(t *testing.T) { 13 rec := httptest.NewRecorder() 14 (&Handler{}).FSHandler(rec, httptest.NewRequest(http.MethodGet, "/api/fs", nil)) 15 if rec.Code != http.StatusOK { 16 t.Fatalf("status %d", rec.Code) 17 } 18 var got fsResponse 19 if err := json.Unmarshal(rec.Body.Bytes(), &got); err != nil { 20 t.Fatal(err) 21 } 22 if got.User != vfs.FallbackUser || got.Home != "/home/visitor" { 23 t.Fatalf("user/home: %q %q", got.User, got.Home) 24 } 25 for _, p := range []string{"/home/visitor/bio", "/home/visitor/projects", "/tmp"} { 26 if got.Root.Lookup(p) == nil { 27 t.Errorf("missing %s", p) 28 } 29 } 30 if got.Root.Lookup("/etc") != nil || got.Root.Lookup("/srv") != nil { 31 t.Error("host paths leaked into the virtual fs") 32 } 33 }