👷 v3 (ci): fix some linter warnings

pull/2538/head
Muhammed Efe Çetin 2023-02-09 23:15:21 +03:00
parent c2749c36c2
commit 3168a60605
No known key found for this signature in database
GPG Key ID: 0AA4D45CBAA86F73
20 changed files with 68 additions and 60 deletions

View File

@ -1241,7 +1241,6 @@ func Test_App_Route(t *testing.T) {
resp, err = app.Test(httptest.NewRequest(MethodGet, "/test/v1/v2/v3", nil)) resp, err = app.Test(httptest.NewRequest(MethodGet, "/test/v1/v2/v3", nil))
require.NoError(t, err, "app.Test(req)") require.NoError(t, err, "app.Test(req)")
require.Equal(t, 200, resp.StatusCode, "Status code") require.Equal(t, 200, resp.StatusCode, "Status code")
} }
func Test_App_Deep_Group(t *testing.T) { func Test_App_Deep_Group(t *testing.T) {

View File

@ -63,7 +63,6 @@ func Test_Client_Unsupported_Protocol(t *testing.T) {
require.Equal(t, 1, len(errs)) require.Equal(t, 1, len(errs))
require.Equal(t, `unsupported protocol "ftp". http and https are supported`, require.Equal(t, `unsupported protocol "ftp". http and https are supported`,
errs[0].Error()) errs[0].Error())
} }
func Test_Client_Get(t *testing.T) { func Test_Client_Get(t *testing.T) {

View File

@ -559,12 +559,15 @@ func Test_Ctx_Format(t *testing.T) {
require.Error(t, err) require.Error(t, err)
c.Request().Header.Set(HeaderAccept, MIMETextPlain) c.Request().Header.Set(HeaderAccept, MIMETextPlain)
c.Format(Map{}) err = c.Format(Map{})
require.NoError(t, err)
require.Equal(t, "map[]", string(c.Response().Body())) require.Equal(t, "map[]", string(c.Response().Body()))
type broken string type broken string
c.Request().Header.Set(HeaderAccept, "broken/accept") c.Request().Header.Set(HeaderAccept, "broken/accept")
c.Format(broken("Hello, World!")) require.NoError(t, err)
err = c.Format(broken("Hello, World!"))
require.NoError(t, err)
require.Equal(t, `Hello, World!`, string(c.Response().Body())) require.Equal(t, `Hello, World!`, string(c.Response().Body()))
} }
@ -2565,7 +2568,6 @@ func Test_Ctx_RenderWithLocals(t *testing.T) {
defer bytebufferpool.Put(buf) defer bytebufferpool.Put(buf)
require.Equal(t, "<h1>Hello, World!</h1>", string(c.Response().Body())) require.Equal(t, "<h1>Hello, World!</h1>", string(c.Response().Body()))
} }
func Test_Ctx_RenderWithBindVars(t *testing.T) { func Test_Ctx_RenderWithBindVars(t *testing.T) {
@ -3073,13 +3075,16 @@ func Test_Ctx_SendStream(t *testing.T) {
app := New() app := New()
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.SendStream(bytes.NewReader([]byte("Don't crash please"))) err := c.SendStream(bytes.NewReader([]byte("Don't crash please")))
require.NoError(t, err)
require.Equal(t, "Don't crash please", string(c.Response().Body())) require.Equal(t, "Don't crash please", string(c.Response().Body()))
c.SendStream(bytes.NewReader([]byte("Don't crash please")), len([]byte("Don't crash please"))) err = c.SendStream(bytes.NewReader([]byte("Don't crash please")), len([]byte("Don't crash please")))
require.NoError(t, err)
require.Equal(t, "Don't crash please", string(c.Response().Body())) require.Equal(t, "Don't crash please", string(c.Response().Body()))
c.SendStream(bufio.NewReader(bytes.NewReader([]byte("Hello bufio")))) err = c.SendStream(bufio.NewReader(bytes.NewReader([]byte("Hello bufio"))))
require.NoError(t, err)
require.Equal(t, "Hello bufio", string(c.Response().Body())) require.Equal(t, "Hello bufio", string(c.Response().Body()))
} }
@ -3215,8 +3220,10 @@ func Test_Ctx_Write(t *testing.T) {
app := New() app := New()
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.Write([]byte("Hello, ")) _, err := c.Write([]byte("Hello, "))
c.Write([]byte("World!")) require.NoError(t, err)
_, err = c.Write([]byte("World!"))
require.NoError(t, err)
require.Equal(t, "Hello, World!", string(c.Response().Body())) require.Equal(t, "Hello, World!", string(c.Response().Body()))
} }
@ -3270,8 +3277,10 @@ func Test_Ctx_WriteString(t *testing.T) {
app := New() app := New()
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.WriteString("Hello, ") _, err := c.WriteString("Hello, ")
c.WriteString("World!") require.NoError(t, err)
_, err = c.WriteString("World!")
require.NoError(t, err)
require.Equal(t, "Hello, World!", string(c.Response().Body())) require.Equal(t, "Hello, World!", string(c.Response().Body()))
} }

