From 51d721ee1bea940e8727a9a721e6027e3879fc81 Mon Sep 17 00:00:00 2001 From: Ilya Silchenkov Date: Mon, 9 Jun 2025 13:23:39 +0300 Subject: [PATCH] sessionmanager: test version mismatch on Set --- pkg/sessionmanager/sessioninmem_test.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pkg/sessionmanager/sessioninmem_test.go b/pkg/sessionmanager/sessioninmem_test.go index de5c171..4b46c66 100644 --- a/pkg/sessionmanager/sessioninmem_test.go +++ b/pkg/sessionmanager/sessioninmem_test.go @@ -110,3 +110,27 @@ func TestUserSessionManagerInMem_FetchEmpty(t *testing.T) { Reason: "user session not found for user ID 456", }, err) } + +func TestUserSessionManagerInMem_SetVersionMismatch(t *testing.T) { + ctx := context.Background() + manager := sessionmanager.NewUserSessionManagerInMem[*MockSession](NewMockSession) + assert.NotNil(t, manager) + userID := int64(789) + state, err := manager.InitSession(ctx, userID) + assert.NoError(t, err) + assert.Equal(t, &MockSession{}, state) + + // act + newSession := &MockSession{State: "action", version: 2} + updatedState, err := manager.Set(ctx, userID, newSession, 1) + + // assert + assert.Error(t, err) + assert.Equal(t, sessionmanager.ErrSessionManagement{Reason: "version mismatch"}, err) + assert.Equal(t, state, updatedState) + + // verify stored session remains unchanged + fetchedState, err := manager.Fetch(ctx, userID) + assert.NoError(t, err) + assert.Equal(t, state, fetchedState) +}