Home / Function/ Test_Session_Save_AbsoluteTimeout() — fiber Function Reference

Test_Session_Save_AbsoluteTimeout() — fiber Function Reference

Architecture documentation for the Test_Session_Save_AbsoluteTimeout() function in session_test.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  3fef8efc_d675_d026_3afc_7ca2094470b6["Test_Session_Save_AbsoluteTimeout()"]
  397e6e82_749b_4ef2_9365_02be671c59f7["session_test.go"]
  3fef8efc_d675_d026_3afc_7ca2094470b6 -->|defined in| 397e6e82_749b_4ef2_9365_02be671c59f7
  style 3fef8efc_d675_d026_3afc_7ca2094470b6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

middleware/session/session_test.go lines 768–850

func Test_Session_Save_AbsoluteTimeout(t *testing.T) {
	t.Parallel()

	t.Run("save to cookie", func(t *testing.T) {
		t.Parallel()

		const absoluteTimeout = 2 * time.Second // extra headroom to avoid flakiness under -race
		// session store
		store := NewStore(Config{
			IdleTimeout:     absoluteTimeout,
			AbsoluteTimeout: absoluteTimeout,
		})

		// force change to IdleTimeout
		store.IdleTimeout = 10 * time.Second

		// fiber instance
		app := fiber.New()
		// fiber context
		ctx := app.AcquireCtx(&fasthttp.RequestCtx{})
		defer app.ReleaseCtx(ctx)

		// get session
		sess, err := store.Get(ctx)
		require.NoError(t, err)

		// set value
		sess.Set("name", "john")

		token := sess.ID()

		// save session
		err = sess.Save()
		require.NoError(t, err)

		sess.Release()
		app.ReleaseCtx(ctx)
		ctx = app.AcquireCtx(&fasthttp.RequestCtx{})

		// here you need to get the old session yet
		ctx.Request().Header.SetCookie("session_id", token)
		sess, err = store.Get(ctx)
		require.NoError(t, err)
		require.Equal(t, "john", sess.Get("name"))

		// just to make sure the session has been expired
		time.Sleep(absoluteTimeout + (200 * time.Millisecond))

		sess.Release()

		app.ReleaseCtx(ctx)
		ctx = app.AcquireCtx(&fasthttp.RequestCtx{})

		// here you should get a new session
		ctx.Request().Header.SetCookie("session_id", token)
		sess, err = store.Get(ctx)
		require.NoError(t, err)
		require.Nil(t, sess.Get("name"))
		require.NotEqual(t, sess.ID(), token)
		require.True(t, sess.Fresh())
		require.IsType(t, time.Time{}, sess.Get(absExpirationKey))

		token = sess.ID()

		sess.Set("name", "john")

		// save session
		err = sess.Save()
		require.NoError(t, err)

		sess.Release()
		app.ReleaseCtx(ctx)

		// just to make sure the session has been expired
		time.Sleep(absoluteTimeout + (200 * time.Millisecond))

		// try to get expired session by id
		sess, err = store.GetByID(ctx, token)
		require.Error(t, err)
		require.ErrorIs(t, err, ErrSessionIDNotFoundInStore)
		require.Nil(t, sess)

Subdomains

Frequently Asked Questions

What does Test_Session_Save_AbsoluteTimeout() do?
Test_Session_Save_AbsoluteTimeout() is a function in the fiber codebase, defined in middleware/session/session_test.go.
Where is Test_Session_Save_AbsoluteTimeout() defined?
Test_Session_Save_AbsoluteTimeout() is defined in middleware/session/session_test.go at line 768.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free