View File

@ -714,7 +714,7 @@ const (
ConstraintBool = "bool" ConstraintBool = "bool"
ConstraintFloat = "float" ConstraintFloat = "float"
ConstraintAlpha = "alpha" ConstraintAlpha = "alpha"
ConstraintGuid = "guid" //nolint:revive,stylecheck // TODO: Rename to "ConstraintGUID" in v3 ConstraintGUID = "guid"
ConstraintMinLen = "minLen" ConstraintMinLen = "minLen"
ConstraintMaxLen = "maxLen" ConstraintMaxLen = "maxLen"
ConstraintLen = "len" ConstraintLen = "len"

View File

@ -41,7 +41,6 @@ func Test_Utils_UniqueRouteStack(t *testing.T) {
route2, route2,
route3, route3,
})) }))
} }
func Test_Utils_getGroupPath(t *testing.T) { func Test_Utils_getGroupPath(t *testing.T) {
@ -143,7 +142,6 @@ func Test_Utils_IsNoCache(t *testing.T) {
ok := isNoCache(c.string) ok := isNoCache(c.string)
require.Equal(t, c.bool, ok, require.Equal(t, c.bool, ok,
fmt.Sprintf("want %t, got isNoCache(%s)=%t", c.bool, c.string, ok)) fmt.Sprintf("want %t, got isNoCache(%s)=%t", c.bool, c.string, ok))
} }
} }

View File

