chore: Fix remaining testifylint errors (#2806)

pull/2809/head
nickajacks1 2024-01-21 23:34:15 -08:00 committed by GitHub
parent 827013d789
commit 3c4509f054
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 507 additions and 496 deletions

View File

@ -263,7 +263,7 @@ func Test_App_serverErrorHandler_Internal_Error(t *testing.T) {
app.serverErrorHandler(c.fasthttp, errors.New(msg))
require.Equal(t, string(c.fasthttp.Response.Body()), msg)
require.Equal(t, c.fasthttp.Response.StatusCode(), StatusBadRequest)
require.Equal(t, StatusBadRequest, c.fasthttp.Response.StatusCode())
}
func Test_App_serverErrorHandler_Network_Error(t *testing.T) {
@ -277,7 +277,7 @@ func Test_App_serverErrorHandler_Network_Error(t *testing.T) {
IsTimeout: false,
})
require.Equal(t, string(c.fasthttp.Response.Body()), utils.StatusMessage(StatusBadGateway))
require.Equal(t, c.fasthttp.Response.StatusCode(), StatusBadGateway)
require.Equal(t, StatusBadGateway, c.fasthttp.Response.StatusCode())
}
func Test_App_Nested_Params(t *testing.T) {
@ -422,22 +422,22 @@ func Test_App_Not_Use_StrictRouting(t *testing.T) {
// wrong path in the requested route -> 404
resp, err := app.Test(httptest.NewRequest(MethodGet, "/abc/", nil))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
// right path in the requrested route -> 200
resp, err = app.Test(httptest.NewRequest(MethodGet, "/abc", nil))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
// wrong path with group in the requested route -> 404
resp, err = app.Test(httptest.NewRequest(MethodGet, "/foo", nil))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
// right path with group in the requrested route -> 200
resp, err = app.Test(httptest.NewRequest(MethodGet, "/foo/", nil))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
}
@ -502,22 +502,22 @@ func Test_App_Use_StrictRouting(t *testing.T) {
// wrong path in the requested route -> 404
resp, err := app.Test(httptest.NewRequest(MethodGet, "/abc/", nil))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, StatusNotFound, resp.StatusCode, "Status code")
// right path in the requrested route -> 200
resp, err = app.Test(httptest.NewRequest(MethodGet, "/abc", nil))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
// wrong path with group in the requested route -> 404
resp, err = app.Test(httptest.NewRequest(MethodGet, "/foo", nil))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, StatusNotFound, resp.StatusCode, "Status code")
// right path with group in the requrested route -> 200
resp, err = app.Test(httptest.NewRequest(MethodGet, "/foo/", nil))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
}
@ -597,7 +597,7 @@ func Test_App_Chaining(t *testing.T) {
return c.SendStatus(202)
})
// check handler count for registered HEAD route
require.Equal(t, 5, len(app.stack[app.methodInt(MethodHead)][0].Handlers), "app.Test(req)")
require.Len(t, app.stack[app.methodInt(MethodHead)][0].Handlers, 5, "app.Test(req)")
req := httptest.NewRequest(MethodPost, "/john", nil)
@ -747,14 +747,14 @@ func Test_App_Shutdown(t *testing.T) {
t.Run("success", func(t *testing.T) {
t.Parallel()
app := New()
require.True(t, app.Shutdown() == nil)
require.NoError(t, app.Shutdown())
})
t.Run("no server", func(t *testing.T) {
t.Parallel()
app := &App{}
if err := app.Shutdown(); err != nil {
require.Equal(t, "shutdown: server is not running", err.Error())
require.ErrorContains(t, err, "shutdown: server is not running")
}
})
}
@ -811,7 +811,7 @@ func Test_App_ShutdownWithContext(t *testing.T) {
ln := fasthttputil.NewInmemoryListener()
go func() {
require.Equal(t, nil, app.Listener(ln))
require.NoError(t, app.Listener(ln))
}()
time.Sleep(1 * time.Second)
@ -857,17 +857,17 @@ func Test_App_Static_Index_Default(t *testing.T) {
resp, err := app.Test(httptest.NewRequest(MethodGet, "/", nil))
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.True(t, strings.Contains(string(body), "Hello, World!"))
require.Contains(t, string(body), "Hello, World!")
resp, err = app.Test(httptest.NewRequest(MethodGet, "/not-found", nil))
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 404, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextPlainCharsetUTF8, resp.Header.Get(HeaderContentType))
body, err = io.ReadAll(resp.Body)
@ -884,23 +884,23 @@ func Test_App_Static_Direct(t *testing.T) {
resp, err := app.Test(httptest.NewRequest(MethodGet, "/index.html", nil))
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.True(t, strings.Contains(string(body), "Hello, World!"))
require.Contains(t, string(body), "Hello, World!")
resp, err = app.Test(httptest.NewRequest(MethodGet, "/testdata/testRoutes.json", nil))
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMEApplicationJSON, resp.Header.Get("Content-Type"))
require.Equal(t, "", resp.Header.Get(HeaderCacheControl), "CacheControl Control")
body, err = io.ReadAll(resp.Body)
require.NoError(t, err)
require.True(t, strings.Contains(string(body), "test_routes"))
require.Contains(t, string(body), "test_routes")
}
// go test -run Test_App_Static_MaxAge
@ -912,7 +912,7 @@ func Test_App_Static_MaxAge(t *testing.T) {
resp, err := app.Test(httptest.NewRequest(MethodGet, "/index.html", nil))
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, "text/html; charset=utf-8", resp.Header.Get(HeaderContentType))
require.Equal(t, "public, max-age=100", resp.Header.Get(HeaderCacheControl), "CacheControl Control")
}
@ -929,11 +929,11 @@ func Test_App_Static_Custom_CacheControl(t *testing.T) {
}})
resp, err := app.Test(httptest.NewRequest(MethodGet, "/index.html", nil))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, "no-cache, no-store, must-revalidate", resp.Header.Get(HeaderCacheControl), "CacheControl Control")
normalResp, normalErr := app.Test(httptest.NewRequest(MethodGet, "/config.yml", nil))
require.Equal(t, nil, normalErr, "app.Test(req)")
require.NoError(t, normalErr, "app.Test(req)")
require.Equal(t, "", normalResp.Header.Get(HeaderCacheControl), "CacheControl Control")
}
@ -946,7 +946,7 @@ func Test_App_Static_Download(t *testing.T) {
resp, err := app.Test(httptest.NewRequest(MethodGet, "/fiber.png", nil))
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, "image/png", resp.Header.Get(HeaderContentType))
require.Equal(t, `attachment`, resp.Header.Get(HeaderContentDisposition))
}
@ -966,7 +966,7 @@ func Test_App_Static_Group(t *testing.T) {
resp, err := app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
require.Equal(t, "123", resp.Header.Get("Test-Header"))
@ -977,7 +977,7 @@ func Test_App_Static_Group(t *testing.T) {
resp, err = app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
}
@ -990,12 +990,12 @@ func Test_App_Static_Wildcard(t *testing.T) {
resp, err := app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.True(t, strings.Contains(string(body), "Test file"))
require.Contains(t, string(body), "Test file")
}
func Test_App_Static_Prefix_Wildcard(t *testing.T) {
@ -1007,7 +1007,7 @@ func Test_App_Static_Prefix_Wildcard(t *testing.T) {
resp, err := app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
app.Static("/my/nameisjohn*", "./.github/index.html")
@ -1015,12 +1015,12 @@ func Test_App_Static_Prefix_Wildcard(t *testing.T) {
resp, err = app.Test(httptest.NewRequest(MethodGet, "/my/nameisjohn/no/its/not", nil))
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.True(t, strings.Contains(string(body), "Test file"))
require.Contains(t, string(body), "Test file")
}
func Test_App_Static_Prefix(t *testing.T) {
@ -1031,7 +1031,7 @@ func Test_App_Static_Prefix(t *testing.T) {
resp, err := app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
app.Static("/prefix", "./.github/testdata")
@ -1040,7 +1040,7 @@ func Test_App_Static_Prefix(t *testing.T) {
resp, err = app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
app.Static("/single", "./.github/testdata/testRoutes.json")
@ -1049,7 +1049,7 @@ func Test_App_Static_Prefix(t *testing.T) {
resp, err = app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMEApplicationJSON, resp.Header.Get(HeaderContentType))
}
@ -1061,7 +1061,7 @@ func Test_App_Static_Trailing_Slash(t *testing.T) {
resp, err := app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
app.Static("/john_without_index", "./.github/testdata/fs/css")
@ -1070,7 +1070,7 @@ func Test_App_Static_Trailing_Slash(t *testing.T) {
resp, err = app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 404, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextPlainCharsetUTF8, resp.Header.Get(HeaderContentType))
app.Static("/john/", "./.github")
@ -1079,14 +1079,14 @@ func Test_App_Static_Trailing_Slash(t *testing.T) {
resp, err = app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
req = httptest.NewRequest(MethodGet, "/john", nil)
resp, err = app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
app.Static("/john_without_index/", "./.github/testdata/fs/css")
@ -1095,7 +1095,7 @@ func Test_App_Static_Trailing_Slash(t *testing.T) {
resp, err = app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 404, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextPlainCharsetUTF8, resp.Header.Get(HeaderContentType))
}
@ -1118,12 +1118,12 @@ func Test_App_Static_Next(t *testing.T) {
resp, err := app.Test(req)
require.NoError(t, err)
require.Equal(t, 200, resp.StatusCode)
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextPlainCharsetUTF8, resp.Header.Get(HeaderContentType))
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.True(t, strings.Contains(string(body), "You've skipped app.Static"))
require.Contains(t, string(body), "You've skipped app.Static")
})
t.Run("app.Static is not skipped: serving index.html", func(t *testing.T) {
@ -1132,12 +1132,12 @@ func Test_App_Static_Next(t *testing.T) {
resp, err := app.Test(req)
require.NoError(t, err)
require.Equal(t, 200, resp.StatusCode)
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, MIMETextHTMLCharsetUTF8, resp.Header.Get(HeaderContentType))
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.True(t, strings.Contains(string(body), "Hello, World!"))
require.Contains(t, string(body), "Hello, World!")
})
}
@ -1162,7 +1162,7 @@ func Test_App_Mixed_Routes_WithSameLen(t *testing.T) {
resp, err := app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, "TestValue", resp.Header.Get("TestHeader"))
require.Equal(t, "text/html", resp.Header.Get(HeaderContentType))
@ -1175,13 +1175,13 @@ func Test_App_Mixed_Routes_WithSameLen(t *testing.T) {
resp, err = app.Test(req)
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.False(t, resp.Header.Get(HeaderContentLength) == "")
require.NotEmpty(t, resp.Header.Get(HeaderContentLength))
require.Equal(t, "TestValue", resp.Header.Get("TestHeader"))
require.Equal(t, "text/html; charset=utf-8", resp.Header.Get(HeaderContentType))
body, err = io.ReadAll(resp.Body)
require.NoError(t, err)
require.True(t, strings.Contains(string(body), "Hello, World!"), "Response: "+string(body))
require.Contains(t, string(body), "Hello, World!")
require.True(t, strings.HasPrefix(string(body), "<!DOCTYPE html>"), "Response: "+string(body))
}
@ -1384,13 +1384,15 @@ func Test_Test_Timeout(t *testing.T) {
})
_, err = app.Test(httptest.NewRequest(MethodGet, "/timeout", nil), 20)
require.True(t, err != nil, "app.Test(req)")
require.Error(t, err, "app.Test(req)")
}
type errorReader int
var errErrorReader = errors.New("errorReader")
func (errorReader) Read([]byte) (int, error) {
return 0, errors.New("errorReader")
return 0, errErrorReader
}
// go test -run Test_Test_DumpError
@ -1401,8 +1403,8 @@ func Test_Test_DumpError(t *testing.T) {
app.Get("/", testEmptyHandler)
resp, err := app.Test(httptest.NewRequest(MethodGet, "/", errorReader(0)))
require.True(t, resp == nil)
require.Equal(t, "failed to dump request: errorReader", err.Error())
require.Nil(t, resp)
require.ErrorIs(t, err, errErrorReader)
}
// go test -run Test_App_Handler
@ -1445,15 +1447,15 @@ func Test_App_Stack(t *testing.T) {
stack := app.Stack()
methodList := app.config.RequestMethods
require.Equal(t, len(methodList), len(stack))
require.Equal(t, 3, len(stack[app.methodInt(MethodGet)]))
require.Equal(t, 1, len(stack[app.methodInt(MethodHead)]))
require.Equal(t, 2, len(stack[app.methodInt(MethodPost)]))
require.Equal(t, 1, len(stack[app.methodInt(MethodPut)]))
require.Equal(t, 1, len(stack[app.methodInt(MethodPatch)]))
require.Equal(t, 1, len(stack[app.methodInt(MethodDelete)]))
require.Equal(t, 1, len(stack[app.methodInt(MethodConnect)]))
require.Equal(t, 1, len(stack[app.methodInt(MethodOptions)]))
require.Equal(t, 1, len(stack[app.methodInt(MethodTrace)]))
require.Len(t, stack[app.methodInt(MethodGet)], 3)
require.Len(t, stack[app.methodInt(MethodHead)], 1)
require.Len(t, stack[app.methodInt(MethodPost)], 2)
require.Len(t, stack[app.methodInt(MethodPut)], 1)
require.Len(t, stack[app.methodInt(MethodPatch)], 1)
require.Len(t, stack[app.methodInt(MethodDelete)], 1)
require.Len(t, stack[app.methodInt(MethodConnect)], 1)
require.Len(t, stack[app.methodInt(MethodOptions)], 1)
require.Len(t, stack[app.methodInt(MethodTrace)], 1)
}
// go test -run Test_App_HandlersCount
@ -1502,10 +1504,10 @@ func Test_App_ReadTimeout(t *testing.T) {
require.NoError(t, err)
require.True(t, bytes.Contains(buf[:n], []byte("408 Request Timeout")))
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":4004", ListenConfig{DisableStartupMessage: true}))
require.NoError(t, app.Listen(":4004", ListenConfig{DisableStartupMessage: true}))
}
// go test -run Test_App_BadRequest
@ -1536,10 +1538,10 @@ func Test_App_BadRequest(t *testing.T) {
require.True(t, bytes.Contains(buf[:n], []byte("400 Bad Request")))
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":4005", ListenConfig{DisableStartupMessage: true}))
require.NoError(t, app.Listen(":4005", ListenConfig{DisableStartupMessage: true}))
}
// go test -run Test_App_SmallReadBuffer
@ -1561,17 +1563,17 @@ func Test_App_SmallReadBuffer(t *testing.T) {
resp, err := client.Do(req)
require.NoError(t, err)
require.Equal(t, 431, resp.StatusCode)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":4006", ListenConfig{DisableStartupMessage: true}))
require.NoError(t, app.Listen(":4006", ListenConfig{DisableStartupMessage: true}))
}
func Test_App_Server(t *testing.T) {
t.Parallel()
app := New()
require.False(t, app.Server() == nil)
require.NotNil(t, app.Server())
}
func Test_App_Error_In_Fasthttp_Server(t *testing.T) {
@ -1653,8 +1655,8 @@ func Test_App_DisablePreParseMultipartForm(t *testing.T) {
require.NoError(t, err, "w.CreateFormFile")
n, err := writer.Write([]byte(testString))
require.NoError(t, err, "writer.Write")
require.Equal(t, len(testString), n, "writer n")
require.Nil(t, w.Close(), "w.Close()")
require.Len(t, testString, n, "writer n")
require.NoError(t, w.Close(), "w.Close()")
req := httptest.NewRequest(MethodPost, "/", b)
req.Header.Set("Content-Type", w.FormDataContentType())
@ -1740,7 +1742,7 @@ func TestApp_GetRoutes(t *testing.T) {
app.Delete("/delete", handler).Name("delete")
app.Post("/post", handler).Name("post")
routes := app.GetRoutes(false)
require.Equal(t, 2+len(app.config.RequestMethods), len(routes))
require.Len(t, routes, 2+len(app.config.RequestMethods))
methodMap := map[string]string{"/delete": "delete", "/post": "post"}
for _, route := range routes {
name, ok := methodMap[route.Path]
@ -1750,10 +1752,10 @@ func TestApp_GetRoutes(t *testing.T) {
}
routes = app.GetRoutes(true)
require.Equal(t, 2, len(routes))
require.Len(t, routes, 2)
for _, route := range routes {
name, ok := methodMap[route.Path]
require.Equal(t, true, ok)
require.True(t, ok)
require.Equal(t, name, route.Name)
}
}
@ -1867,28 +1869,28 @@ func Test_Route_Naming_Issue_2671_2685(t *testing.T) {
app.Get("/users", emptyHandler).Name("get-users")
app.Post("/users", emptyHandler).Name("add-user")
getUsers := app.GetRoute("get-users")
require.Equal(t, getUsers.Path, "/users")
require.Equal(t, "/users", getUsers.Path)
addUser := app.GetRoute("add-user")
require.Equal(t, addUser.Path, "/users")
require.Equal(t, "/users", addUser.Path)
// Add testcase for routes use the same PATH on different methods (for groups)
newGrp := app.Group("/name-test")
newGrp.Get("/users", emptyHandler).Name("grp-get-users")
newGrp.Post("/users", emptyHandler).Name("grp-add-user")
getUsers = app.GetRoute("grp-get-users")
require.Equal(t, getUsers.Path, "/name-test/users")
require.Equal(t, "/name-test/users", getUsers.Path)
addUser = app.GetRoute("grp-add-user")
require.Equal(t, addUser.Path, "/name-test/users")
require.Equal(t, "/name-test/users", addUser.Path)
// Add testcase for HEAD route naming
app.Get("/simple-route", emptyHandler).Name("simple-route")
app.Head("/simple-route", emptyHandler).Name("simple-route2")
sRoute := app.GetRoute("simple-route")
require.Equal(t, sRoute.Path, "/simple-route")
require.Equal(t, "/simple-route", sRoute.Path)
sRoute2 := app.GetRoute("simple-route2")
require.Equal(t, sRoute2.Path, "/simple-route")
require.Equal(t, "/simple-route", sRoute2.Path)
}

View File

@ -34,23 +34,23 @@ func Test_Bind_Query(t *testing.T) {
c.Request().Header.SetContentType("")
c.Request().URI().SetQueryString("id=1&name=tom&hobby=basketball&hobby=football")
q := new(Query)
require.Nil(t, c.Bind().Query(q))
require.Equal(t, 2, len(q.Hobby))
require.NoError(t, c.Bind().Query(q))
require.Len(t, q.Hobby, 2)
c.Request().URI().SetQueryString("id=1&name=tom&hobby=basketball,football")
q = new(Query)
require.Nil(t, c.Bind().Query(q))
require.Equal(t, 2, len(q.Hobby))
require.NoError(t, c.Bind().Query(q))
require.Len(t, q.Hobby, 2)
c.Request().URI().SetQueryString("id=1&name=tom&hobby=scoccer&hobby=basketball,football")
q = new(Query)
require.Nil(t, c.Bind().Query(q))
require.Equal(t, 3, len(q.Hobby))
require.NoError(t, c.Bind().Query(q))
require.Len(t, q.Hobby, 3)
empty := new(Query)
c.Request().URI().SetQueryString("")
require.Nil(t, c.Bind().Query(empty))
require.Equal(t, 0, len(empty.Hobby))
require.NoError(t, c.Bind().Query(empty))
require.Empty(t, empty.Hobby)
type Query2 struct {
Bool bool
@ -67,7 +67,7 @@ func Test_Bind_Query(t *testing.T) {
q2 := new(Query2)
q2.Bool = true
q2.Name = helloWorld
require.Nil(t, c.Bind().Query(q2))
require.NoError(t, c.Bind().Query(q2))
require.Equal(t, "basketball,football", q2.Hobby)
require.True(t, q2.Bool)
require.Equal(t, "tom", q2.Name) // check value get overwritten
@ -89,8 +89,8 @@ func Test_Bind_Query(t *testing.T) {
}
aq := new(ArrayQuery)
c.Request().URI().SetQueryString("data[]=john&data[]=doe")
require.Nil(t, c.Bind().Query(aq))
require.Equal(t, 2, len(aq.Data))
require.NoError(t, c.Bind().Query(aq))
require.Len(t, aq.Data, 2)
}
// go test -run Test_Bind_Query_Map -v
@ -104,32 +104,32 @@ func Test_Bind_Query_Map(t *testing.T) {
c.Request().Header.SetContentType("")
c.Request().URI().SetQueryString("id=1&name=tom&hobby=basketball&hobby=football")
q := make(map[string][]string)
require.Nil(t, c.Bind().Query(&q))
require.Equal(t, 2, len(q["hobby"]))
require.NoError(t, c.Bind().Query(&q))
require.Len(t, q["hobby"], 2)
c.Request().URI().SetQueryString("id=1&name=tom&hobby=basketball,football")
q = make(map[string][]string)
require.Nil(t, c.Bind().Query(&q))
require.Equal(t, 2, len(q["hobby"]))
require.NoError(t, c.Bind().Query(&q))
require.Len(t, q["hobby"], 2)
c.Request().URI().SetQueryString("id=1&name=tom&hobby=scoccer&hobby=basketball,football")
q = make(map[string][]string)
require.Nil(t, c.Bind().Query(&q))
require.Equal(t, 3, len(q["hobby"]))
require.NoError(t, c.Bind().Query(&q))
require.Len(t, q["hobby"], 3)
c.Request().URI().SetQueryString("id=1&name=tom&hobby=scoccer")
qq := make(map[string]string)
require.Nil(t, c.Bind().Query(&qq))
require.NoError(t, c.Bind().Query(&qq))
require.Equal(t, "1", qq["id"])
empty := make(map[string][]string)
c.Request().URI().SetQueryString("")
require.Nil(t, c.Bind().Query(&empty))
require.Equal(t, 0, len(empty["hobby"]))
require.NoError(t, c.Bind().Query(&empty))
require.Empty(t, empty["hobby"])
em := make(map[string][]int)
c.Request().URI().SetQueryString("")
require.Equal(t, binder.ErrMapNotConvertable, c.Bind().Query(&em))
require.ErrorIs(t, c.Bind().Query(&em), binder.ErrMapNotConvertable)
}
// go test -run Test_Bind_Query_WithSetParserDecoder -v
@ -169,7 +169,7 @@ func Test_Bind_Query_WithSetParserDecoder(t *testing.T) {
q := new(NonRFCTimeInput)
c.Request().URI().SetQueryString("date=2021-04-10&title=CustomDateTest&Body=October")
require.Nil(t, c.Bind().Query(q))
require.NoError(t, c.Bind().Query(q))
require.Equal(t, "CustomDateTest", q.Title)
date := fmt.Sprintf("%v", q.Date)
require.Equal(t, "{0 63753609600 <nil>}", date)
@ -180,7 +180,7 @@ func Test_Bind_Query_WithSetParserDecoder(t *testing.T) {
Title: "Existing title",
Body: "Existing Body",
}
require.Nil(t, c.Bind().Query(q))
require.NoError(t, c.Bind().Query(q))
require.Equal(t, "", q.Title)
}
@ -200,7 +200,7 @@ func Test_Bind_Query_Schema(t *testing.T) {
c.Request().Header.SetContentType("")
c.Request().URI().SetQueryString("name=tom&nested.age=10")
q := new(Query1)
require.Nil(t, c.Bind().Query(q))
require.NoError(t, c.Bind().Query(q))
c.Request().URI().SetQueryString("namex=tom&nested.age=10")
q = new(Query1)
@ -208,7 +208,7 @@ func Test_Bind_Query_Schema(t *testing.T) {
c.Request().URI().SetQueryString("name=tom&nested.agex=10")
q = new(Query1)
require.Nil(t, c.Bind().Query(q))
require.NoError(t, c.Bind().Query(q))
c.Request().URI().SetQueryString("name=tom&test.age=10")
q = new(Query1)
@ -222,11 +222,11 @@ func Test_Bind_Query_Schema(t *testing.T) {
}
c.Request().URI().SetQueryString("name=tom&nested.age=10")
q2 := new(Query2)
require.Nil(t, c.Bind().Query(q2))
require.NoError(t, c.Bind().Query(q2))
c.Request().URI().SetQueryString("nested.age=10")
q2 = new(Query2)
require.Nil(t, c.Bind().Query(q2))
require.NoError(t, c.Bind().Query(q2))
c.Request().URI().SetQueryString("nested.agex=10")
q2 = new(Query2)
@ -242,7 +242,7 @@ func Test_Bind_Query_Schema(t *testing.T) {
}
c.Request().URI().SetQueryString("val=1&next.val=3")
n := new(Node)
require.Nil(t, c.Bind().Query(n))
require.NoError(t, c.Bind().Query(n))
require.Equal(t, 1, n.Value)
require.Equal(t, 3, n.Next.Value)
@ -253,7 +253,7 @@ func Test_Bind_Query_Schema(t *testing.T) {
c.Request().URI().SetQueryString("val=3&next.value=2")
n = new(Node)
n.Next = new(Node)
require.Nil(t, c.Bind().Query(n))
require.NoError(t, c.Bind().Query(n))
require.Equal(t, 3, n.Value)
require.Equal(t, 0, n.Next.Value)
@ -268,8 +268,8 @@ func Test_Bind_Query_Schema(t *testing.T) {
c.Request().URI().SetQueryString("data[0][name]=john&data[0][age]=10&data[1][name]=doe&data[1][age]=12")
cq := new(CollectionQuery)
require.Nil(t, c.Bind().Query(cq))
require.Equal(t, 2, len(cq.Data))
require.NoError(t, c.Bind().Query(cq))
require.Len(t, cq.Data, 2)
require.Equal(t, "john", cq.Data[0].Name)
require.Equal(t, 10, cq.Data[0].Age)
require.Equal(t, "doe", cq.Data[1].Name)
@ -277,8 +277,8 @@ func Test_Bind_Query_Schema(t *testing.T) {
c.Request().URI().SetQueryString("data.0.name=john&data.0.age=10&data.1.name=doe&data.1.age=12")
cq = new(CollectionQuery)
require.Nil(t, c.Bind().Query(cq))
require.Equal(t, 2, len(cq.Data))
require.NoError(t, c.Bind().Query(cq))
require.Len(t, cq.Data, 2)
require.Equal(t, "john", cq.Data[0].Name)
require.Equal(t, 10, cq.Data[0].Age)
require.Equal(t, "doe", cq.Data[1].Name)
@ -303,19 +303,19 @@ func Test_Bind_Header(t *testing.T) {
c.Request().Header.Add("Name", "John Doe")
c.Request().Header.Add("Hobby", "golang,fiber")
q := new(Header)
require.Nil(t, c.Bind().Header(q))
require.Equal(t, 2, len(q.Hobby))
require.NoError(t, c.Bind().Header(q))
require.Len(t, q.Hobby, 2)
c.Request().Header.Del("hobby")
c.Request().Header.Add("Hobby", "golang,fiber,go")
q = new(Header)
require.Nil(t, c.Bind().Header(q))
require.Equal(t, 3, len(q.Hobby))
require.NoError(t, c.Bind().Header(q))
require.Len(t, q.Hobby, 3)
empty := new(Header)
c.Request().Header.Del("hobby")
require.Nil(t, c.Bind().Query(empty))
require.Equal(t, 0, len(empty.Hobby))
require.NoError(t, c.Bind().Query(empty))
require.Empty(t, empty.Hobby)
type Header2 struct {
Bool bool
@ -339,7 +339,7 @@ func Test_Bind_Header(t *testing.T) {
h2 := new(Header2)
h2.Bool = true
h2.Name = helloWorld
require.Nil(t, c.Bind().Header(h2))
require.NoError(t, c.Bind().Header(h2))
require.Equal(t, "go,fiber", h2.Hobby)
require.True(t, h2.Bool)
require.Equal(t, "Jane Doe", h2.Name) // check value get overwritten
@ -371,19 +371,19 @@ func Test_Bind_Header_Map(t *testing.T) {
c.Request().Header.Add("Name", "John Doe")
c.Request().Header.Add("Hobby", "golang,fiber")
q := make(map[string][]string, 0)
require.Nil(t, c.Bind().Header(&q))
require.Equal(t, 2, len(q["Hobby"]))
require.NoError(t, c.Bind().Header(&q))
require.Len(t, q["Hobby"], 2)
c.Request().Header.Del("hobby")
c.Request().Header.Add("Hobby", "golang,fiber,go")
q = make(map[string][]string, 0)
require.Nil(t, c.Bind().Header(&q))
require.Equal(t, 3, len(q["Hobby"]))
require.NoError(t, c.Bind().Header(&q))
require.Len(t, q["Hobby"], 3)
empty := make(map[string][]string, 0)
c.Request().Header.Del("hobby")
require.Nil(t, c.Bind().Query(&empty))
require.Equal(t, 0, len(empty["Hobby"]))
require.NoError(t, c.Bind().Query(&empty))
require.Empty(t, empty["Hobby"])
}
// go test -run Test_Bind_Header_WithSetParserDecoder -v
@ -426,7 +426,7 @@ func Test_Bind_Header_WithSetParserDecoder(t *testing.T) {
c.Request().Header.Add("Title", "CustomDateTest")
c.Request().Header.Add("Body", "October")
require.Nil(t, c.Bind().Header(r))
require.NoError(t, c.Bind().Header(r))
require.Equal(t, "CustomDateTest", r.Title)
date := fmt.Sprintf("%v", r.Date)
require.Equal(t, "{0 63753609600 <nil>}", date)
@ -437,7 +437,7 @@ func Test_Bind_Header_WithSetParserDecoder(t *testing.T) {
Title: "Existing title",
Body: "Existing Body",
}
require.Nil(t, c.Bind().Header(r))
require.NoError(t, c.Bind().Header(r))
require.Equal(t, "", r.Title)
}
@ -459,7 +459,7 @@ func Test_Bind_Header_Schema(t *testing.T) {
c.Request().Header.Add("Name", "tom")
c.Request().Header.Add("Nested.Age", "10")
q := new(Header1)
require.Nil(t, c.Bind().Header(q))
require.NoError(t, c.Bind().Header(q))
c.Request().Header.Del("Name")
q = new(Header1)
@ -469,7 +469,7 @@ func Test_Bind_Header_Schema(t *testing.T) {
c.Request().Header.Del("Nested.Age")
c.Request().Header.Add("Nested.Agex", "10")
q = new(Header1)
require.Nil(t, c.Bind().Header(q))
require.NoError(t, c.Bind().Header(q))
c.Request().Header.Del("Nested.Agex")
q = new(Header1)
@ -489,11 +489,11 @@ func Test_Bind_Header_Schema(t *testing.T) {
c.Request().Header.Add("Nested.Age", "10")
h2 := new(Header2)
require.Nil(t, c.Bind().Header(h2))
require.NoError(t, c.Bind().Header(h2))
c.Request().Header.Del("Name")
h2 = new(Header2)
require.Nil(t, c.Bind().Header(h2))
require.NoError(t, c.Bind().Header(h2))
c.Request().Header.Del("Name")
c.Request().Header.Del("Nested.Age")
@ -508,7 +508,7 @@ func Test_Bind_Header_Schema(t *testing.T) {
c.Request().Header.Add("Val", "1")
c.Request().Header.Add("Next.Val", "3")
n := new(Node)
require.Nil(t, c.Bind().Header(n))
require.NoError(t, c.Bind().Header(n))
require.Equal(t, 1, n.Value)
require.Equal(t, 3, n.Next.Value)
@ -521,7 +521,7 @@ func Test_Bind_Header_Schema(t *testing.T) {
c.Request().Header.Add("Next.Value", "2")
n = new(Node)
n.Next = new(Node)
require.Nil(t, c.Bind().Header(n))
require.NoError(t, c.Bind().Header(n))
require.Equal(t, 3, n.Value)
require.Equal(t, 0, n.Next.Value)
}
@ -544,19 +544,19 @@ func Test_Bind_RespHeader(t *testing.T) {
c.Response().Header.Add("Name", "John Doe")
c.Response().Header.Add("Hobby", "golang,fiber")
q := new(Header)
require.Nil(t, c.Bind().RespHeader(q))
require.Equal(t, 2, len(q.Hobby))
require.NoError(t, c.Bind().RespHeader(q))
require.Len(t, q.Hobby, 2)
c.Response().Header.Del("hobby")
c.Response().Header.Add("Hobby", "golang,fiber,go")
q = new(Header)
require.Nil(t, c.Bind().RespHeader(q))
require.Equal(t, 3, len(q.Hobby))
require.NoError(t, c.Bind().RespHeader(q))
require.Len(t, q.Hobby, 3)
empty := new(Header)
c.Response().Header.Del("hobby")
require.Nil(t, c.Bind().Query(empty))
require.Equal(t, 0, len(empty.Hobby))
require.NoError(t, c.Bind().Query(empty))
require.Empty(t, empty.Hobby)
type Header2 struct {
Bool bool
@ -580,7 +580,7 @@ func Test_Bind_RespHeader(t *testing.T) {
h2 := new(Header2)
h2.Bool = true
h2.Name = helloWorld
require.Nil(t, c.Bind().RespHeader(h2))
require.NoError(t, c.Bind().RespHeader(h2))
require.Equal(t, "go,fiber", h2.Hobby)
require.True(t, h2.Bool)
require.Equal(t, "Jane Doe", h2.Name) // check value get overwritten
@ -612,19 +612,19 @@ func Test_Bind_RespHeader_Map(t *testing.T) {
c.Response().Header.Add("Name", "John Doe")
c.Response().Header.Add("Hobby", "golang,fiber")
q := make(map[string][]string, 0)
require.Nil(t, c.Bind().RespHeader(&q))
require.Equal(t, 2, len(q["Hobby"]))
require.NoError(t, c.Bind().RespHeader(&q))
require.Len(t, q["Hobby"], 2)
c.Response().Header.Del("hobby")
c.Response().Header.Add("Hobby", "golang,fiber,go")
q = make(map[string][]string, 0)
require.Nil(t, c.Bind().RespHeader(&q))
require.Equal(t, 3, len(q["Hobby"]))
require.NoError(t, c.Bind().RespHeader(&q))
require.Len(t, q["Hobby"], 3)
empty := make(map[string][]string, 0)
c.Response().Header.Del("hobby")
require.Nil(t, c.Bind().Query(&empty))
require.Equal(t, 0, len(empty["Hobby"]))
require.NoError(t, c.Bind().Query(&empty))
require.Empty(t, empty["Hobby"])
}
// go test -v -run=^$ -bench=Benchmark_Bind_Query -benchmem -count=4
@ -648,7 +648,7 @@ func Benchmark_Bind_Query(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Query(q)
}
require.Nil(b, err)
require.NoError(b, err)
}
// go test -v -run=^$ -bench=Benchmark_Bind_Query_Map -benchmem -count=4
@ -667,7 +667,7 @@ func Benchmark_Bind_Query_Map(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Query(&q)
}
require.Nil(b, err)
require.NoError(b, err)
}
// go test -v -run=^$ -bench=Benchmark_Bind_Query_WithParseParam -benchmem -count=4
@ -697,7 +697,7 @@ func Benchmark_Bind_Query_WithParseParam(b *testing.B) {
err = c.Bind().Query(cq)
}
require.Nil(b, err)
require.NoError(b, err)
}
// go test -v -run=^$ -bench=Benchmark_Bind_Query_Comma -benchmem -count=4
@ -722,7 +722,7 @@ func Benchmark_Bind_Query_Comma(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Query(q)
}
require.Nil(b, err)
require.NoError(b, err)
}
// go test -v -run=^$ -bench=Benchmark_Bind_Header -benchmem -count=4
@ -750,7 +750,7 @@ func Benchmark_Bind_Header(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Header(q)
}
require.Nil(b, err)
require.NoError(b, err)
}
// go test -v -run=^$ -bench=Benchmark_Bind_Header_Map -benchmem -count=4
@ -772,7 +772,7 @@ func Benchmark_Bind_Header_Map(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Header(&q)
}
require.Nil(b, err)
require.NoError(b, err)
}
// go test -v -run=^$ -bench=Benchmark_Bind_RespHeader -benchmem -count=4
@ -800,7 +800,7 @@ func Benchmark_Bind_RespHeader(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().RespHeader(q)
}
require.Nil(b, err)
require.NoError(b, err)
}
// go test -v -run=^$ -bench=Benchmark_Bind_RespHeader_Map -benchmem -count=4
@ -822,7 +822,7 @@ func Benchmark_Bind_RespHeader_Map(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().RespHeader(&q)
}
require.Nil(b, err)
require.NoError(b, err)
}
// go test -run Test_Bind_Body
@ -848,7 +848,7 @@ func Test_Bind_Body(t *testing.T) {
c.Request().SetBody(gzipJSON.Bytes())
c.Request().Header.SetContentLength(len(gzipJSON.Bytes()))
d := new(Demo)
require.Nil(t, c.Bind().Body(d))
require.NoError(t, c.Bind().Body(d))
require.Equal(t, "john", d.Name)
c.Request().Header.Del(HeaderContentEncoding)
}
@ -858,7 +858,7 @@ func Test_Bind_Body(t *testing.T) {
c.Request().SetBody([]byte(body))
c.Request().Header.SetContentLength(len(body))
d := new(Demo)
require.Nil(t, c.Bind().Body(d))
require.NoError(t, c.Bind().Body(d))
require.Equal(t, "john", d.Name)
}
@ -871,7 +871,7 @@ func Test_Bind_Body(t *testing.T) {
c.Request().Header.SetContentType(contentType)
c.Request().SetBody([]byte(body))
c.Request().Header.SetContentLength(len(body))
require.False(t, c.Bind().Body(nil) == nil)
require.Error(t, c.Bind().Body(nil))
}
testDecodeParserError("invalid-content-type", "")
@ -886,8 +886,8 @@ func Test_Bind_Body(t *testing.T) {
c.Request().SetBody([]byte("data[0][name]=john&data[1][name]=doe"))
c.Request().Header.SetContentLength(len(c.Body()))
cq := new(CollectionQuery)
require.Nil(t, c.Bind().Body(cq))
require.Equal(t, 2, len(cq.Data))
require.NoError(t, c.Bind().Body(cq))
require.Len(t, cq.Data, 2)
require.Equal(t, "john", cq.Data[0].Name)
require.Equal(t, "doe", cq.Data[1].Name)
@ -896,8 +896,8 @@ func Test_Bind_Body(t *testing.T) {
c.Request().SetBody([]byte("data.0.name=john&data.1.name=doe"))
c.Request().Header.SetContentLength(len(c.Body()))
cq = new(CollectionQuery)
require.Nil(t, c.Bind().Body(cq))
require.Equal(t, 2, len(cq.Data))
require.NoError(t, c.Bind().Body(cq))
require.Len(t, cq.Data, 2)
require.Equal(t, "john", cq.Data[0].Name)
require.Equal(t, "doe", cq.Data[1].Name)
}
@ -942,7 +942,7 @@ func Test_Bind_Body_WithSetParserDecoder(t *testing.T) {
Title: "Existing title",
Body: "Existing Body",
}
require.Nil(t, c.Bind().Body(&d))
require.NoError(t, c.Bind().Body(&d))
date := fmt.Sprintf("%v", d.Date)
require.Equal(t, "{0 63743587200 <nil>}", date)
require.Equal(t, "", d.Title)
@ -975,7 +975,7 @@ func Benchmark_Bind_Body_JSON(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Body(d)
}
require.Nil(b, err)
require.NoError(b, err)
require.Equal(b, "john", d.Name)
}
@ -1001,7 +1001,7 @@ func Benchmark_Bind_Body_XML(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Body(d)
}
require.Nil(b, err)
require.NoError(b, err)
require.Equal(b, "john", d.Name)
}
@ -1027,7 +1027,7 @@ func Benchmark_Bind_Body_Form(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Body(d)
}
require.Nil(b, err)
require.NoError(b, err)
require.Equal(b, "john", d.Name)
}
@ -1054,7 +1054,7 @@ func Benchmark_Bind_Body_MultipartForm(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Body(d)
}
require.Nil(b, err)
require.NoError(b, err)
require.Equal(b, "john", d.Name)
}
@ -1077,7 +1077,7 @@ func Benchmark_Bind_Body_Form_Map(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Body(&d)
}
require.Nil(b, err)
require.NoError(b, err)
require.Equal(b, "john", d["name"])
}
@ -1214,19 +1214,19 @@ func Test_Bind_Cookie(t *testing.T) {
c.Request().Header.SetCookie("Name", "John Doe")
c.Request().Header.SetCookie("Hobby", "golang,fiber")
q := new(Cookie)
require.Nil(t, c.Bind().Cookie(q))
require.Equal(t, 2, len(q.Hobby))
require.NoError(t, c.Bind().Cookie(q))
require.Len(t, q.Hobby, 2)
c.Request().Header.DelCookie("hobby")
c.Request().Header.SetCookie("Hobby", "golang,fiber,go")
q = new(Cookie)
require.Nil(t, c.Bind().Cookie(q))
require.Equal(t, 3, len(q.Hobby))
require.NoError(t, c.Bind().Cookie(q))
require.Len(t, q.Hobby, 3)
empty := new(Cookie)
c.Request().Header.DelCookie("hobby")
require.Nil(t, c.Bind().Query(empty))
require.Equal(t, 0, len(empty.Hobby))
require.NoError(t, c.Bind().Query(empty))
require.Empty(t, empty.Hobby)
type Cookie2 struct {
Bool bool
@ -1250,7 +1250,7 @@ func Test_Bind_Cookie(t *testing.T) {
h2 := new(Cookie2)
h2.Bool = true
h2.Name = helloWorld
require.Nil(t, c.Bind().Cookie(h2))
require.NoError(t, c.Bind().Cookie(h2))
require.Equal(t, "go,fiber", h2.Hobby)
require.True(t, h2.Bool)
require.Equal(t, "Jane Doe", h2.Name) // check value get overwritten
@ -1282,19 +1282,19 @@ func Test_Bind_Cookie_Map(t *testing.T) {
c.Request().Header.SetCookie("Name", "John Doe")
c.Request().Header.SetCookie("Hobby", "golang,fiber")
q := make(map[string][]string)
require.Nil(t, c.Bind().Cookie(&q))
require.Equal(t, 2, len(q["Hobby"]))
require.NoError(t, c.Bind().Cookie(&q))
require.Len(t, q["Hobby"], 2)
c.Request().Header.DelCookie("hobby")
c.Request().Header.SetCookie("Hobby", "golang,fiber,go")
q = make(map[string][]string)
require.Nil(t, c.Bind().Cookie(&q))
require.Equal(t, 3, len(q["Hobby"]))
require.NoError(t, c.Bind().Cookie(&q))
require.Len(t, q["Hobby"], 3)
empty := make(map[string][]string)
c.Request().Header.DelCookie("hobby")
require.Nil(t, c.Bind().Query(&empty))
require.Equal(t, 0, len(empty["Hobby"]))
require.NoError(t, c.Bind().Query(&empty))
require.Empty(t, empty["Hobby"])
}
// go test -run Test_Bind_Cookie_WithSetParserDecoder -v
@ -1337,7 +1337,7 @@ func Test_Bind_Cookie_WithSetParserDecoder(t *testing.T) {
c.Request().Header.SetCookie("Title", "CustomDateTest")
c.Request().Header.SetCookie("Body", "October")
require.Nil(t, c.Bind().Cookie(r))
require.NoError(t, c.Bind().Cookie(r))
require.Equal(t, "CustomDateTest", r.Title)
date := fmt.Sprintf("%v", r.Date)
require.Equal(t, "{0 63753609600 <nil>}", date)
@ -1348,7 +1348,7 @@ func Test_Bind_Cookie_WithSetParserDecoder(t *testing.T) {
Title: "Existing title",
Body: "Existing Body",
}
require.Nil(t, c.Bind().Cookie(r))
require.NoError(t, c.Bind().Cookie(r))
require.Equal(t, "", r.Title)
}
@ -1371,7 +1371,7 @@ func Test_Bind_Cookie_Schema(t *testing.T) {
c.Request().Header.SetCookie("Name", "tom")
c.Request().Header.SetCookie("Nested.Age", "10")
q := new(Cookie1)
require.Nil(t, c.Bind().Cookie(q))
require.NoError(t, c.Bind().Cookie(q))
c.Request().Header.DelCookie("Name")
q = new(Cookie1)
@ -1381,7 +1381,7 @@ func Test_Bind_Cookie_Schema(t *testing.T) {
c.Request().Header.DelCookie("Nested.Age")
c.Request().Header.SetCookie("Nested.Agex", "10")
q = new(Cookie1)
require.Nil(t, c.Bind().Cookie(q))
require.NoError(t, c.Bind().Cookie(q))
c.Request().Header.DelCookie("Nested.Agex")
q = new(Cookie1)
@ -1401,11 +1401,11 @@ func Test_Bind_Cookie_Schema(t *testing.T) {
c.Request().Header.SetCookie("Nested.Age", "10")
h2 := new(Cookie2)
require.Nil(t, c.Bind().Cookie(h2))
require.NoError(t, c.Bind().Cookie(h2))
c.Request().Header.DelCookie("Name")
h2 = new(Cookie2)
require.Nil(t, c.Bind().Cookie(h2))
require.NoError(t, c.Bind().Cookie(h2))
c.Request().Header.DelCookie("Name")
c.Request().Header.DelCookie("Nested.Age")
@ -1420,7 +1420,7 @@ func Test_Bind_Cookie_Schema(t *testing.T) {
c.Request().Header.SetCookie("Val", "1")
c.Request().Header.SetCookie("Next.Val", "3")
n := new(Node)
require.Nil(t, c.Bind().Cookie(n))
require.NoError(t, c.Bind().Cookie(n))
require.Equal(t, 1, n.Value)
require.Equal(t, 3, n.Next.Value)
@ -1433,7 +1433,7 @@ func Test_Bind_Cookie_Schema(t *testing.T) {
c.Request().Header.SetCookie("Next.Value", "2")
n = new(Node)
n.Next = new(Node)
require.Nil(t, c.Bind().Cookie(n))
require.NoError(t, c.Bind().Cookie(n))
require.Equal(t, 3, n.Value)
require.Equal(t, 0, n.Next.Value)
}
@ -1464,7 +1464,7 @@ func Benchmark_Bind_Cookie(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Cookie(q)
}
require.Nil(b, err)
require.NoError(b, err)
}
// go test -v -run=^$ -bench=Benchmark_Bind_Cookie_Map -benchmem -count=4
@ -1488,7 +1488,7 @@ func Benchmark_Bind_Cookie_Map(b *testing.B) {
for n := 0; n < b.N; n++ {
err = c.Bind().Cookie(&q)
}
require.Nil(b, err)
require.NoError(b, err)
}
// custom binder for testing
@ -1524,8 +1524,8 @@ func Test_Bind_CustomBinder(t *testing.T) {
c.Request().Header.SetContentLength(len(body))
d := new(Demo)
require.Nil(t, c.Bind().Body(d))
require.Nil(t, c.Bind().Custom("custom", d))
require.NoError(t, c.Bind().Body(d))
require.NoError(t, c.Bind().Custom("custom", d))
require.Equal(t, ErrCustomBinderNotFound, c.Bind().Custom("not_custom", d))
require.Equal(t, "john", d.Name)
}
@ -1581,7 +1581,7 @@ func Test_Bind_StructValidator(t *testing.T) {
rq = new(simpleQuery)
c.Request().URI().SetQueryString("name=john")
require.Nil(t, c.Bind().Query(rq))
require.NoError(t, c.Bind().Query(rq))
}
// go test -run Test_Bind_RepeatParserWithSameStruct -v
@ -1600,11 +1600,11 @@ func Test_Bind_RepeatParserWithSameStruct(t *testing.T) {
r := new(Request)
c.Request().URI().SetQueryString("query_param=query_param")
require.Equal(t, nil, c.Bind().Query(r))
require.NoError(t, c.Bind().Query(r))
require.Equal(t, "query_param", r.QueryParam)
c.Request().Header.Add("header_param", "header_param")
require.Equal(t, nil, c.Bind().Header(r))
require.NoError(t, c.Bind().Header(r))
require.Equal(t, "header_param", r.HeaderParam)
var gzipJSON bytes.Buffer
@ -1617,7 +1617,7 @@ func Test_Bind_RepeatParserWithSameStruct(t *testing.T) {
c.Request().Header.Set(HeaderContentEncoding, "gzip")
c.Request().SetBody(gzipJSON.Bytes())
c.Request().Header.SetContentLength(len(gzipJSON.Bytes()))
require.Equal(t, nil, c.Bind().Body(r))
require.NoError(t, c.Bind().Body(r))
require.Equal(t, "body_param", r.BodyParam)
c.Request().Header.Del(HeaderContentEncoding)
@ -1625,7 +1625,7 @@ func Test_Bind_RepeatParserWithSameStruct(t *testing.T) {
c.Request().Header.SetContentType(contentType)
c.Request().SetBody([]byte(body))
c.Request().Header.SetContentLength(len(body))
require.Equal(t, nil, c.Bind().Body(r))
require.NoError(t, c.Bind().Body(r))
require.Equal(t, "body_param", r.BodyParam)
}

View File

@ -6,6 +6,7 @@ import (
"crypto/tls"
"encoding/base64"
"encoding/json"
"encoding/xml"
"errors"
"fmt"
"io"
@ -20,6 +21,7 @@ import (
"github.com/gofiber/fiber/v3/internal/tlstest"
"github.com/stretchr/testify/require"
"github.com/valyala/fasthttp"
"github.com/valyala/fasthttp/fasthttputil"
)
@ -35,7 +37,7 @@ func Test_Client_Invalid_URL(t *testing.T) {
})
go func() {
require.Nil(t, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -47,8 +49,9 @@ func Test_Client_Invalid_URL(t *testing.T) {
_, body, errs := a.String()
require.Equal(t, "", body)
require.Equal(t, 1, len(errs))
require.Equal(t, "missing required Host header in request", errs[0].Error())
require.Len(t, errs, 1)
require.Error(t, errs[0],
`Expected error "missing required Host header in request"`)
}
func Test_Client_Unsupported_Protocol(t *testing.T) {
@ -59,9 +62,8 @@ func Test_Client_Unsupported_Protocol(t *testing.T) {
_, body, errs := a.String()
require.Equal(t, "", body)
require.Equal(t, 1, len(errs))
require.Equal(t, `unsupported protocol "ftp". http and https are supported`,
errs[0].Error())
require.Len(t, errs, 1)
require.ErrorContains(t, errs[0], `unsupported protocol "ftp". http and https are supported`)
}
func Test_Client_Get(t *testing.T) {
@ -76,7 +78,7 @@ func Test_Client_Get(t *testing.T) {
})
go func() {
require.Nil(t, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -90,7 +92,7 @@ func Test_Client_Get(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "example.com", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
}
}
@ -106,7 +108,7 @@ func Test_Client_Head(t *testing.T) {
})
go func() {
require.Nil(t, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -119,7 +121,7 @@ func Test_Client_Head(t *testing.T) {
require.Equal(t, StatusAccepted, code)
require.Equal(t, "", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
}
}
@ -136,7 +138,7 @@ func Test_Client_Post(t *testing.T) {
})
go func() {
require.Nil(t, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -155,7 +157,7 @@ func Test_Client_Post(t *testing.T) {
require.Equal(t, StatusCreated, code)
require.Equal(t, "bar", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
ReleaseArgs(args)
}
@ -173,7 +175,7 @@ func Test_Client_Put(t *testing.T) {
})
go func() {
require.Nil(t, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -192,7 +194,7 @@ func Test_Client_Put(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "bar", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
ReleaseArgs(args)
}
@ -210,7 +212,7 @@ func Test_Client_Patch(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -229,7 +231,7 @@ func Test_Client_Patch(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "bar", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
ReleaseArgs(args)
}
@ -248,7 +250,7 @@ func Test_Client_Delete(t *testing.T) {
})
go func() {
require.Nil(t, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -264,7 +266,7 @@ func Test_Client_Delete(t *testing.T) {
require.Equal(t, StatusNoContent, code)
require.Equal(t, "", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
ReleaseArgs(args)
}
@ -282,7 +284,7 @@ func Test_Client_UserAgent(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -298,7 +300,7 @@ func Test_Client_UserAgent(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, defaultUserAgent, body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
}
})
@ -316,7 +318,7 @@ func Test_Client_UserAgent(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "ua", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
ReleaseClient(c)
}
})
@ -438,7 +440,7 @@ func Test_Client_Agent_Host(t *testing.T) {
})
go func() {
require.Nil(t, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -455,7 +457,7 @@ func Test_Client_Agent_Host(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "example.com", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
}
func Test_Client_Agent_QueryString(t *testing.T) {
@ -543,7 +545,7 @@ func Test_Client_Agent_Custom_Response(t *testing.T) {
})
go func() {
require.Nil(t, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -556,7 +558,7 @@ func Test_Client_Agent_Custom_Response(t *testing.T) {
req.Header.SetMethod(MethodGet)
req.SetRequestURI("http://example.com")
require.Nil(t, a.Parse())
require.NoError(t, a.Parse())
a.HostClient.Dial = func(addr string) (net.Conn, error) { return ln.Dial() }
@ -566,7 +568,7 @@ func Test_Client_Agent_Custom_Response(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "custom", body)
require.Equal(t, "custom", string(resp.Body()))
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
ReleaseResponse(resp)
}
@ -584,7 +586,7 @@ func Test_Client_Agent_Dest(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -602,7 +604,7 @@ func Test_Client_Agent_Dest(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "dest", body)
require.Equal(t, "de", string(dest))
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
})
t.Run("enough dest", func(t *testing.T) {
@ -618,7 +620,7 @@ func Test_Client_Agent_Dest(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "dest", body)
require.Equal(t, "destar", string(dest))
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
})
}
@ -663,7 +665,7 @@ func Test_Client_Agent_RetryIf(t *testing.T) {
app := New()
go func() {
require.Nil(t, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -691,8 +693,8 @@ func Test_Client_Agent_RetryIf(t *testing.T) {
}
_, _, errs := a.String()
require.Equal(t, dialsCount, 4)
require.Equal(t, 0, len(errs))
require.Equal(t, 4, dialsCount)
require.Empty(t, errs)
}
func Test_Client_Agent_Json(t *testing.T) {
@ -733,8 +735,9 @@ func Test_Client_Agent_Json_Error(t *testing.T) {
_, body, errs := a.String()
require.Equal(t, "", body)
require.Equal(t, 1, len(errs))
require.Equal(t, "json: unsupported type: complex128", errs[0].Error())
require.Len(t, errs, 1)
wantErr := new(json.UnsupportedTypeError)
require.ErrorAs(t, errs[0], &wantErr)
}
func Test_Client_Agent_XML(t *testing.T) {
@ -758,10 +761,10 @@ func Test_Client_Agent_XML_Error(t *testing.T) {
XML(complex(1, 1))
_, body, errs := a.String()
require.Equal(t, "", body)
require.Equal(t, 1, len(errs))
require.Equal(t, "xml: unsupported type: complex128", errs[0].Error())
require.Len(t, errs, 1)
wantErr := new(xml.UnsupportedTypeError)
require.ErrorAs(t, errs[0], &wantErr)
}
func Test_Client_Agent_Form(t *testing.T) {
@ -803,7 +806,7 @@ func Test_Client_Agent_MultipartForm(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -822,7 +825,7 @@ func Test_Client_Agent_MultipartForm(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "--myBoundary\r\nContent-Disposition: form-data; name=\"foo\"\r\n\r\nbar\r\n--myBoundary--\r\n", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
ReleaseArgs(args)
}
@ -840,7 +843,7 @@ func Test_Client_Agent_MultipartForm_Errors(t *testing.T) {
a.FileData(ff1, ff2).
MultipartForm(args)
require.Equal(t, 4, len(a.errs))
require.Len(t, a.errs, 4)
ReleaseArgs(args)
}
@ -856,7 +859,7 @@ func Test_Client_Agent_MultipartForm_SendFiles(t *testing.T) {
fh1, err := c.FormFile("field1")
require.NoError(t, err)
require.Equal(t, fh1.Filename, "name")
require.Equal(t, "name", fh1.Filename)
buf := make([]byte, fh1.Size)
f, err := fh1.Open()
require.NoError(t, err)
@ -880,7 +883,7 @@ func Test_Client_Agent_MultipartForm_SendFiles(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -903,7 +906,7 @@ func Test_Client_Agent_MultipartForm_SendFiles(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "multipart form files", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
ReleaseFormFile(ff)
}
@ -948,8 +951,8 @@ func Test_Client_Agent_Multipart_Invalid_Boundary(t *testing.T) {
Boundary("*").
MultipartForm(nil)
require.Equal(t, 1, len(a.errs))
require.Equal(t, "mime: invalid boundary character", a.errs[0].Error())
require.Len(t, a.errs, 1)
require.ErrorContains(t, a.errs[0], "mime: invalid boundary character")
}
func Test_Client_Agent_SendFile_Error(t *testing.T) {
@ -958,8 +961,8 @@ func Test_Client_Agent_SendFile_Error(t *testing.T) {
a := Post("http://example.com").
SendFile("non-exist-file!", "")
require.Equal(t, 1, len(a.errs))
require.True(t, strings.Contains(a.errs[0].Error(), "open non-exist-file!"))
require.Len(t, a.errs, 1)
require.ErrorIs(t, a.errs[0], os.ErrNotExist)
}
func Test_Client_Debug(t *testing.T) {
@ -978,12 +981,12 @@ func Test_Client_Debug(t *testing.T) {
str := output.String()
require.True(t, strings.Contains(str, "Connected to example.com(InmemoryListener)"))
require.True(t, strings.Contains(str, "GET / HTTP/1.1"))
require.True(t, strings.Contains(str, "User-Agent: fiber"))
require.True(t, strings.Contains(str, "Host: example.com\r\n\r\n"))
require.True(t, strings.Contains(str, "HTTP/1.1 200 OK"))
require.True(t, strings.Contains(str, "Content-Type: text/plain; charset=utf-8\r\nContent-Length: 5\r\n\r\ndebug"))
require.Contains(t, str, "Connected to example.com(InmemoryListener)")
require.Contains(t, str, "GET / HTTP/1.1")
require.Contains(t, str, "User-Agent: fiber")
require.Contains(t, str, "Host: example.com\r\n\r\n")
require.Contains(t, str, "HTTP/1.1 200 OK")
require.Contains(t, str, "Content-Type: text/plain; charset=utf-8\r\nContent-Length: 5\r\n\r\ndebug")
}
func Test_Client_Agent_Timeout(t *testing.T) {
@ -999,7 +1002,7 @@ func Test_Client_Agent_Timeout(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -1012,8 +1015,8 @@ func Test_Client_Agent_Timeout(t *testing.T) {
_, body, errs := a.String()
require.Equal(t, "", body)
require.Equal(t, 1, len(errs))
require.Equal(t, "timeout", errs[0].Error())
require.Len(t, errs, 1)
require.ErrorIs(t, errs[0], fasthttp.ErrTimeout)
}
func Test_Client_Agent_Reuse(t *testing.T) {
@ -1028,7 +1031,7 @@ func Test_Client_Agent_Reuse(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -1042,13 +1045,13 @@ func Test_Client_Agent_Reuse(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, "reuse", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
code, body, errs = a.String()
require.Equal(t, StatusOK, code)
require.Equal(t, "reuse", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
}
func Test_Client_Agent_InsecureSkipVerify(t *testing.T) {
@ -1074,7 +1077,7 @@ func Test_Client_Agent_InsecureSkipVerify(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -1084,7 +1087,7 @@ func Test_Client_Agent_InsecureSkipVerify(t *testing.T) {
InsecureSkipVerify().
String()
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
require.Equal(t, StatusOK, code)
require.Equal(t, "ignore tls", body)
}
@ -1107,7 +1110,7 @@ func Test_Client_Agent_TLS(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -1116,7 +1119,7 @@ func Test_Client_Agent_TLS(t *testing.T) {
TLSConfig(clientTLSConf).
String()
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
require.Equal(t, StatusOK, code)
require.Equal(t, "tls", body)
}
@ -1139,7 +1142,7 @@ func Test_Client_Agent_MaxRedirectsCount(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -1155,7 +1158,7 @@ func Test_Client_Agent_MaxRedirectsCount(t *testing.T) {
require.Equal(t, 200, code)
require.Equal(t, "redirect", body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
})
t.Run("error", func(t *testing.T) {
@ -1168,8 +1171,8 @@ func Test_Client_Agent_MaxRedirectsCount(t *testing.T) {
_, body, errs := a.String()
require.Equal(t, "", body)
require.Equal(t, 1, len(errs))
require.Equal(t, "too many redirects detected when doing the request", errs[0].Error())
require.Len(t, errs, 1)
require.ErrorIs(t, errs[0], fasthttp.ErrTooManyRedirects)
})
}
@ -1189,7 +1192,7 @@ func Test_Client_Agent_Struct(t *testing.T) {
})
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -1207,7 +1210,7 @@ func Test_Client_Agent_Struct(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, `{"success":true}`, string(body))
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
require.True(t, d.Success)
})
@ -1215,15 +1218,17 @@ func Test_Client_Agent_Struct(t *testing.T) {
t.Parallel()
a := Get("http://example.com")
errPre := errors.New("pre errors")
a.HostClient.Dial = func(addr string) (net.Conn, error) { return ln.Dial() }
a.errs = append(a.errs, errors.New("pre errors"))
a.errs = append(a.errs, errPre)
var d data
_, body, errs := a.Struct(&d)
require.Equal(t, "", string(body))
require.Equal(t, 1, len(errs))
require.Equal(t, "pre errors", errs[0].Error())
require.Len(t, errs, 1)
require.ErrorIs(t, errs[0], errPre)
require.False(t, d.Success)
})
@ -1239,8 +1244,10 @@ func Test_Client_Agent_Struct(t *testing.T) {
require.Equal(t, StatusOK, code)
require.Equal(t, `{"success"`, string(body))
require.Equal(t, 1, len(errs))
require.Equal(t, "unexpected end of JSON input", errs[0].Error())
require.Len(t, errs, 1)
wantErr := new(json.SyntaxError)
require.ErrorAs(t, errs[0], &wantErr)
require.EqualValues(t, 10, wantErr.Offset)
})
t.Run("nil jsonDecoder", func(t *testing.T) {
@ -1258,7 +1265,7 @@ func Test_Client_Agent_Struct(t *testing.T) {
code, body, errs := a.Struct(&d)
require.Equal(t, StatusOK, code)
require.Equal(t, `{"success":true}`, string(body))
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
require.True(t, d.Success)
})
}
@ -1268,7 +1275,7 @@ func Test_Client_Agent_Parse(t *testing.T) {
a := Get("https://example.com:10443")
require.Nil(t, a.Parse())
require.NoError(t, a.Parse())
}
func testAgent(t *testing.T, handler Handler, wrapAgent func(agent *Agent), excepted string, count ...int) {
@ -1281,7 +1288,7 @@ func testAgent(t *testing.T, handler Handler, wrapAgent func(agent *Agent), exce
app.Get("/", handler)
go func() {
require.Nil(t, nil, app.Listener(ln, ListenConfig{
require.NoError(t, app.Listener(ln, ListenConfig{
DisableStartupMessage: true,
}))
}()
@ -1302,7 +1309,7 @@ func testAgent(t *testing.T, handler Handler, wrapAgent func(agent *Agent), exce
require.Equal(t, StatusOK, code)
require.Equal(t, excepted, body)
require.Equal(t, 0, len(errs))
require.Empty(t, errs)
}
}

View File

@ -34,6 +34,8 @@ import (
"github.com/valyala/fasthttp"
)
const epsilon = 0.001
// go test -run Test_Ctx_Accepts
func Test_Ctx_Accepts(t *testing.T) {
t.Parallel()
@ -995,7 +997,7 @@ func Test_Ctx_FormFile(t *testing.T) {
f, err := fh.Open()
require.NoError(t, err)
defer func() {
require.Equal(t, nil, f.Close())
require.NoError(t, f.Close())
}()
b := new(bytes.Buffer)
@ -1036,8 +1038,8 @@ func Test_Ctx_FormValue(t *testing.T) {
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
require.Nil(t, writer.WriteField("name", "john"))
require.Nil(t, writer.Close())
require.NoError(t, writer.WriteField("name", "john"))
require.NoError(t, writer.Close())
req := httptest.NewRequest(MethodPost, "/test", body)
req.Header.Set("Content-Type", fmt.Sprintf("multipart/form-data; boundary=%s", writer.Boundary()))
@ -1550,11 +1552,11 @@ func Test_Ctx_IPs(t *testing.T) {
// empty header
c.Request().Header.Set(HeaderXForwardedFor, "")
require.Equal(t, 0, len(c.IPs()))
require.Empty(t, c.IPs())
// missing header
c.Request()
require.Equal(t, 0, len(c.IPs()))
require.Empty(t, c.IPs())
}
func Test_Ctx_IPs_With_IP_Validation(t *testing.T) {
@ -1586,11 +1588,11 @@ func Test_Ctx_IPs_With_IP_Validation(t *testing.T) {
// empty header
c.Request().Header.Set(HeaderXForwardedFor, "")
require.Equal(t, 0, len(c.IPs()))
require.Empty(t, c.IPs())
// missing header
c.Request()
require.Equal(t, 0, len(c.IPs()))
require.Empty(t, c.IPs())
}
// go test -v -run=^$ -bench=Benchmark_Ctx_IPs -benchmem -count=4
@ -1875,7 +1877,7 @@ func Test_Ctx_MultipartForm(t *testing.T) {
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
require.Nil(t, writer.WriteField("name", "john"))
require.NoError(t, writer.WriteField("name", "john"))
require.NoError(t, writer.Close())
req := httptest.NewRequest(MethodPost, "/test", body)
@ -2505,20 +2507,20 @@ func Test_Ctx_QueryFloat(t *testing.T) {
c.Request().URI().SetQueryString("name=alex&amount=32.23&id=")
// float32
require.Equal(t, float32(32.23), Query[float32](c, "amount"))
require.Equal(t, float32(32.23), Query[float32](c, "amount", 3.123))
require.Equal(t, float32(87.123), Query[float32](c, "name", 87.123))
require.Equal(t, float32(0), Query[float32](c, "name"))
require.Equal(t, float32(12.87), Query[float32](c, "id", 12.87))
require.Equal(t, float32(0), Query[float32](c, "id"))
require.InEpsilon(t, float32(32.23), Query[float32](c, "amount"), epsilon)
require.InEpsilon(t, float32(32.23), Query[float32](c, "amount", 3.123), epsilon)
require.InEpsilon(t, float32(87.123), Query[float32](c, "name", 87.123), epsilon)
require.InDelta(t, float32(0), Query[float32](c, "name"), 0)
require.InEpsilon(t, float32(12.87), Query[float32](c, "id", 12.87), epsilon)
require.InDelta(t, float32(0), Query[float32](c, "id"), 0)
// float64
require.Equal(t, 32.23, Query[float64](c, "amount"))
require.Equal(t, 32.23, Query[float64](c, "amount", 3.123))
require.Equal(t, 87.123, Query[float64](c, "name", 87.123))
require.Equal(t, float64(0), Query[float64](c, "name"))
require.Equal(t, 12.87, Query[float64](c, "id", 12.87))
require.Equal(t, float64(0), Query[float64](c, "id"))
require.InEpsilon(t, 32.23, Query[float64](c, "amount"), epsilon)
require.InEpsilon(t, 32.23, Query[float64](c, "amount", 3.123), epsilon)
require.InEpsilon(t, 87.123, Query[float64](c, "name", 87.123), epsilon)
require.InDelta(t, float64(0), Query[float64](c, "name"), 0)
require.InEpsilon(t, 12.87, Query[float64](c, "id", 12.87), epsilon)
require.InDelta(t, float64(0), Query[float64](c, "id"), 0)
}
// go test -v -run=^$ -bench=Benchmark_Ctx_QueryFloat -benchmem -count=4
@ -2532,7 +2534,7 @@ func Benchmark_Ctx_QueryFloat(b *testing.B) {
for n := 0; n < b.N; n++ {
res = Query[float32](c, "age")
}
require.Equal(b, float32(8), res)
require.InEpsilon(b, float32(8), res, epsilon)
}
// go test -run Test_Ctx_QueryBool
@ -2543,12 +2545,12 @@ func Test_Ctx_QueryBool(t *testing.T) {
c.Request().URI().SetQueryString("name=alex&want_pizza=false&id=")
require.Equal(t, false, Query[bool](c, "want_pizza"))
require.Equal(t, false, Query[bool](c, "want_pizza", true))
require.Equal(t, false, Query[bool](c, "name"))
require.Equal(t, true, Query[bool](c, "name", true))
require.Equal(t, false, Query[bool](c, "id"))
require.Equal(t, true, Query[bool](c, "id", true))
require.False(t, Query[bool](c, "want_pizza"))
require.False(t, Query[bool](c, "want_pizza", true))
require.False(t, Query[bool](c, "name"))
require.True(t, Query[bool](c, "name", true))
require.False(t, Query[bool](c, "id"))
require.True(t, Query[bool](c, "id", true))
}
// go test -v -run=^$ -bench=Benchmark_Ctx_QueryBool -benchmem -count=4
@ -2562,7 +2564,7 @@ func Benchmark_Ctx_QueryBool(b *testing.B) {
for n := 0; n < b.N; n++ {
res = Query[bool](c, "age")
}
require.Equal(b, false, res)
require.False(b, res)
}
// go test -run Test_Ctx_QueryString
@ -2655,12 +2657,12 @@ func Test_Ctx_QueryWithoutGenericDataType(t *testing.T) {
require.Equal(t, uint32(3), Query(c, "unknown", uint32(3)))
require.Equal(t, uint64(32), Query(c, "id", uint64(3)))
require.Equal(t, uint64(3), Query(c, "unknown", uint64(3)))
require.Equal(t, 32.23, Query(c, "amount", 3.123))
require.Equal(t, 3.123, Query(c, "unknown", 3.123))
require.Equal(t, float32(32.23), Query(c, "amount", float32(3.123)))
require.Equal(t, float32(3.123), Query(c, "unknown", float32(3.123)))
require.Equal(t, true, Query(c, "isAgent", false))
require.Equal(t, false, Query(c, "unknown", false))
require.InEpsilon(t, 32.23, Query(c, "amount", 3.123), epsilon)
require.InEpsilon(t, 3.123, Query(c, "unknown", 3.123), epsilon)
require.InEpsilon(t, float32(32.23), Query(c, "amount", float32(3.123)), epsilon)
require.InEpsilon(t, float32(3.123), Query(c, "unknown", float32(3.123)), epsilon)
require.True(t, Query(c, "isAgent", false))
require.False(t, Query(c, "unknown", false))
require.Equal(t, []byte("alex"), Query(c, "name", []byte("john")))
require.Equal(t, []byte("john"), Query(c, "unknown", []byte("john")))
}
@ -2764,7 +2766,7 @@ func Test_Ctx_Route(t *testing.T) {
require.Equal(t, "/", c.Route().Path)
require.Equal(t, MethodGet, c.Route().Method)
require.Equal(t, 0, len(c.Route().Handlers))
require.Empty(t, c.Route().Handlers)
}
// go test -run Test_Ctx_RouteNormalized
@ -2929,8 +2931,8 @@ func Test_Ctx_ClearCookie(t *testing.T) {
c.Request().Header.Set(HeaderCookie, "test1=dummy")
c.Request().Header.Set(HeaderCookie, "test2=dummy")
c.ClearCookie()
require.True(t, strings.Contains(string(c.Response().Header.Peek(HeaderSetCookie)), "test1=; expires="))
require.True(t, strings.Contains(string(c.Response().Header.Peek(HeaderSetCookie)), "test2=; expires="))
require.Contains(t, string(c.Response().Header.Peek(HeaderSetCookie)), "test1=; expires=")
require.Contains(t, string(c.Response().Header.Peek(HeaderSetCookie)), "test2=; expires=")
}
// go test -race -run Test_Ctx_Download
@ -2939,7 +2941,7 @@ func Test_Ctx_Download(t *testing.T) {
app := New()
c := app.NewCtx(&fasthttp.RequestCtx{})
require.Equal(t, nil, c.Download("ctx.go", "Awesome File!"))
require.NoError(t, c.Download("ctx.go", "Awesome File!"))
f, err := os.Open("./ctx.go")
require.NoError(t, err)
@ -2965,7 +2967,7 @@ func Test_Ctx_SendFile(t *testing.T) {
f, err := os.Open("./ctx.go")
require.NoError(t, err)
defer func() {
require.NoError(t, nil, f.Close())
require.NoError(t, f.Close())
}()
expectFileContent, err := io.ReadAll(f)
require.NoError(t, err)
@ -3008,7 +3010,7 @@ func Test_Ctx_SendFile_404(t *testing.T) {
app := New()
app.Get("/", func(c Ctx) error {
err := c.SendFile(filepath.FromSlash("john_dow.go/"))
require.False(t, err == nil)
require.Error(t, err)
return err
})
@ -3078,8 +3080,8 @@ func Test_Ctx_SendFile_RestoreOriginalURL(t *testing.T) {
// second request required to confirm with zero allocation
_, err2 := app.Test(httptest.NewRequest(MethodGet, "/?test=true", nil))
require.Nil(t, err1)
require.Nil(t, err2)
require.NoError(t, err1)
require.NoError(t, err2)
}
// go test -run Test_Ctx_JSON
@ -3088,7 +3090,7 @@ func Test_Ctx_JSON(t *testing.T) {
app := New()
c := app.NewCtx(&fasthttp.RequestCtx{})
require.True(t, c.JSON(complex(1, 1)) != nil)
require.Error(t, c.JSON(complex(1, 1)))
// Test without ctype
err := c.JSON(Map{ // map has no order
@ -3192,7 +3194,7 @@ func Test_Ctx_JSONP(t *testing.T) {
app := New()
c := app.NewCtx(&fasthttp.RequestCtx{})
require.True(t, c.JSONP(complex(1, 1)) != nil)
require.Error(t, c.JSONP(complex(1, 1)))
err := c.JSONP(Map{
"Name": "Grame",
@ -3260,7 +3262,7 @@ func Test_Ctx_XML(t *testing.T) {
app := New()
c := app.NewCtx(&fasthttp.RequestCtx{}).(*DefaultCtx) //nolint:errcheck, forcetypeassert // not needed
require.True(t, c.JSON(complex(1, 1)) != nil)
require.Error(t, c.JSON(complex(1, 1)))
type xmlResult struct {
XMLName xml.Name `xml:"Users"`
@ -3424,10 +3426,10 @@ func Test_Ctx_Render(t *testing.T) {
require.Equal(t, "<h1>Hello, World!</h1>", string(c.Response().Body()))
err = c.Render("./.github/testdata/template-non-exists.html", nil)
require.False(t, err == nil)
require.Error(t, err)
err = c.Render("./.github/testdata/template-invalid.html", nil)
require.False(t, err == nil)
require.Error(t, err)
}
func Test_Ctx_RenderWithoutLocals(t *testing.T) {
@ -3732,7 +3734,7 @@ func (t *testTemplateEngine) Load() error {
func Test_Ctx_Render_Engine(t *testing.T) {
t.Parallel()
engine := &testTemplateEngine{}
require.Equal(t, nil, engine.Load())
require.NoError(t, engine.Load())
app := New()
app.config.Views = engine
c := app.NewCtx(&fasthttp.RequestCtx{})
@ -3748,7 +3750,7 @@ func Test_Ctx_Render_Engine(t *testing.T) {
func Test_Ctx_Render_Engine_With_View_Layout(t *testing.T) {
t.Parallel()
engine := &testTemplateEngine{}
require.Equal(t, nil, engine.Load())
require.NoError(t, engine.Load())
app := New(Config{ViewsLayout: "main.tmpl"})
app.config.Views = engine
c := app.NewCtx(&fasthttp.RequestCtx{})
@ -3796,7 +3798,7 @@ func Benchmark_Ctx_Get_Location_From_Route(b *testing.B) {
}
require.Equal(b, "/user/fiber", location)
require.Equal(b, nil, err)
require.NoError(b, err)
}
// go test -run Test_Ctx_Get_Location_From_Route_name
@ -3892,7 +3894,7 @@ func Test_Ctx_Render_Engine_Error(t *testing.T) {
c := app.NewCtx(&fasthttp.RequestCtx{})
err := c.Render("index.tmpl", nil)
require.False(t, err == nil)
require.Error(t, err)
}
// go test -run Test_Ctx_Render_Go_Template
@ -4014,11 +4016,11 @@ func Test_Ctx_Set_Splitter(t *testing.T) {
c.Set("Location", "foo\r\nSet-Cookie:%20SESSIONID=MaliciousValue\r\n")
h := string(c.Response().Header.Peek("Location"))
require.False(t, strings.Contains(h, "\r\n"), h)
require.NotContains(t, h, "\r\n")
c.Set("Location", "foo\nSet-Cookie:%20SESSIONID=MaliciousValue\n")
h = string(c.Response().Header.Peek("Location"))
require.False(t, strings.Contains(h, "\n"), h)
require.NotContains(t, h, "\n")
}
// go test -v -run=^$ -bench=Benchmark_Ctx_Set -benchmem -count=4
@ -4143,7 +4145,7 @@ func Benchmark_Ctx_Write(b *testing.B) {
for n := 0; n < b.N; n++ {
_, err = c.Write(byt)
}
require.Equal(b, nil, err)
require.NoError(b, err)
}
// go test -run Test_Ctx_Writef
@ -4171,7 +4173,7 @@ func Benchmark_Ctx_Writef(b *testing.B) {
for n := 0; n < b.N; n++ {
_, err = c.Writef("Hello, %s", world)
}
require.Equal(b, nil, err)
require.NoError(b, err)
}
// go test -run Test_Ctx_WriteString
@ -4313,12 +4315,12 @@ func Test_Ctx_BodyStreamWriter(t *testing.T) {
fmt.Fprintf(w, "body writer line 2\n")
})
require.Equal(t, true, ctx.IsBodyStream())
require.True(t, ctx.IsBodyStream())
s := ctx.Response.String()
br := bufio.NewReader(bytes.NewBufferString(s))
var resp fasthttp.Response
require.Equal(t, nil, resp.Read(br))
require.NoError(t, resp.Read(br))
body := string(resp.Body())
expectedBody := "body writer line 1\nbody writer line 2\n"
@ -4344,7 +4346,7 @@ func Benchmark_Ctx_BodyStreamWriter(b *testing.B) {
}
})
}
require.Equal(b, nil, err)
require.NoError(b, err)
}
func Test_Ctx_String(t *testing.T) {
@ -4374,7 +4376,7 @@ func TestCtx_ParamsInt(t *testing.T) {
require.Equal(t, 1111, num)
// Check no errors are returned, because we want NO errors in this one
require.Equal(t, nil, err)
require.NoError(t, err)
return nil
})
@ -4390,7 +4392,7 @@ func TestCtx_ParamsInt(t *testing.T) {
require.Equal(t, 0, num)
// Check an error is returned, because we want NO errors in this one
require.Equal(t, true, err != nil)
require.Error(t, err)
return nil
})
@ -4406,7 +4408,7 @@ func TestCtx_ParamsInt(t *testing.T) {
require.Equal(t, 2222, num)
// Check no errors are returned, because we want NO errors in this one
require.Equal(t, nil, err)
require.NoError(t, err)
return nil
})
@ -4422,7 +4424,7 @@ func TestCtx_ParamsInt(t *testing.T) {
require.Equal(t, 1111, num)
// Check an error is returned, because we want NO errors in this one
require.Equal(t, nil, err)
require.NoError(t, err)
return nil
})
@ -4506,7 +4508,7 @@ func Test_Ctx_IsFromLocal_RemoteAddr(t *testing.T) {
c := app.NewCtx(fastCtx)
require.Equal(t, "127.0.0.1", c.IP())
require.Equal(t, true, c.IsFromLocal())
require.True(t, c.IsFromLocal())
}
// Test for the case fasthttp remoteAddr is set to "::1".
{
@ -4515,7 +4517,7 @@ func Test_Ctx_IsFromLocal_RemoteAddr(t *testing.T) {
fastCtx.SetRemoteAddr(localIPv6)
c := app.NewCtx(fastCtx)
require.Equal(t, "::1", c.IP())
require.Equal(t, true, c.IsFromLocal())
require.True(t, c.IsFromLocal())
}
// Test for the case fasthttp remoteAddr is set to "0:0:0:0:0:0:0:1".
{
@ -4526,7 +4528,7 @@ func Test_Ctx_IsFromLocal_RemoteAddr(t *testing.T) {
// fasthttp should return "::1" for "0:0:0:0:0:0:0:1".
// otherwise IsFromLocal() will break.
require.Equal(t, "::1", c.IP())
require.Equal(t, true, c.IsFromLocal())
require.True(t, c.IsFromLocal())
}
// Test for the case fasthttp remoteAddr is set to "0.0.0.0".
{
@ -4535,7 +4537,7 @@ func Test_Ctx_IsFromLocal_RemoteAddr(t *testing.T) {
fastCtx.SetRemoteAddr(zeroIPv4)
c := app.NewCtx(fastCtx)
require.Equal(t, "0.0.0.0", c.IP())
require.Equal(t, false, c.IsFromLocal())
require.False(t, c.IsFromLocal())
}
// Test for the case fasthttp remoteAddr is set to "93.46.8.90".
{
@ -4544,7 +4546,7 @@ func Test_Ctx_IsFromLocal_RemoteAddr(t *testing.T) {
fastCtx.SetRemoteAddr(someIPv4)
c := app.NewCtx(fastCtx)
require.Equal(t, "93.46.8.90", c.IP())
require.Equal(t, false, c.IsFromLocal())
require.False(t, c.IsFromLocal())
}
// Test for the case fasthttp remoteAddr is set to "2001:0db8:85a3:0000:0000:8a2e:0370:7334".
{
@ -4553,7 +4555,7 @@ func Test_Ctx_IsFromLocal_RemoteAddr(t *testing.T) {
fastCtx.SetRemoteAddr(someIPv6)
c := app.NewCtx(fastCtx)
require.Equal(t, "2001:db8:85a3::8a2e:370:7334", c.IP())
require.Equal(t, false, c.IsFromLocal())
require.False(t, c.IsFromLocal())
}
}

View File

@ -240,7 +240,7 @@ func Test_Utils_ForEachParameter(t *testing.T) {
for _, tc := range testCases {
n := 0
forEachParameter(tc.paramStr, func(p, v string) bool {
require.Equal(t, true, n < len(tc.expectedParams), "Received more parameters than expected: "+p+"="+v)
require.Less(t, n, len(tc.expectedParams), "Received more parameters than expected: "+p+"="+v)
require.Equal(t, tc.expectedParams[n][0], p, tc.description)
require.Equal(t, tc.expectedParams[n][1], v, tc.description)
n++
@ -248,7 +248,7 @@ func Test_Utils_ForEachParameter(t *testing.T) {
// Stop parsing at the first parameter called "end"
return p != "end"
})
require.Equal(t, len(tc.expectedParams), n, tc.description+": number of parameters differs")
require.Len(t, tc.expectedParams, n, tc.description+": number of parameters differs")
}
// Check that we exited on the second parameter (bar)
}
@ -323,7 +323,7 @@ func Benchmark_Utils_ParamsMatch(b *testing.B) {
for n := 0; n < b.N; n++ {
match = paramsMatch(`; appLe=orange; param="foo"`, `;param=foo; apple=orange`)
}
require.Equal(b, true, match)
require.True(b, match)
}
func Test_Utils_AcceptsOfferType(t *testing.T) {
@ -451,7 +451,7 @@ func Test_Utils_SortAcceptedTypes(t *testing.T) {
{spec: "application/json", quality: 0.999, specificity: 3, params: ";a=1", order: 11},
}
sortAcceptedTypes(&acceptedTypes)
require.Equal(t, acceptedTypes, []acceptedType{
require.Equal(t, []acceptedType{
{spec: "text/html", quality: 1, specificity: 3, order: 0},
{spec: "application/xml", quality: 1, specificity: 3, order: 4},
{spec: "application/pdf", quality: 1, specificity: 3, order: 5},
@ -464,7 +464,7 @@ func Test_Utils_SortAcceptedTypes(t *testing.T) {
{spec: "application/json", quality: 0.999, specificity: 3, order: 3},
{spec: "text/*", quality: 0.5, specificity: 2, order: 1},
{spec: "*/*", quality: 0.1, specificity: 1, order: 2},
})
}, acceptedTypes)
}
// go test -v -run=^$ -bench=Benchmark_Utils_SortAcceptedTypes_Sorted -benchmem -count=4
@ -498,7 +498,7 @@ func Benchmark_Utils_SortAcceptedTypes_Unsorted(b *testing.B) {
acceptedTypes[10] = acceptedType{spec: "text/plain", quality: 1, specificity: 3, order: 10}
sortAcceptedTypes(&acceptedTypes)
}
require.Equal(b, acceptedTypes, []acceptedType{
require.Equal(b, []acceptedType{
{spec: "text/html", quality: 1, specificity: 3, order: 0},
{spec: "application/xml", quality: 1, specificity: 3, order: 4},
{spec: "application/pdf", quality: 1, specificity: 3, order: 5},
@ -510,7 +510,7 @@ func Benchmark_Utils_SortAcceptedTypes_Unsorted(b *testing.B) {
{spec: "application/json", quality: 0.999, specificity: 3, order: 3},
{spec: "text/*", quality: 0.5, specificity: 2, order: 1},
{spec: "*/*", quality: 0.1, specificity: 1, order: 2},
})
}, acceptedTypes)
}
func Test_Utils_UniqueRouteStack(t *testing.T) {
@ -609,9 +609,9 @@ func Test_Utils_Parse_Address(t *testing.T) {
func Test_Utils_TestConn_Deadline(t *testing.T) {
t.Parallel()
conn := &testConn{}
require.Nil(t, conn.SetDeadline(time.Time{}))
require.Nil(t, conn.SetReadDeadline(time.Time{}))
require.Nil(t, conn.SetWriteDeadline(time.Time{}))
require.NoError(t, conn.SetDeadline(time.Time{}))
require.NoError(t, conn.SetReadDeadline(time.Time{}))
require.NoError(t, conn.SetWriteDeadline(time.Time{}))
}
func Test_Utils_IsNoCache(t *testing.T) {

View File

@ -63,7 +63,7 @@ func Test_Hook_OnName(t *testing.T) {
app.Hooks().OnName(func(r Route) error {
_, err := buf.WriteString(r.Name)
require.NoError(t, nil, err)
require.NoError(t, err)
return nil
})
@ -104,7 +104,7 @@ func Test_Hook_OnGroup(t *testing.T) {
app.Hooks().OnGroup(func(g Group) error {
_, err := buf.WriteString(g.Prefix)
require.NoError(t, nil, err)
require.NoError(t, err)
return nil
})
@ -143,7 +143,7 @@ func Test_Hook_OnGroupName(t *testing.T) {
app.Hooks().OnGroupName(func(g Group) error {
_, err := buf.WriteString(g.name)
require.NoError(t, nil, err)
require.NoError(t, err)
return nil
})
@ -189,12 +189,12 @@ func Test_Hook_OnShutdown(t *testing.T) {
app.Hooks().OnShutdown(func() error {
_, err := buf.WriteString("shutdowning")
require.NoError(t, nil, err)
require.NoError(t, err)
return nil
})
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
require.Equal(t, "shutdowning", buf.String())
}
@ -215,9 +215,9 @@ func Test_Hook_OnListen(t *testing.T) {
go func() {
time.Sleep(1000 * time.Millisecond)
require.Equal(t, nil, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Equal(t, nil, app.Listen(":9000"))
require.NoError(t, app.Listen(":9000"))
require.Equal(t, "ready", buf.String())
}
@ -231,17 +231,17 @@ func Test_Hook_OnListenPrefork(t *testing.T) {
app.Hooks().OnListen(func(listenData ListenData) error {
_, err := buf.WriteString("ready")
require.NoError(t, nil, err)
require.NoError(t, err)
return nil
})
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":9000", ListenConfig{DisableStartupMessage: true, EnablePrefork: true}))
require.NoError(t, app.Listen(":9000", ListenConfig{DisableStartupMessage: true, EnablePrefork: true}))
require.Equal(t, "ready", buf.String())
}
@ -254,7 +254,7 @@ func Test_Hook_OnHook(t *testing.T) {
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
app.Hooks().OnFork(func(pid int) error {
@ -262,7 +262,7 @@ func Test_Hook_OnHook(t *testing.T) {
return nil
})
require.Nil(t, app.prefork(":3000", nil, ListenConfig{DisableStartupMessage: true, EnablePrefork: true}))
require.NoError(t, app.prefork(":3000", nil, ListenConfig{DisableStartupMessage: true, EnablePrefork: true}))
}
func Test_Hook_OnMount(t *testing.T) {
@ -274,7 +274,7 @@ func Test_Hook_OnMount(t *testing.T) {
subApp.Get("/test", testSimpleHandler)
subApp.Hooks().OnMount(func(parent *App) error {
require.Equal(t, parent.mountFields.mountPath, "")
require.Empty(t, parent.mountFields.mountPath)
return nil
})

View File

@ -69,7 +69,7 @@ func Test_Storage_Memory_Get_Expired(t *testing.T) {
result, err := testStore.Get(key)
require.NoError(t, err)
require.Equal(t, true, len(result) == 0)
require.Empty(t, result)
}
func Test_Storage_Memory_Get_NotExist(t *testing.T) {
@ -77,7 +77,7 @@ func Test_Storage_Memory_Get_NotExist(t *testing.T) {
result, err := testStore.Get("notexist")
require.NoError(t, err)
require.Equal(t, true, len(result) == 0)
require.Empty(t, result)
}
func Test_Storage_Memory_Delete(t *testing.T) {
@ -95,7 +95,7 @@ func Test_Storage_Memory_Delete(t *testing.T) {
result, err := testStore.Get(key)
require.NoError(t, err)
require.Equal(t, true, len(result) == 0)
require.Empty(t, result)
}
func Test_Storage_Memory_Reset(t *testing.T) {
@ -113,11 +113,11 @@ func Test_Storage_Memory_Reset(t *testing.T) {
result, err := testStore.Get("john1")
require.NoError(t, err)
require.Equal(t, true, len(result) == 0)
require.Empty(t, result)
result, err = testStore.Get("john2")
require.NoError(t, err)
require.Equal(t, true, len(result) == 0)
require.Empty(t, result)
}
func Test_Storage_Memory_Close(t *testing.T) {
@ -127,7 +127,7 @@ func Test_Storage_Memory_Close(t *testing.T) {
func Test_Storage_Memory_Conn(t *testing.T) {
t.Parallel()
require.True(t, testStore.Conn() != nil)
require.NotNil(t, testStore.Conn())
}
// go test -v -run=^$ -bench=Benchmark_Storage_Memory -benchmem -count=4

View File

@ -24,14 +24,14 @@ import (
func Test_Listen(t *testing.T) {
app := New()
require.False(t, app.Listen(":99999") == nil)
require.Error(t, app.Listen(":99999"))
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":4003", ListenConfig{DisableStartupMessage: true}))
require.NoError(t, app.Listen(":4003", ListenConfig{DisableStartupMessage: true}))
}
// go test -run Test_Listen_Graceful_Shutdown
@ -83,7 +83,7 @@ func Test_Listen_Graceful_Shutdown(t *testing.T) {
require.Equal(t, tc.ExpectedStatusCode, code)
require.Equal(t, tc.ExpectedBody, body)
require.Equal(t, tc.ExceptedErrsLen, len(errs))
require.Len(t, errs, tc.ExceptedErrsLen)
}
mu.Lock()
@ -97,7 +97,7 @@ func Test_Listen_Prefork(t *testing.T) {
app := New()
require.Nil(t, app.Listen(":99999", ListenConfig{DisableStartupMessage: true, EnablePrefork: true}))
require.NoError(t, app.Listen(":99999", ListenConfig{DisableStartupMessage: true, EnablePrefork: true}))
}
// go test -run Test_Listen_TLS
@ -105,17 +105,17 @@ func Test_Listen_TLS(t *testing.T) {
app := New()
// invalid port
require.False(t, app.Listen(":99999", ListenConfig{
require.Error(t, app.Listen(":99999", ListenConfig{
CertFile: "./.github/testdata/ssl.pem",
CertKeyFile: "./.github/testdata/ssl.key",
}) == nil)
}))
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":0", ListenConfig{
require.NoError(t, app.Listen(":0", ListenConfig{
CertFile: "./.github/testdata/ssl.pem",
CertKeyFile: "./.github/testdata/ssl.key",
}))
@ -128,19 +128,19 @@ func Test_Listen_TLS_Prefork(t *testing.T) {
app := New()
// invalid key file content
require.False(t, app.Listen(":0", ListenConfig{
require.Error(t, app.Listen(":0", ListenConfig{
DisableStartupMessage: true,
EnablePrefork: true,
CertFile: "./.github/testdata/ssl.pem",
CertKeyFile: "./.github/testdata/template.tmpl",
}) == nil)
}))
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":99999", ListenConfig{
require.NoError(t, app.Listen(":99999", ListenConfig{
DisableStartupMessage: true,
EnablePrefork: true,
CertFile: "./.github/testdata/ssl.pem",
@ -153,18 +153,18 @@ func Test_Listen_MutualTLS(t *testing.T) {
app := New()
// invalid port
require.False(t, app.Listen(":99999", ListenConfig{
require.Error(t, app.Listen(":99999", ListenConfig{
CertFile: "./.github/testdata/ssl.pem",
CertKeyFile: "./.github/testdata/ssl.key",
CertClientFile: "./.github/testdata/ca-chain.cert.pem",
}) == nil)
}))
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":0", ListenConfig{
require.NoError(t, app.Listen(":0", ListenConfig{
CertFile: "./.github/testdata/ssl.pem",
CertKeyFile: "./.github/testdata/ssl.key",
CertClientFile: "./.github/testdata/ca-chain.cert.pem",
@ -178,20 +178,20 @@ func Test_Listen_MutualTLS_Prefork(t *testing.T) {
app := New()
// invalid key file content
require.False(t, app.Listen(":0", ListenConfig{
require.Error(t, app.Listen(":0", ListenConfig{
DisableStartupMessage: true,
EnablePrefork: true,
CertFile: "./.github/testdata/ssl.pem",
CertKeyFile: "./.github/testdata/template.html",
CertClientFile: "./.github/testdata/ca-chain.cert.pem",
}) == nil)
}))
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":99999", ListenConfig{
require.NoError(t, app.Listen(":99999", ListenConfig{
DisableStartupMessage: true,
EnablePrefork: true,
CertFile: "./.github/testdata/ssl.pem",
@ -206,11 +206,11 @@ func Test_Listener(t *testing.T) {
go func() {
time.Sleep(500 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
ln := fasthttputil.NewInmemoryListener()
require.Nil(t, app.Listener(ln))
require.NoError(t, app.Listener(ln))
}
func Test_App_Listener_TLS_Listener(t *testing.T) {
@ -231,10 +231,10 @@ func Test_App_Listener_TLS_Listener(t *testing.T) {
go func() {
time.Sleep(time.Millisecond * 500)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listener(ln))
require.NoError(t, app.Listener(ln))
}
// go test -run Test_Listen_TLSConfigFunc
@ -244,10 +244,10 @@ func Test_Listen_TLSConfigFunc(t *testing.T) {
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":0", ListenConfig{
require.NoError(t, app.Listen(":0", ListenConfig{
DisableStartupMessage: true,
TLSConfigFunc: func(tlsConfig *tls.Config) {
callTLSConfig = true
@ -266,10 +266,10 @@ func Test_Listen_ListenerAddrFunc(t *testing.T) {
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":0", ListenConfig{
require.NoError(t, app.Listen(":0", ListenConfig{
DisableStartupMessage: true,
ListenerAddrFunc: func(addr net.Addr) {
network = addr.Network()
@ -288,19 +288,20 @@ func Test_Listen_BeforeServeFunc(t *testing.T) {
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Equal(t, errors.New("test"), app.Listen(":0", ListenConfig{
wantErr := errors.New("test")
require.ErrorIs(t, app.Listen(":0", ListenConfig{
DisableStartupMessage: true,
BeforeServeFunc: func(fiber *App) error {
handlers = fiber.HandlersCount()
return errors.New("test")
return wantErr
},
}))
}), wantErr)
require.Equal(t, uint32(0), handlers)
require.Zero(t, handlers)
}
// go test -run Test_Listen_ListenerNetwork
@ -310,10 +311,10 @@ func Test_Listen_ListenerNetwork(t *testing.T) {
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":0", ListenConfig{
require.NoError(t, app.Listen(":0", ListenConfig{
DisableStartupMessage: true,
ListenerNetwork: NetworkTCP6,
ListenerAddrFunc: func(addr net.Addr) {
@ -321,14 +322,14 @@ func Test_Listen_ListenerNetwork(t *testing.T) {
},
}))
require.True(t, strings.Contains(network, "[::]:"))
require.Contains(t, network, "[::]:")
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.Listen(":0", ListenConfig{
require.NoError(t, app.Listen(":0", ListenConfig{
DisableStartupMessage: true,
ListenerNetwork: NetworkTCP4,
ListenerAddrFunc: func(addr net.Addr) {
@ -336,7 +337,7 @@ func Test_Listen_ListenerNetwork(t *testing.T) {
},
}))
require.True(t, strings.Contains(network, "0.0.0.0:"))
require.Contains(t, network, "0.0.0.0:")
}
// go test -run Test_Listen_Master_Process_Show_Startup_Message
@ -350,11 +351,11 @@ func Test_Listen_Master_Process_Show_Startup_Message(t *testing.T) {
startupMessage(":3000", true, strings.Repeat(",11111,22222,33333,44444,55555,60000", 10), cfg)
})
colors := Colors{}
require.True(t, strings.Contains(startupMessage, "https://127.0.0.1:3000"))
require.True(t, strings.Contains(startupMessage, "(bound on host 0.0.0.0 and port 3000)"))
require.True(t, strings.Contains(startupMessage, "Child PIDs"))
require.True(t, strings.Contains(startupMessage, "11111, 22222, 33333, 44444, 55555, 60000"))
require.True(t, strings.Contains(startupMessage, fmt.Sprintf("Prefork: %sEnabled%s", colors.Blue, colors.Reset)))
require.Contains(t, startupMessage, "https://127.0.0.1:3000")
require.Contains(t, startupMessage, "(bound on host 0.0.0.0 and port 3000)")
require.Contains(t, startupMessage, "Child PIDs")
require.Contains(t, startupMessage, "11111, 22222, 33333, 44444, 55555, 60000")
require.Contains(t, startupMessage, fmt.Sprintf("Prefork: %sEnabled%s", colors.Blue, colors.Reset))
}
// go test -run Test_Listen_Master_Process_Show_Startup_MessageWithAppName
@ -368,7 +369,7 @@ func Test_Listen_Master_Process_Show_Startup_MessageWithAppName(t *testing.T) {
app.startupMessage(":3000", true, strings.Repeat(",11111,22222,33333,44444,55555,60000", 10), cfg)
})
require.Equal(t, "Test App v3.0.0", app.Config().AppName)
require.True(t, strings.Contains(startupMessage, app.Config().AppName))
require.Contains(t, startupMessage, app.Config().AppName)
}
// go test -run Test_Listen_Master_Process_Show_Startup_MessageWithAppNameNonAscii
@ -383,7 +384,7 @@ func Test_Listen_Master_Process_Show_Startup_MessageWithAppNameNonAscii(t *testi
startupMessage := captureOutput(func() {
app.startupMessage(":3000", false, "", cfg)
})
require.True(t, strings.Contains(startupMessage, "Serveur de vérification des données"))
require.Contains(t, startupMessage, "Serveur de vérification des données")
}
// go test -run Test_Listen_Master_Process_Show_Startup_MessageWithDisabledPreforkAndCustomEndpoint
@ -398,10 +399,10 @@ func Test_Listen_Master_Process_Show_Startup_MessageWithDisabledPreforkAndCustom
app.startupMessage("server.com:8081", true, strings.Repeat(",11111,22222,33333,44444,55555,60000", 5), cfg)
})
colors := Colors{}
require.True(t, strings.Contains(startupMessage, fmt.Sprintf("%sINFO%s", colors.Green, colors.Reset)))
require.True(t, strings.Contains(startupMessage, fmt.Sprintf("%s%s%s", colors.Blue, appName, colors.Reset)))
require.True(t, strings.Contains(startupMessage, fmt.Sprintf("%s%s%s", colors.Blue, "https://server.com:8081", colors.Reset)))
require.True(t, strings.Contains(startupMessage, fmt.Sprintf("Prefork: %sDisabled%s", colors.Red, colors.Reset)))
require.Contains(t, startupMessage, fmt.Sprintf("%sINFO%s", colors.Green, colors.Reset))
require.Contains(t, startupMessage, fmt.Sprintf("%s%s%s", colors.Blue, appName, colors.Reset))
require.Contains(t, startupMessage, fmt.Sprintf("%s%s%s", colors.Blue, "https://server.com:8081", colors.Reset))
require.Contains(t, startupMessage, fmt.Sprintf("Prefork: %sDisabled%s", colors.Red, colors.Reset))
}
// go test -run Test_Listen_Print_Route
@ -411,10 +412,10 @@ func Test_Listen_Print_Route(t *testing.T) {
printRoutesMessage := captureOutput(func() {
app.printRoutesMessage()
})
require.True(t, strings.Contains(printRoutesMessage, MethodGet))
require.True(t, strings.Contains(printRoutesMessage, "/"))
require.True(t, strings.Contains(printRoutesMessage, "emptyHandler"))
require.True(t, strings.Contains(printRoutesMessage, "routeName"))
require.Contains(t, printRoutesMessage, MethodGet)
require.Contains(t, printRoutesMessage, "/")
require.Contains(t, printRoutesMessage, "emptyHandler")
require.Contains(t, printRoutesMessage, "routeName")
}
// go test -run Test_Listen_Print_Route_With_Group
@ -431,14 +432,14 @@ func Test_Listen_Print_Route_With_Group(t *testing.T) {
app.printRoutesMessage()
})
require.True(t, strings.Contains(printRoutesMessage, MethodGet))
require.True(t, strings.Contains(printRoutesMessage, "/"))
require.True(t, strings.Contains(printRoutesMessage, "emptyHandler"))
require.True(t, strings.Contains(printRoutesMessage, "/v1/test"))
require.True(t, strings.Contains(printRoutesMessage, "POST"))
require.True(t, strings.Contains(printRoutesMessage, "/v1/test/fiber"))
require.True(t, strings.Contains(printRoutesMessage, "PUT"))
require.True(t, strings.Contains(printRoutesMessage, "/v1/test/fiber/*"))
require.Contains(t, printRoutesMessage, MethodGet)
require.Contains(t, printRoutesMessage, "/")
require.Contains(t, printRoutesMessage, "emptyHandler")
require.Contains(t, printRoutesMessage, "/v1/test")
require.Contains(t, printRoutesMessage, "POST")
require.Contains(t, printRoutesMessage, "/v1/test/fiber")
require.Contains(t, printRoutesMessage, "PUT")
require.Contains(t, printRoutesMessage, "/v1/test/fiber/*")
}
func captureOutput(f func()) string {

View File

@ -26,7 +26,7 @@ func Test_App_Mount(t *testing.T) {
app := New()
app.Use("/john", micro)
resp, err := app.Test(httptest.NewRequest(MethodGet, "/john/doe", http.NoBody))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.Equal(t, uint32(1), app.handlersCount)
}
@ -76,15 +76,15 @@ func Test_App_Mount_Nested(t *testing.T) {
})
resp, err := app.Test(httptest.NewRequest(MethodGet, "/one/doe", http.NoBody))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
resp, err = app.Test(httptest.NewRequest(MethodGet, "/one/two/nested", http.NoBody))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
resp, err = app.Test(httptest.NewRequest(MethodGet, "/one/two/three/test", http.NoBody))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.Equal(t, uint32(3), app.handlersCount)
@ -101,7 +101,7 @@ func Test_App_Mount_Express_Behavior(t *testing.T) {
}
testEndpoint := func(app *App, route, expectedBody string, expectedStatusCode int) {
resp, err := app.Test(httptest.NewRequest(MethodGet, route, http.NoBody))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.Equal(t, expectedStatusCode, resp.StatusCode, "Status code")
@ -146,7 +146,7 @@ func Test_App_Mount_RoutePositions(t *testing.T) {
t.Parallel()
testEndpoint := func(app *App, route, expectedBody string) {
resp, err := app.Test(httptest.NewRequest(MethodGet, route, http.NoBody))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
@ -189,26 +189,26 @@ func Test_App_Mount_RoutePositions(t *testing.T) {
testEndpoint(app, "/subApp2/world", "hello")
routeStackGET := app.Stack()[0]
require.Equal(t, true, routeStackGET[0].use)
require.True(t, routeStackGET[0].use)
require.Equal(t, "/", routeStackGET[0].path)
require.Equal(t, true, routeStackGET[1].use)
require.True(t, routeStackGET[1].use)
require.Equal(t, "/", routeStackGET[1].path)
require.Equal(t, true, routeStackGET[0].pos < routeStackGET[1].pos, "wrong position of route 0")
require.Less(t, routeStackGET[0].pos, routeStackGET[1].pos, "wrong position of route 0")
require.Equal(t, false, routeStackGET[2].use)
require.False(t, routeStackGET[2].use)
require.Equal(t, "/bar", routeStackGET[2].path)
require.Equal(t, true, routeStackGET[1].pos < routeStackGET[2].pos, "wrong position of route 1")
require.Less(t, routeStackGET[1].pos, routeStackGET[2].pos, "wrong position of route 1")
require.Equal(t, true, routeStackGET[3].use)
require.True(t, routeStackGET[3].use)
require.Equal(t, "/", routeStackGET[3].path)
require.Equal(t, true, routeStackGET[2].pos < routeStackGET[3].pos, "wrong position of route 2")
require.Less(t, routeStackGET[2].pos, routeStackGET[3].pos, "wrong position of route 2")
require.Equal(t, false, routeStackGET[4].use)
require.False(t, routeStackGET[4].use)
require.Equal(t, "/subapp2/world", routeStackGET[4].path)
require.Equal(t, true, routeStackGET[3].pos < routeStackGET[4].pos, "wrong position of route 3")
require.Less(t, routeStackGET[3].pos, routeStackGET[4].pos, "wrong position of route 3")
require.Equal(t, 5, len(routeStackGET))
require.Len(t, routeStackGET, 5)
}
// go test -run Test_App_MountPath
@ -282,7 +282,7 @@ func Test_App_Group_Mount(t *testing.T) {
v1.Use("/john", micro)
resp, err := app.Test(httptest.NewRequest(MethodGet, "/v1/john/doe", http.NoBody))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
require.Equal(t, uint32(1), app.handlersCount)
}
@ -383,19 +383,19 @@ func Test_App_UseMountedErrorHandlerForBestPrefixMatch(t *testing.T) {
app.Use("/api", fiber)
resp, err := app.Test(httptest.NewRequest(MethodGet, "/api/sub", http.NoBody))
require.Equal(t, nil, err, "/api/sub req")
require.NoError(t, err, "/api/sub req")
require.Equal(t, 200, resp.StatusCode, "Status code")
b, err := io.ReadAll(resp.Body)
require.Equal(t, nil, err, "iotuil.ReadAll()")
require.NoError(t, err, "iotuil.ReadAll()")
require.Equal(t, "hi, i'm a custom sub fiber error", string(b), "Response body")
resp2, err := app.Test(httptest.NewRequest(MethodGet, "/api/sub/third", http.NoBody))
require.Equal(t, nil, err, "/api/sub/third req")
require.NoError(t, err, "/api/sub/third req")
require.Equal(t, 200, resp.StatusCode, "Status code")
b, err = io.ReadAll(resp2.Body)
require.Equal(t, nil, err, "iotuil.ReadAll()")
require.NoError(t, err, "iotuil.ReadAll()")
require.Equal(t, "hi, i'm a custom sub sub fiber error", string(b), "Third fiber Response body")
}
@ -405,15 +405,15 @@ func Test_Mount_Route_Names(t *testing.T) {
subApp1 := New()
subApp1.Get("/users", func(c Ctx) error {
url, err := c.GetRouteURL("add-user", Map{})
require.Equal(t, err, nil)
require.Equal(t, url, "/app1/users", "handler: app1.add-user") // the prefix is /app1 because of the mount
require.NoError(t, err)
require.Equal(t, "/app1/users", url, "handler: app1.add-user") // the prefix is /app1 because of the mount
// if subApp1 is not mounted, expected url just /users
return nil
}).Name("get-users")
subApp1.Post("/users", func(c Ctx) error {
route := c.App().GetRoute("get-users")
require.Equal(t, route.Method, MethodGet, "handler: app1.get-users method")
require.Equal(t, route.Path, "/app1/users", "handler: app1.get-users path")
require.Equal(t, MethodGet, route.Method, "handler: app1.get-users method")
require.Equal(t, "/app1/users", route.Path, "handler: app1.get-users path")
return nil
}).Name("add-user")
@ -432,30 +432,30 @@ func Test_Mount_Route_Names(t *testing.T) {
// take route directly from sub-app
route := subApp1.GetRoute("get-users")
require.Equal(t, route.Method, MethodGet)
require.Equal(t, route.Path, "/users")
require.Equal(t, MethodGet, route.Method)
require.Equal(t, "/users", route.Path)
route = subApp1.GetRoute("add-user")
require.Equal(t, route.Method, MethodPost)
require.Equal(t, route.Path, "/users")
require.Equal(t, MethodPost, route.Method)
require.Equal(t, "/users", route.Path)
// take route directly from sub-app with group
route = subApp2.GetRoute("users.get")
require.Equal(t, route.Method, MethodGet)
require.Equal(t, route.Path, "/users")
require.Equal(t, MethodGet, route.Method)
require.Equal(t, "/users", route.Path)
route = subApp2.GetRoute("users.add")
require.Equal(t, route.Method, MethodPost)
require.Equal(t, route.Path, "/users")
require.Equal(t, MethodPost, route.Method)
require.Equal(t, "/users", route.Path)
// take route from root app (using names of sub-apps)
route = rootApp.GetRoute("add-user")
require.Equal(t, route.Method, MethodPost)
require.Equal(t, route.Path, "/app1/users")
require.Equal(t, MethodPost, route.Method)
require.Equal(t, "/app1/users", route.Path)
route = rootApp.GetRoute("users.add")
require.Equal(t, route.Method, MethodPost)
require.Equal(t, route.Path, "/app2/users")
require.Equal(t, MethodPost, route.Method)
require.Equal(t, "/app2/users", route.Path)
// GetRouteURL inside handler
req := httptest.NewRequest(MethodGet, "/app1/users", nil)
@ -495,7 +495,7 @@ func Test_Ctx_Render_Mount(t *testing.T) {
resp, err := app.Test(httptest.NewRequest(MethodGet, "/hello/a", http.NoBody))
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
@ -551,7 +551,7 @@ func Test_Ctx_Render_Mount_ParentOrSubHasViews(t *testing.T) {
resp, err := app.Test(httptest.NewRequest(MethodGet, "/hello/world/a", http.NoBody))
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
body, err := io.ReadAll(resp.Body)
require.NoError(t, err)
@ -559,7 +559,7 @@ func Test_Ctx_Render_Mount_ParentOrSubHasViews(t *testing.T) {
resp, err = app.Test(httptest.NewRequest(MethodGet, "/test", http.NoBody))
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
body, err = io.ReadAll(resp.Body)
require.NoError(t, err)
@ -567,7 +567,7 @@ func Test_Ctx_Render_Mount_ParentOrSubHasViews(t *testing.T) {
resp, err = app.Test(httptest.NewRequest(MethodGet, "/hello/bruh/moment", http.NoBody))
require.Equal(t, StatusOK, resp.StatusCode, "Status code")
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
body, err = io.ReadAll(resp.Body)
require.NoError(t, err)
@ -596,7 +596,7 @@ func Test_Ctx_Render_MountGroup(t *testing.T) {
v1.Use("/john", micro)
resp, err := app.Test(httptest.NewRequest(MethodGet, "/v1/john/doe", http.NoBody))
require.Equal(t, nil, err, "app.Test(req)")
require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code")
body, err := io.ReadAll(resp.Body)

View File

@ -24,14 +24,14 @@ func Test_App_Prefork_Child_Process(t *testing.T) {
app := New()
err := app.prefork("invalid", nil, listenConfigDefault())
require.False(t, err == nil)
require.Error(t, err)
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.prefork("[::1]:", nil, ListenConfig{ListenerNetwork: NetworkTCP6}))
require.NoError(t, app.prefork("[::1]:", nil, ListenConfig{ListenerNetwork: NetworkTCP6}))
// Create tls certificate
cer, err := tls.LoadX509KeyPair("./.github/testdata/ssl.pem", "./.github/testdata/ssl.key")
@ -43,10 +43,10 @@ func Test_App_Prefork_Child_Process(t *testing.T) {
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.prefork("127.0.0.1:", config, listenConfigDefault()))
require.NoError(t, app.prefork("127.0.0.1:", config, listenConfigDefault()))
}
func Test_App_Prefork_Master_Process(t *testing.T) {
@ -57,15 +57,15 @@ func Test_App_Prefork_Master_Process(t *testing.T) {
go func() {
time.Sleep(1000 * time.Millisecond)
require.Nil(t, app.Shutdown())
require.NoError(t, app.Shutdown())
}()
require.Nil(t, app.prefork(":3000", nil, listenConfigDefault()))
require.NoError(t, app.prefork(":3000", nil, listenConfigDefault()))
dummyChildCmd.Store("invalid")
err := app.prefork("127.0.0.1:", nil, listenConfigDefault())
require.False(t, err == nil)
require.Error(t, err)
dummyChildCmd.Store("go")
}
@ -84,21 +84,21 @@ func Test_App_Prefork_Child_Process_Never_Show_Startup_Message(t *testing.T) {
New().startupProcess().startupMessage(":3000", false, "", listenConfigDefault())
require.Nil(t, w.Close())
require.NoError(t, w.Close())
out, err := io.ReadAll(r)
require.NoError(t, err)
require.Equal(t, 0, len(out))
require.Empty(t, out)
}
func setupIsChild(t *testing.T) {
t.Helper()
require.Nil(t, os.Setenv(envPreforkChildKey, envPreforkChildVal))
require.NoError(t, os.Setenv(envPreforkChildKey, envPreforkChildVal))
}
func teardownIsChild(t *testing.T) {
t.Helper()
require.Nil(t, os.Setenv(envPreforkChildKey, ""))
require.NoError(t, os.Setenv(envPreforkChildKey, ""))
}

View File

@ -325,7 +325,7 @@ func Test_Redirect_Request(t *testing.T) {
require.Equal(t, tc.ExpectedStatusCode, code)
require.Equal(t, tc.ExpectedBody, body)
require.Equal(t, tc.ExceptedErrsLen, len(errs))
require.Len(t, errs, tc.ExceptedErrsLen)
}
}

View File

@ -12,7 +12,6 @@ import (
"io"
"net/http/httptest"
"os"
"strings"
"testing"
"github.com/gofiber/utils/v2"
@ -353,7 +352,7 @@ func Test_Route_Static_Root(t *testing.T) {
body, err := io.ReadAll(resp.Body)
require.NoError(t, err, "app.Test(req)")
require.True(t, strings.Contains(app.getString(body), "color"))
require.Contains(t, app.getString(body), "color")
app = New()
app.Static("/", dir)
@ -368,7 +367,7 @@ func Test_Route_Static_Root(t *testing.T) {
body, err = io.ReadAll(resp.Body)
require.NoError(t, err, "app.Test(req)")
require.True(t, strings.Contains(app.getString(body), "color"))
require.Contains(t, app.getString(body), "color")
}
func Test_Route_Static_HasPrefix(t *testing.T) {
@ -394,7 +393,7 @@ func Test_Route_Static_HasPrefix(t *testing.T) {
body, err := io.ReadAll(resp.Body)
require.NoError(t, err, "app.Test(req)")
require.True(t, strings.Contains(app.getString(body), "color"))
require.Contains(t, app.getString(body), "color")
app = New()
app.Static("/static/", dir, Static{
@ -415,7 +414,7 @@ func Test_Route_Static_HasPrefix(t *testing.T) {
body, err = io.ReadAll(resp.Body)
require.NoError(t, err, "app.Test(req)")
require.True(t, strings.Contains(app.getString(body), "color"))
require.Contains(t, app.getString(body), "color")
app = New()
app.Static("/static", dir)
@ -434,7 +433,7 @@ func Test_Route_Static_HasPrefix(t *testing.T) {
body, err = io.ReadAll(resp.Body)
require.NoError(t, err, "app.Test(req)")
require.True(t, strings.Contains(app.getString(body), "color"))
require.Contains(t, app.getString(body), "color")
app = New()
app.Static("/static/", dir)
@ -453,7 +452,7 @@ func Test_Route_Static_HasPrefix(t *testing.T) {
body, err = io.ReadAll(resp.Body)
require.NoError(t, err, "app.Test(req)")
require.True(t, strings.Contains(app.getString(body), "color"))
require.Contains(t, app.getString(body), "color")
}
func Test_Router_NotFound(t *testing.T) {