summaryrefslogtreecommitdiffstats
path: root/internal/server/fileserver_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/server/fileserver_test.go')
-rw-r--r--internal/server/fileserver_test.go44
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)
+ }
+}