@ -145,7 +145,7 @@ func (app *App) Listen(addr string, config ...ListenConfig) error {
if cfg.CertFile != "" && cfg.CertKeyFile != "" { if cfg.CertFile != "" && cfg.CertKeyFile != "" {
cert, err := tls.LoadX509KeyPair(cfg.CertFile, cfg.CertKeyFile) cert, err := tls.LoadX509KeyPair(cfg.CertFile, cfg.CertKeyFile)
if err != nil { if err != nil {
return fmt.Errorf("tls: cannot load TLS key pair from certFile=%q and keyFile=%q: %s", cfg.CertFile, cfg.CertKeyFile, err) return fmt.Errorf("tls: cannot load TLS key pair from certFile=%q and keyFile=%q: %w", cfg.CertFile, cfg.CertKeyFile, err)
} }
tlsHandler := &TLSHandler{} tlsHandler := &TLSHandler{}
@ -241,7 +241,7 @@ func (app *App) Listener(ln net.Listener, config ...ListenConfig) error {
// Prefork is not supported for custom listeners // Prefork is not supported for custom listeners
if cfg.EnablePrefork { if cfg.EnablePrefork {
fmt.Println("[Warning] Prefork isn't supported for custom listeners.") log.Print("[Warning] Prefork isn't supported for custom listeners.")
} }
return app.server.Serve(ln) return app.server.Serve(ln)

View File

@ -168,7 +168,6 @@ func Test_Listen_MutualTLS(t *testing.T) {
CertKeyFile: "./.github/testdata/ssl.key", CertKeyFile: "./.github/testdata/ssl.key",
CertClientFile: "./.github/testdata/ca-chain.cert.pem", CertClientFile: "./.github/testdata/ca-chain.cert.pem",
})) }))
} }
// go test -run Test_Listen_MutualTLS_Prefork // go test -run Test_Listen_MutualTLS_Prefork
@ -198,7 +197,6 @@ func Test_Listen_MutualTLS_Prefork(t *testing.T) {
CertKeyFile: "./.github/testdata/ssl.key", CertKeyFile: "./.github/testdata/ssl.key",
CertClientFile: "./.github/testdata/ca-chain.cert.pem", CertClientFile: "./.github/testdata/ca-chain.cert.pem",
})) }))
} }
// go test -run Test_Listener // go test -run Test_Listener
@ -351,7 +349,6 @@ func Test_Listen_Master_Process_Show_Startup_Message(t *testing.T) {
startupMessage(":3000", true, strings.Repeat(",11111,22222,33333,44444,55555,60000", 10), cfg) startupMessage(":3000", true, strings.Repeat(",11111,22222,33333,44444,55555,60000", 10), cfg)
}) })
colors := Colors{} colors := Colors{}
fmt.Println(startupMessage)
require.True(t, strings.Contains(startupMessage, "https://127.0.0.1:3000")) 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, "(bound on host 0.0.0.0 and port 3000)"))
require.True(t, strings.Contains(startupMessage, "Child PIDs")) require.True(t, strings.Contains(startupMessage, "Child PIDs"))
@ -369,7 +366,6 @@ func Test_Listen_Master_Process_Show_Startup_MessageWithAppName(t *testing.T) {
startupMessage := captureOutput(func() { startupMessage := captureOutput(func() {
app.startupMessage(":3000", true, strings.Repeat(",11111,22222,33333,44444,55555,60000", 10), cfg) app.startupMessage(":3000", true, strings.Repeat(",11111,22222,33333,44444,55555,60000", 10), cfg)
}) })
fmt.Println(startupMessage)
require.Equal(t, "Test App v3.0.0", app.Config().AppName) require.Equal(t, "Test App v3.0.0", app.Config().AppName)
require.True(t, strings.Contains(startupMessage, app.Config().AppName)) require.True(t, strings.Contains(startupMessage, app.Config().AppName))
} }
@ -386,7 +382,6 @@ func Test_Listen_Master_Process_Show_Startup_MessageWithAppNameNonAscii(t *testi
startupMessage := captureOutput(func() { startupMessage := captureOutput(func() {
app.startupMessage(":3000", false, "", cfg) app.startupMessage(":3000", false, "", cfg)
}) })
fmt.Println(startupMessage)
require.True(t, strings.Contains(startupMessage, "Serveur de vérification des données")) require.True(t, strings.Contains(startupMessage, "Serveur de vérification des données"))
} }
@ -402,7 +397,6 @@ func Test_Listen_Master_Process_Show_Startup_MessageWithDisabledPreforkAndCustom
app.startupMessage("server.com:8081", true, strings.Repeat(",11111,22222,33333,44444,55555,60000", 5), cfg) app.startupMessage("server.com:8081", true, strings.Repeat(",11111,22222,33333,44444,55555,60000", 5), cfg)
}) })
colors := Colors{} colors := Colors{}
fmt.Println(startupMessage)
require.True(t, strings.Contains(startupMessage, fmt.Sprintf("%sINFO%s", colors.Green, colors.Reset))) 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, 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("%s%s%s", colors.Blue, "https://server.com:8081", colors.Reset)))
@ -416,7 +410,6 @@ func Test_Listen_Print_Route(t *testing.T) {
printRoutesMessage := captureOutput(func() { printRoutesMessage := captureOutput(func() {
app.printRoutesMessage() app.printRoutesMessage()
}) })
fmt.Println(printRoutesMessage)
require.True(t, strings.Contains(printRoutesMessage, MethodGet)) require.True(t, strings.Contains(printRoutesMessage, MethodGet))
require.True(t, strings.Contains(printRoutesMessage, "/")) require.True(t, strings.Contains(printRoutesMessage, "/"))
require.True(t, strings.Contains(printRoutesMessage, "emptyHandler")) require.True(t, strings.Contains(printRoutesMessage, "emptyHandler"))

View File

@ -14,6 +14,7 @@ import (
"testing" "testing"
"github.com/gofiber/fiber/v3" "github.com/gofiber/fiber/v3"
"github.com/stretchr/testify/require"
"github.com/valyala/fasthttp" "github.com/valyala/fasthttp"
) )
@ -94,7 +95,8 @@ func Test_HTTPHandler(t *testing.T) {
w.Header().Set("Header1", "value1") w.Header().Set("Header1", "value1")
w.Header().Set("Header2", "value2") w.Header().Set("Header2", "value2")
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
fmt.Fprintf(w, "request body is %q", body) _, err = fmt.Fprintf(w, "request body is %q", body)
require.NoError(t, err)
} }
fiberH := HTTPHandlerFunc(http.HandlerFunc(nethttpH)) fiberH := HTTPHandlerFunc(http.HandlerFunc(nethttpH))
fiberH = setFiberContextValueMiddleware(fiberH, expectedContextKey, expectedContextValue) fiberH = setFiberContextValueMiddleware(fiberH, expectedContextKey, expectedContextValue)
@ -211,7 +213,7 @@ func Test_FiberAppDefaultPort(t *testing.T) {
testFiberToHandlerFunc(t, true, fiber.New()) testFiberToHandlerFunc(t, true, fiber.New())
} }
func testFiberToHandlerFunc(t *testing.T, checkDefaultPort bool, app ...*fiber.App) { func testFiberToHandlerFunc(t *testing.T, checkDefaultPort bool, app ...*fiber.App) { //revive:disable-line:flag-parameter
expectedMethod := fiber.MethodPost expectedMethod := fiber.MethodPost
expectedRequestURI := "/foo/bar?baz=123" expectedRequestURI := "/foo/bar?baz=123"
expectedBody := "body 123 foo bar baz" expectedBody := "body 123 foo bar baz"

View File

@ -22,7 +22,7 @@ func New(config ...Config) fiber.Handler {
crc32q := crc32.MakeTable(crcPol) crc32q := crc32.MakeTable(crcPol)
// Return new handler // Return new handler
return func(c fiber.Ctx) (err error) { return func(c fiber.Ctx) error {
// Don't execute middleware if Next returns true // Don't execute middleware if Next returns true
if cfg.Next != nil && cfg.Next(c) { if cfg.Next != nil && cfg.Next(c) {
return c.Next() return c.Next()

View File

@ -70,8 +70,8 @@ func dirList(c fiber.Ctx, f fs.File) error {
return nil return nil
} }
func openFile(fs fs.FS, name string) (fs.File, error) { func openFile(filesystem fs.FS, name string) (fs.File, error) {
name = filepath.ToSlash(name) name = filepath.ToSlash(name)
return fs.Open(name) return filesystem.Open(name)
} }

View File

@ -103,7 +103,6 @@ func New(config ...Config) fiber.Handler {
} }
if cfg.PermissionPolicy != "" { if cfg.PermissionPolicy != "" {
c.Set(fiber.HeaderPermissionsPolicy, cfg.PermissionPolicy) c.Set(fiber.HeaderPermissionsPolicy, cfg.PermissionPolicy)
} }
return c.Next() return c.Next()
} }

View File

@ -68,7 +68,7 @@ func New(config ...Config) fiber.Handler {
} }
// Return new handler // Return new handler
return func(c fiber.Ctx) (err error) { return func(c fiber.Ctx) error {
// Don't execute middleware if Next returns true // Don't execute middleware if Next returns true
if cfg.Next != nil && cfg.Next(c) { if cfg.Next != nil && cfg.Next(c) {
return c.Next() return c.Next()

View File

@ -47,7 +47,7 @@ func New(config ...Config) fiber.Handler {
cfg.rulesRegex = map[*regexp.Regexp]string{} cfg.rulesRegex = map[*regexp.Regexp]string{}
// Initialize // Initialize
for k, v := range cfg.Rules { for k, v := range cfg.Rules {
k = strings.Replace(k, "*", "(.*)", -1) k = strings.ReplaceAll(k, "*", "(.*)")
k += "$" k += "$"
cfg.rulesRegex[regexp.MustCompile(k)] = v cfg.rulesRegex[regexp.MustCompile(k)] = v
} }

View File

@ -6,6 +6,7 @@
package redirect package redirect
import ( import (
"context"
"net/http" "net/http"
"testing" "testing"
@ -110,7 +111,7 @@ func Test_Redirect(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
req, err := http.NewRequest(fiber.MethodGet, tt.url, nil) req, err := http.NewRequestWithContext(context.Background(), fiber.MethodGet, tt.url, nil)
require.NoError(t, err) require.NoError(t, err)
req.Header.Set("Location", "github.com/gofiber/redirect") req.Header.Set("Location", "github.com/gofiber/redirect")
resp, err := app.Test(req) resp, err := app.Test(req)

View File

@ -282,7 +282,8 @@ func Test_Ctx_Render_Mount(t *testing.T) {
t.Parallel() t.Parallel()
engine := &testTemplateEngine{} engine := &testTemplateEngine{}
engine.Load() err := engine.Load()
require.NoError(t, err)
sub := New(Config{ sub := New(Config{
Views: engine, Views: engine,
@ -376,14 +377,14 @@ func Test_Ctx_Render_Mount_ParentOrSubHasViews(t *testing.T) {
body, err = io.ReadAll(resp.Body) body, err = io.ReadAll(resp.Body)
require.Equal(t, nil, err) require.Equal(t, nil, err)
require.Equal(t, "<h1>I'm Bruh</h1>", string(body)) require.Equal(t, "<h1>I'm Bruh</h1>", string(body))
} }
func Test_Ctx_Render_MountGroup(t *testing.T) { func Test_Ctx_Render_MountGroup(t *testing.T) {
t.Parallel() t.Parallel()
engine := &testTemplateEngine{} engine := &testTemplateEngine{}
engine.Load() err := engine.Load()
require.NoError(t, err)
micro := New(Config{ micro := New(Config{
Views: engine, Views: engine,

View File

@ -617,7 +617,7 @@ func getParamConstraintType(constraintPart string) TypeConstraint {
return floatConstraint return floatConstraint
case ConstraintAlpha: case ConstraintAlpha:
return alphaConstraint return alphaConstraint
case ConstraintGuid: case ConstraintGUID:
return guidConstraint return guidConstraint
case ConstraintMinLen, ConstraintMinLenLower: case ConstraintMinLen, ConstraintMinLenLower:
return minLenConstraint return minLenConstraint

View File

@ -133,7 +133,6 @@ func Test_Path_parseRoute(t *testing.T) {
params: []string{"*1", "*2"}, params: []string{"*1", "*2"},
wildCardCount: 2, wildCardCount: 2,
}, rp) }, rp)
} }
// go test -race -run Test_Path_matchParams // go test -race -run Test_Path_matchParams

View File

@ -171,7 +171,6 @@ func (r *Redirect) OldInput(key string) string {
} }
} }
return "" return ""
} }
// Redirect to the URL derived from the specified path, with specified status. // Redirect to the URL derived from the specified path, with specified status.
@ -204,10 +203,10 @@ func (r *Redirect) Route(name string, config ...RedirectConfig) error {
// flash messages // flash messages
for i, message := range r.messages { for i, message := range r.messages {
_, _ = messageText.WriteString(message) _, _ = messageText.WriteString(message) //nolint:errcheck // Always return nil
// when there are more messages or oldInput -> add a comma // when there are more messages or oldInput -> add a comma
if len(r.messages)-1 != i || (len(r.messages)-1 == i && len(r.oldInput) > 0) { if len(r.messages)-1 != i || (len(r.messages)-1 == i && len(r.oldInput) > 0) {
_, _ = messageText.WriteString(CookieDataSeparator) _, _ = messageText.WriteString(CookieDataSeparator) //nolint:errcheck // Always return nil
} }
} }
r.messages = r.messages[:0] r.messages = r.messages[:0]
@ -215,9 +214,9 @@ func (r *Redirect) Route(name string, config ...RedirectConfig) error {
// old input data // old input data
i := 1 i := 1
for k, v := range r.oldInput { for k, v := range r.oldInput {
_, _ = messageText.WriteString(OldInputDataPrefix + k + CookieDataAssigner + v) _, _ = messageText.WriteString(OldInputDataPrefix + k + CookieDataAssigner + v) //nolint:errcheck // Always return nil
if len(r.oldInput) != i { if len(r.oldInput) != i {
_, _ = messageText.WriteString(CookieDataSeparator) _, _ = messageText.WriteString(CookieDataSeparator) //nolint:errcheck // Always return nil
} }
i++ i++
} }
@ -236,10 +235,10 @@ func (r *Redirect) Route(name string, config ...RedirectConfig) error {
i := 1 i := 1
for k, v := range cfg.Queries { for k, v := range cfg.Queries {
_, _ = queryText.WriteString(k + "=" + v) _, _ = queryText.WriteString(k + "=" + v) //nolint:errcheck // Always return nil
if i != len(cfg.Queries) { if i != len(cfg.Queries) {
_, _ = queryText.WriteString("&") _, _ = queryText.WriteString("&") //nolint:errcheck // Always return nil
} }
i++ i++
} }

View File

@ -22,11 +22,13 @@ func Test_Redirect_To(t *testing.T) {
app := New() app := New()
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.Redirect().To("http://default.com") err := c.Redirect().To("http://default.com")
require.NoError(t, err)
require.Equal(t, 302, c.Response().StatusCode()) require.Equal(t, 302, c.Response().StatusCode())
require.Equal(t, "http://default.com", string(c.Response().Header.Peek(HeaderLocation))) require.Equal(t, "http://default.com", string(c.Response().Header.Peek(HeaderLocation)))
c.Redirect().Status(301).To("http://example.com") err = c.Redirect().Status(301).To("http://example.com")
require.NoError(t, err)
require.Equal(t, 301, c.Response().StatusCode()) require.Equal(t, 301, c.Response().StatusCode())
require.Equal(t, "http://example.com", string(c.Response().Header.Peek(HeaderLocation))) require.Equal(t, "http://example.com", string(c.Response().Header.Peek(HeaderLocation)))
} }
@ -40,11 +42,12 @@ func Test_Redirect_Route_WithParams(t *testing.T) {
}).Name("user") }).Name("user")
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.Redirect().Route("user", RedirectConfig{ err := c.Redirect().Route("user", RedirectConfig{
Params: Map{ Params: Map{
"name": "fiber", "name": "fiber",
}, },
}) })
require.NoError(t, err)
require.Equal(t, 302, c.Response().StatusCode()) require.Equal(t, 302, c.Response().StatusCode())
require.Equal(t, "/user/fiber", string(c.Response().Header.Peek(HeaderLocation))) require.Equal(t, "/user/fiber", string(c.Response().Header.Peek(HeaderLocation)))
} }
@ -58,12 +61,13 @@ func Test_Redirect_Route_WithParams_WithQueries(t *testing.T) {
}).Name("user") }).Name("user")
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.Redirect().Route("user", RedirectConfig{ err := c.Redirect().Route("user", RedirectConfig{
Params: Map{ Params: Map{
"name": "fiber", "name": "fiber",
}, },
Queries: map[string]string{"data[0][name]": "john", "data[0][age]": "10", "test": "doe"}, Queries: map[string]string{"data[0][name]": "john", "data[0][age]": "10", "test": "doe"},
}) })
require.NoError(t, err)
require.Equal(t, 302, c.Response().StatusCode()) require.Equal(t, 302, c.Response().StatusCode())
// analysis of query parameters with url parsing, since a map pass is always randomly ordered // analysis of query parameters with url parsing, since a map pass is always randomly ordered
location, err := url.Parse(string(c.Response().Header.Peek(HeaderLocation))) location, err := url.Parse(string(c.Response().Header.Peek(HeaderLocation)))
@ -81,11 +85,12 @@ func Test_Redirect_Route_WithOptionalParams(t *testing.T) {
}).Name("user") }).Name("user")
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.Redirect().Route("user", RedirectConfig{ err := c.Redirect().Route("user", RedirectConfig{
Params: Map{ Params: Map{
"name": "fiber", "name": "fiber",
}, },
}) })
require.NoError(t, err)
require.Equal(t, 302, c.Response().StatusCode()) require.Equal(t, 302, c.Response().StatusCode())
require.Equal(t, "/user/fiber", string(c.Response().Header.Peek(HeaderLocation))) require.Equal(t, "/user/fiber", string(c.Response().Header.Peek(HeaderLocation)))
} }
@ -99,7 +104,8 @@ func Test_Redirect_Route_WithOptionalParamsWithoutValue(t *testing.T) {
}).Name("user") }).Name("user")
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.Redirect().Route("user") err := c.Redirect().Route("user")
require.NoError(t, err)
require.Equal(t, 302, c.Response().StatusCode()) require.Equal(t, 302, c.Response().StatusCode())
require.Equal(t, "/user/", string(c.Response().Header.Peek(HeaderLocation))) require.Equal(t, "/user/", string(c.Response().Header.Peek(HeaderLocation)))
} }
@ -113,11 +119,12 @@ func Test_Redirect_Route_WithGreedyParameters(t *testing.T) {
}).Name("user") }).Name("user")
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.Redirect().Route("user", RedirectConfig{ err := c.Redirect().Route("user", RedirectConfig{
Params: Map{ Params: Map{
"+": "test/routes", "+": "test/routes",
}, },
}) })
require.NoError(t, err)
require.Equal(t, 302, c.Response().StatusCode()) require.Equal(t, 302, c.Response().StatusCode())
require.Equal(t, "/user/test/routes", string(c.Response().Header.Peek(HeaderLocation))) require.Equal(t, "/user/test/routes", string(c.Response().Header.Peek(HeaderLocation)))
} }
@ -131,11 +138,12 @@ func Test_Redirect_Back(t *testing.T) {
}).Name("home") }).Name("home")
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.Redirect().Back("/") err := c.Redirect().Back("/")
require.NoError(t, err)
require.Equal(t, 302, c.Response().StatusCode()) require.Equal(t, 302, c.Response().StatusCode())
require.Equal(t, "/", string(c.Response().Header.Peek(HeaderLocation))) require.Equal(t, "/", string(c.Response().Header.Peek(HeaderLocation)))
err := c.Redirect().Back() err = c.Redirect().Back()
require.Equal(t, 500, c.Response().StatusCode()) require.Equal(t, 500, c.Response().StatusCode())
require.ErrorAs(t, ErrRedirectBackNoFallback, &err) require.ErrorAs(t, ErrRedirectBackNoFallback, &err)
} }
@ -153,7 +161,8 @@ func Test_Redirect_Back_WithReferer(t *testing.T) {
c := app.NewCtx(&fasthttp.RequestCtx{}) c := app.NewCtx(&fasthttp.RequestCtx{})
c.Request().Header.Set(HeaderReferer, "/back") c.Request().Header.Set(HeaderReferer, "/back")
c.Redirect().Back("/") err := c.Redirect().Back("/")
require.NoError(t, err)
require.Equal(t, 302, c.Response().StatusCode()) require.Equal(t, 302, c.Response().StatusCode())
require.Equal(t, "/back", c.Get(HeaderReferer)) require.Equal(t, "/back", c.Get(HeaderReferer))
require.Equal(t, "/back", string(c.Response().Header.Peek(HeaderLocation))) require.Equal(t, "/back", string(c.Response().Header.Peek(HeaderLocation)))
@ -170,8 +179,8 @@ func Test_Redirect_Route_WithFlashMessages(t *testing.T) {
c := app.NewCtx(&fasthttp.RequestCtx{}).(*DefaultCtx) c := app.NewCtx(&fasthttp.RequestCtx{}).(*DefaultCtx)
c.Redirect().With("success", "1").With("message", "test").Route("user") err := c.Redirect().With("success", "1").With("message", "test").Route("user")
require.NoError(t, err)
require.Equal(t, 302, c.Response().StatusCode()) require.Equal(t, 302, c.Response().StatusCode())
require.Equal(t, "/user", string(c.Response().Header.Peek(HeaderLocation))) require.Equal(t, "/user", string(c.Response().Header.Peek(HeaderLocation)))
@ -194,8 +203,8 @@ func Test_Redirect_Route_WithOldInput(t *testing.T) {
c := app.NewCtx(&fasthttp.RequestCtx{}).(*DefaultCtx) c := app.NewCtx(&fasthttp.RequestCtx{}).(*DefaultCtx)
c.Request().URI().SetQueryString("id=1&name=tom") c.Request().URI().SetQueryString("id=1&name=tom")
c.Redirect().With("success", "1").With("message", "test").WithInput().Route("user") err := c.Redirect().With("success", "1").With("message", "test").WithInput().Route("user")
require.NoError(t, err)
require.Equal(t, 302, c.Response().StatusCode()) require.Equal(t, 302, c.Response().StatusCode())
require.Equal(t, "/user", string(c.Response().Header.Peek(HeaderLocation))) require.Equal(t, "/user", string(c.Response().Header.Peek(HeaderLocation)))

View File

@ -203,7 +203,7 @@ func (app *App) handler(rctx *fasthttp.RequestCtx) {
// handle invalid http method directly // handle invalid http method directly
if app.methodInt(c.Method()) == -1 { if app.methodInt(c.Method()) == -1 {
_ = c.SendStatus(StatusNotImplemented) _ = c.SendStatus(StatusNotImplemented) //nolint:errcheck // Always return nil
return return
} }