diff options
Diffstat (limited to 'internal/server/fileserver_test.go')
| -rw-r--r-- | internal/server/fileserver_test.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/internal/server/fileserver_test.go b/internal/server/fileserver_test.go new file mode 100644 index 0000000..a6ef926 --- /dev/null +++ b/internal/server/fileserver_test.go @@ -0,0 +1,44 @@ +package server_test + +import ( + "net/http" + "net/http/httptest" + "testing" + "testing/fstest" + + "github.com/gin-gonic/gin" + "iblog/internal/server" +) + +func init() { gin.SetMode(gin.TestMode) } + +func TestEmbedHandler_ServesFile(t *testing.T) { + fsys := fstest.MapFS{ + "root/hello.js": {Data: []byte(`console.log("hi")`)}, + } + r := gin.New() + r.GET("/assets/*filepath", server.EmbedHandler(fsys, "root")) + + w := httptest.NewRecorder() + r.ServeHTTP(w, httptest.NewRequest("GET", "/assets/hello.js", nil)) + + if w.Code != http.StatusOK { + t.Fatalf("expected 200, got %d: %s", w.Code, w.Body.String()) + } + if got := w.Body.String(); got != `console.log("hi")` { + t.Fatalf("unexpected body: %q", got) + } +} + +func TestEmbedHandler_NotFound(t *testing.T) { + fsys := fstest.MapFS{} + r := gin.New() + r.GET("/assets/*filepath", server.EmbedHandler(fsys, "root")) + + w := httptest.NewRecorder() + r.ServeHTTP(w, httptest.NewRequest("GET", "/assets/missing.js", nil)) + + if w.Code != http.StatusNotFound { + t.Fatalf("expected 404, got %d", w.Code) + } +} |
