diff --git a/cmd/internal/migrations/v3/common.go b/cmd/internal/migrations/v3/common.go index e6b177c..bc8870d 100644 --- a/cmd/internal/migrations/v3/common.go +++ b/cmd/internal/migrations/v3/common.go @@ -602,8 +602,7 @@ func MigrateSessionConfig(cmd *cobra.Command, cwd string, _, _ *semver.Version) err := internal.ChangeFileContent(cwd, func(content string) string { reConfig := regexp.MustCompile(`session\.Config{[^}]*}`) return reConfig.ReplaceAllStringFunc(content, func(s string) string { - s = strings.ReplaceAll(s, "Expiration:", "IdleTimeout:") - return s + return strings.ReplaceAll(s, "Expiration:", "IdleTimeout:") }) }) if err != nil { diff --git a/cmd/internal/migrations/v3/common_test.go b/cmd/internal/migrations/v3/common_test.go index 2982128..41bd251 100644 --- a/cmd/internal/migrations/v3/common_test.go +++ b/cmd/internal/migrations/v3/common_test.go @@ -834,6 +834,98 @@ var _ = session.New(session.Config{ assert.Contains(t, buf.String(), "Migrating session middleware configs") } +func Test_MigrateSessionConfig_KeyLookup_Cookie(t *testing.T) { + t.Parallel() + + dir, err := os.MkdirTemp("", "msessionkl_cookie") + require.NoError(t, err) + defer func() { require.NoError(t, os.RemoveAll(dir)) }() + + file := writeTempFile(t, dir, `package main +import "github.com/gofiber/fiber/v2/middleware/session" +var _ = session.New(session.Config{ + KeyLookup: "cookie:session_id", +})`) + + var buf bytes.Buffer + cmd := newCmd(&buf) + require.NoError(t, v3.MigrateSessionExtractor(cmd, dir, nil, nil)) + + content := readFile(t, file) + assert.NotContains(t, content, "KeyLookup") + assert.Contains(t, content, `Extractor: session.FromCookie("session_id")`) + assert.Contains(t, buf.String(), "Migrating session KeyLookup config") +} + +func Test_MigrateSessionConfig_KeyLookup_Header(t *testing.T) { + t.Parallel() + + dir, err := os.MkdirTemp("", "msessionkl_header") + require.NoError(t, err) + defer func() { require.NoError(t, os.RemoveAll(dir)) }() + + file := writeTempFile(t, dir, `package main +import "github.com/gofiber/fiber/v2/middleware/session" +var _ = session.New(session.Config{ + KeyLookup: "header:X-Session-ID", +})`) + + var buf bytes.Buffer + cmd := newCmd(&buf) + require.NoError(t, v3.MigrateSessionExtractor(cmd, dir, nil, nil)) + + content := readFile(t, file) + assert.NotContains(t, content, "KeyLookup") + assert.Contains(t, content, `Extractor: session.FromHeader("X-Session-ID")`) + assert.Contains(t, buf.String(), "Migrating session KeyLookup config") +} + +func Test_MigrateSessionConfig_KeyLookup_Query(t *testing.T) { + t.Parallel() + + dir, err := os.MkdirTemp("", "msessionkl_query") + require.NoError(t, err) + defer func() { require.NoError(t, os.RemoveAll(dir)) }() + + file := writeTempFile(t, dir, `package main +import "github.com/gofiber/fiber/v2/middleware/session" +var _ = session.New(session.Config{ + KeyLookup: "query:session_id", +})`) + + var buf bytes.Buffer + cmd := newCmd(&buf) + require.NoError(t, v3.MigrateSessionExtractor(cmd, dir, nil, nil)) + + content := readFile(t, file) + assert.NotContains(t, content, "KeyLookup") + assert.Contains(t, content, `Extractor: session.FromQuery("session_id")`) + assert.Contains(t, buf.String(), "Migrating session KeyLookup config") +} + +func Test_MigrateSessionConfig_KeyLookup_Unknown(t *testing.T) { + t.Parallel() + + dir, err := os.MkdirTemp("", "msessionkl_unknown") + require.NoError(t, err) + defer func() { require.NoError(t, os.RemoveAll(dir)) }() + + file := writeTempFile(t, dir, `package main +import "github.com/gofiber/fiber/v2/middleware/session" +var _ = session.New(session.Config{ + KeyLookup: "unknown:session_id", +})`) + + var buf bytes.Buffer + cmd := newCmd(&buf) + require.NoError(t, v3.MigrateSessionExtractor(cmd, dir, nil, nil)) + + content := readFile(t, file) + assert.NotContains(t, content, "KeyLookup") + assert.NotContains(t, content, "Extractor") + assert.Contains(t, buf.String(), "Migrating session KeyLookup config") +} + func Test_MigrateTimeoutConfig(t *testing.T) { t.Parallel()