diff --git a/middleware/favicon_test.go b/middleware/favicon_test.go index 7d7437f4..85021e14 100644 --- a/middleware/favicon_test.go +++ b/middleware/favicon_test.go @@ -17,20 +17,51 @@ func Test_Middleware_Favicon(t *testing.T) { app.Get("/", func(c *fiber.Ctx) {}) - resp, err := app.Test(httptest.NewRequest("GET", "/favicon.ico", nil)) + // Skip Favicon middleware + resp, err := app.Test(httptest.NewRequest("GET", "/", nil)) utils.AssertEqual(t, nil, err, "app.Test(req)") - utils.AssertEqual(t, 204, resp.StatusCode, "Status code") + utils.AssertEqual(t, fiber.StatusOK, resp.StatusCode, "Status code") + + resp, err = app.Test(httptest.NewRequest("GET", "/favicon.ico", nil)) + utils.AssertEqual(t, nil, err, "app.Test(req)") + utils.AssertEqual(t, fiber.StatusNoContent, resp.StatusCode, "Status code") resp, err = app.Test(httptest.NewRequest("OPTIONS", "/favicon.ico", nil)) utils.AssertEqual(t, nil, err, "app.Test(req)") - utils.AssertEqual(t, 200, resp.StatusCode, "Status code") + utils.AssertEqual(t, fiber.StatusOK, resp.StatusCode, "Status code") resp, err = app.Test(httptest.NewRequest("PUT", "/favicon.ico", nil)) utils.AssertEqual(t, nil, err, "app.Test(req)") - utils.AssertEqual(t, 405, resp.StatusCode, "Status code") + utils.AssertEqual(t, fiber.StatusMethodNotAllowed, resp.StatusCode, "Status code") utils.AssertEqual(t, "GET, HEAD, OPTIONS", resp.Header.Get(fiber.HeaderAllow)) } +// go test -run Test_Middleware_Favicon_Not_Found +func Test_Middleware_Favicon_Not_Found(t *testing.T) { + defer func() { + if err := recover(); err == nil { + t.Fatal("should cache panic") + } + }() + + fiber.New().Use(Favicon("non-exist.ico")) +} + +// go test -run Test_Middleware_Favicon_Found +func Test_Middleware_Favicon_Found(t *testing.T) { + app := fiber.New() + + app.Use(Favicon("./testdata/favicon.ico")) + + app.Get("/", func(c *fiber.Ctx) {}) + + resp, err := app.Test(httptest.NewRequest("GET", "/favicon.ico", nil)) + + utils.AssertEqual(t, nil, err, "app.Test(req)") + utils.AssertEqual(t, fiber.StatusOK, resp.StatusCode, "Status code") + utils.AssertEqual(t, "image/x-icon", resp.Header.Get(fiber.HeaderContentType)) +} + // go test -v -run=^$ -bench=Benchmark_Middleware_Favicon -benchmem -count=4 func Benchmark_Middleware_Favicon(b *testing.B) { app := fiber.New() diff --git a/middleware/testdata/favicon.ico b/middleware/testdata/favicon.ico new file mode 100644 index 00000000..b752c266 Binary files /dev/null and b/middleware/testdata/favicon.ico differ