public void GetItem_RecordLocked() { Utility.SetConfigUtilityToDefault(); string id = "session-id"; bool locked; TimeSpan lockAge; object lockId = null; SessionStateActions actions; object mockLockId = 0; ISessionStateItemCollection sessionData = null; int sessionTimeout; var mockCache = A.Fake <ICacheConnection>(); A.CallTo(() => mockCache.TryCheckWriteLockAndGetData(out mockLockId, out sessionData, out sessionTimeout)).Returns(false); A.CallTo(() => mockCache.GetLockAge(A <object> .Ignored)).Returns(TimeSpan.Zero); RedisSessionStateProvider sessionStateStore = new RedisSessionStateProvider(); sessionStateStore.cache = mockCache; SessionStateStoreData sessionStateStoreData = sessionStateStore.GetItem(null, id, out locked, out lockAge, out lockId, out actions); A.CallTo(() => mockCache.TryCheckWriteLockAndGetData(out mockLockId, out sessionData, out sessionTimeout)).MustHaveHappened(); A.CallTo(() => mockCache.GetLockAge(A <object> .Ignored)).MustHaveHappened(); Assert.Equal(null, sessionStateStoreData); Assert.Equal(true, locked); }
public void SessionReadCycle_Valid() { using (RedisServer redisServer = new RedisServer()) { string sessionId = ResetRedisConnectionWrapperAndConfiguration(); // Inserting empty session with "SessionStateActions.InitializeItem" flag into redis server RedisSessionStateProvider ssp = new RedisSessionStateProvider(); ssp.CreateUninitializedItem(null, sessionId, (int)RedisSessionStateProvider.configuration.SessionTimeout.TotalMinutes); // Get write lock and session from cache bool locked; TimeSpan lockAge; object lockId; SessionStateActions actions; SessionStateStoreData storeData = ssp.GetItem(null, sessionId, out locked, out lockAge, out lockId, out actions); // Get actual connection and varify lock and session timeout IDatabase actualConnection = GetRealRedisConnection(); Assert.True(actualConnection.StringGet(ssp.cache.Keys.LockKey).IsNull); Assert.Equal(((int)RedisSessionStateProvider.configuration.SessionTimeout.TotalSeconds).ToString(), actualConnection.HashGet(ssp.cache.Keys.InternalKey, "SessionTimeout").ToString()); // reset sessions timoue ssp.ResetItemTimeout(null, sessionId); // End request ssp.EndRequest(null); // remove data and lock from redis DisposeRedisConnectionWrapper(); } }
public void GetItem_NullFromStore() { Utility.SetConfigUtilityToDefault(); string id = "session-id"; bool locked; TimeSpan lockAge; object lockId = null; SessionStateActions actions; object mockLockId = 0; ISessionStateItemCollection sessionData = null; int sessionTimeout; var mockCache = A.Fake<ICacheConnection>(); A.CallTo(() => mockCache.TryCheckWriteLockAndGetData(out mockLockId, out sessionData, out sessionTimeout)).Returns(true); RedisSessionStateProvider sessionStateStore = new RedisSessionStateProvider(); sessionStateStore.cache = mockCache; SessionStateStoreData sessionStateStoreData = sessionStateStore.GetItem(null, id, out locked, out lockAge, out lockId, out actions); A.CallTo(() => mockCache.TryCheckWriteLockAndGetData(out mockLockId, out sessionData, out sessionTimeout)).MustHaveHappened(); A.CallTo(() => mockCache.TryReleaseLockIfLockIdMatch(mockLockId, A<int>.Ignored)).MustHaveHappened(); Assert.Equal(null, sessionStateStoreData); Assert.Equal(false, locked); Assert.Equal(TimeSpan.Zero, lockAge); Assert.Equal(0, lockId); }
public void GetItem_RecordFound() { Utility.SetConfigUtilityToDefault(); string id = "session-id"; bool locked; TimeSpan lockAge; object lockId = null; SessionStateActions actions; ISessionStateItemCollection sessionStateItemCollection = new ChangeTrackingSessionStateItemCollection(); sessionStateItemCollection["session-key"] = "session-value"; sessionStateItemCollection["SessionStateActions"] = SessionStateActions.None; SessionStateStoreData sssd = new SessionStateStoreData(sessionStateItemCollection, null, 15); ISessionStateItemCollection sessionData = new ChangeTrackingSessionStateItemCollection(); sessionData["session-key"] = "session-value"; sessionData["SessionStateActions"] = SessionStateActions.None; ISessionStateItemCollection mockSessionData = null; object mockLockId = 0; int mockSessionTimeout; int sessionTimeout = (int)RedisSessionStateProvider.configuration.SessionTimeout.TotalMinutes; var mockCache = A.Fake <ICacheConnection>(); A.CallTo(() => mockCache.TryCheckWriteLockAndGetData(out mockLockId, out mockSessionData, out mockSessionTimeout)).Returns(true).AssignsOutAndRefParameters(0, sessionData, (int)RedisSessionStateProvider.configuration.SessionTimeout.TotalMinutes); RedisSessionStateProvider sessionStateStore = new RedisSessionStateProvider(); sessionStateStore.cache = mockCache; SessionStateStoreData sessionStateStoreData = sessionStateStore.GetItem(null, id, out locked, out lockAge, out lockId, out actions); A.CallTo(() => mockCache.TryCheckWriteLockAndGetData(out mockLockId, out sessionData, out sessionTimeout)).MustHaveHappened(); Assert.Equal(true, Utility.CompareSessionStateStoreData(sessionStateStoreData, sssd)); Assert.Equal(false, locked); Assert.Equal(TimeSpan.Zero, lockAge); Assert.Equal(actions, SessionStateActions.None); }
public void SessionReadCycle_Valid() { using (RedisServer redisServer = new RedisServer()) { string sessionId = ResetRedisConnectionWrapperAndConfiguration(); // Inserting empty session with "SessionStateActions.InitializeItem" flag into redis server RedisSessionStateProvider ssp = new RedisSessionStateProvider(); ssp.CreateUninitializedItem(null, sessionId, (int)RedisSessionStateProvider.configuration.SessionTimeout.TotalMinutes); // Get write lock and session from cache bool locked; TimeSpan lockAge; object lockId; SessionStateActions actions; SessionStateStoreData storeData = ssp.GetItem(null, sessionId, out locked, out lockAge, out lockId, out actions); // Get actual connection and varify lock and session timeout IDatabase actualConnection = GetRealRedisConnection(); Assert.True(actualConnection.StringGet(ssp.cache.Keys.LockKey).IsNull); Assert.Equal(((int)RedisSessionStateProvider.configuration.SessionTimeout.TotalSeconds).ToString(), actualConnection.HashGet(ssp.cache.Keys.InternalKey, "SessionTimeout").ToString()); // reset sessions timoue ssp.ResetItemTimeout(null, sessionId); // End request ssp.EndRequest(null); // remove data and lock from redis DisposeRedisConnectionWrapper(); } }
public void GetItem_RecordFound() { Utility.SetConfigUtilityToDefault(); string id = "session-id"; bool locked; TimeSpan lockAge; object lockId = null; SessionStateActions actions; ISessionStateItemCollection sessionStateItemCollection = new ChangeTrackingSessionStateItemCollection(); sessionStateItemCollection["session-key"] = "session-value"; sessionStateItemCollection["SessionStateActions"] = SessionStateActions.None; SessionStateStoreData sssd = new SessionStateStoreData(sessionStateItemCollection, null, 15); ISessionStateItemCollection sessionData = new ChangeTrackingSessionStateItemCollection(); sessionData["session-key"] = "session-value"; sessionData["SessionStateActions"] = SessionStateActions.None; ISessionStateItemCollection mockSessionData = null; object mockLockId = 0; int mockSessionTimeout; int sessionTimeout = (int)RedisSessionStateProvider.configuration.SessionTimeout.TotalMinutes; var mockCache = A.Fake<ICacheConnection>(); A.CallTo(() => mockCache.TryCheckWriteLockAndGetData(out mockLockId, out mockSessionData, out mockSessionTimeout)).Returns(true).AssignsOutAndRefParameters(0, sessionData, (int)RedisSessionStateProvider.configuration.SessionTimeout.TotalMinutes); RedisSessionStateProvider sessionStateStore = new RedisSessionStateProvider(); sessionStateStore.cache = mockCache; SessionStateStoreData sessionStateStoreData = sessionStateStore.GetItem(null, id, out locked, out lockAge, out lockId, out actions); A.CallTo(() => mockCache.TryCheckWriteLockAndGetData(out mockLockId, out sessionData, out sessionTimeout)).MustHaveHappened(); Assert.Equal(true, Utility.CompareSessionStateStoreData(sessionStateStoreData, sssd)); Assert.Equal(false, locked); Assert.Equal(TimeSpan.Zero, lockAge); Assert.Equal(actions, SessionStateActions.None); }