|
1 | 1 | package csrf
|
2 | 2 |
|
3 | 3 | import (
|
| 4 | + "bytes" |
4 | 5 | "net/http"
|
5 | 6 | "net/http/httptest"
|
| 7 | + "os" |
6 | 8 | "strings"
|
7 | 9 | "testing"
|
8 | 10 | "time"
|
9 | 11 |
|
10 | 12 | "github.com/gofiber/fiber/v3"
|
| 13 | + "github.com/gofiber/fiber/v3/log" |
11 | 14 | "github.com/gofiber/fiber/v3/middleware/session"
|
12 | 15 | "github.com/gofiber/utils/v2"
|
13 | 16 | "github.com/stretchr/testify/require"
|
@@ -1594,3 +1597,43 @@ func Test_CSRF_FromContextMethods_Invalid(t *testing.T) {
|
1594 | 1597 | require.NoError(t, err)
|
1595 | 1598 | require.Equal(t, fiber.StatusOK, resp.StatusCode)
|
1596 | 1599 | }
|
| 1600 | + |
| 1601 | +func Test_configDefault_WarnCookieSameSite(t *testing.T) { |
| 1602 | + var buf bytes.Buffer |
| 1603 | + log.SetOutput(&buf) |
| 1604 | + t.Cleanup(func() { log.SetOutput(os.Stderr) }) |
| 1605 | + |
| 1606 | + cfg := configDefault(Config{ |
| 1607 | + KeyLookup: "cookie:csrf", |
| 1608 | + CookieSameSite: "None", |
| 1609 | + }) |
| 1610 | + |
| 1611 | + require.Equal(t, "csrf", cfg.CookieName) |
| 1612 | + require.Contains(t, buf.String(), "Cookie extractor is only recommended for use with SameSite=Lax or SameSite=Strict") |
| 1613 | +} |
| 1614 | + |
| 1615 | +func Test_deleteTokenFromStorage(t *testing.T) { |
| 1616 | + t.Parallel() |
| 1617 | + |
| 1618 | + app := fiber.New() |
| 1619 | + ctx := app.AcquireCtx(&fasthttp.RequestCtx{}) |
| 1620 | + defer app.ReleaseCtx(ctx) |
| 1621 | + |
| 1622 | + token := "token123" |
| 1623 | + dummy := []byte("dummy") |
| 1624 | + |
| 1625 | + store := session.NewStore() |
| 1626 | + sm := newSessionManager(store) |
| 1627 | + stm := newStorageManager(nil) |
| 1628 | + |
| 1629 | + sm.setRaw(ctx, token, dummy, time.Minute) |
| 1630 | + deleteTokenFromStorage(ctx, token, Config{Session: store}, sm, stm) |
| 1631 | + require.Nil(t, sm.getRaw(ctx, token, dummy)) |
| 1632 | + |
| 1633 | + sm2 := newSessionManager(nil) |
| 1634 | + stm2 := newStorageManager(nil) |
| 1635 | + |
| 1636 | + stm2.setRaw(token, dummy, time.Minute) |
| 1637 | + deleteTokenFromStorage(ctx, token, Config{}, sm2, stm2) |
| 1638 | + require.Nil(t, stm2.getRaw(token)) |
| 1639 | +} |
0 commit comments