Home / Function/ Test_Session_Save_IdleTimeout() — fiber Function Reference

Test_Session_Save_IdleTimeout() — fiber Function Reference

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

Entity Profile

Dependency Diagram

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

Relationship Graph

Source Code

middleware/session/session_test.go lines 705–766

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

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

		const sessionDuration = 5 * time.Second
		// session store
		store := NewStore()
		// 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()

		// expire this session in 5 seconds
		sess.SetIdleTimeout(sessionDuration)

		// 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, token, sess.ID(), "session ID should match before expiration")
		name := sess.Get("name")
		require.Equal(t, "john", name, "session should contain the saved value before expiration")

		// just to make sure the session has been expired
		// Add extra buffer time to ensure expiration is processed
		time.Sleep(sessionDuration + (100 * time.Millisecond))

		sess.Release()

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

		// here you should get a new session
		ctx.Request().Header.SetCookie("session_id", token)
		sess, err = store.Get(ctx)
		defer sess.Release()
		require.NoError(t, err)
		require.Nil(t, sess.Get("name"))
		require.NotEqual(t, sess.ID(), token)
	})
}

Subdomains

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free