Skip to content

Commit c385b2e

Browse files
committed
test(csrf): cover cookie config warnings
1 parent 3b2af61 commit c385b2e

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

middleware/csrf/csrf_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package csrf
22

33
import (
4+
"bytes"
45
"net/http"
56
"net/http/httptest"
7+
"os"
68
"strings"
79
"testing"
810
"time"
911

1012
"github.com/gofiber/fiber/v3"
13+
"github.com/gofiber/fiber/v3/log"
1114
"github.com/gofiber/fiber/v3/middleware/session"
1215
"github.com/gofiber/utils/v2"
1316
"github.com/stretchr/testify/require"
@@ -1594,3 +1597,43 @@ func Test_CSRF_FromContextMethods_Invalid(t *testing.T) {
15941597
require.NoError(t, err)
15951598
require.Equal(t, fiber.StatusOK, resp.StatusCode)
15961599
}
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

Comments
 (0)