prime8dev

prime8dev
git clone https://git.prime8.dev/prime8dev.git
Log | Files | Refs | README | LICENSE

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 }