public void TestGetItem() { var config = new NameValueCollection(_sessionConfig); var provider = new MongoSessionStateStore(); provider.Initialize(DefaultSessionName, config); var context = CreateHttpContext(); var sessionId = GenerateSessionId(); provider.CreateUninitializedItem(context, sessionId, DefaultTimeout); bool locked; TimeSpan lockAge; object lockId; SessionStateActions actions; var storeData = provider.GetItem(context, sessionId, out locked, out lockAge, out lockId, out actions); Assert.IsNotNull(storeData); Assert.IsFalse(locked); Assert.AreNotEqual(ObjectId.Empty, lockId); // Actions flag should be InitializeItem since it was created uninitialized above. Assert.AreEqual(SessionStateActions.InitializeItem, actions); }
public void TestSetAndReleaseItemExclusiveWhenDoesNotExist() { var config = new NameValueCollection(_sessionConfig); var provider = new MongoSessionStateStore(); provider.Initialize(DefaultSessionName, config); var context = CreateHttpContext(); var sessionId = GenerateSessionId(); var storeData = provider.CreateNewStoreData(context, DefaultTimeout); storeData.Items["field"] = "value"; provider.SetAndReleaseItemExclusive(context, sessionId, storeData, ObjectId.Empty, true); bool locked; TimeSpan lockAge; object lockId; SessionStateActions actions; var retrievedStoreData = provider.GetItem(context, sessionId, out locked, out lockAge, out lockId, out actions); Assert.IsNotNull(retrievedStoreData); Assert.AreEqual("value", retrievedStoreData.Items["field"]); Assert.IsFalse(locked); Assert.AreEqual(SessionStateActions.None, actions); }
public void TestSetAndReleaseItemExclusiveWhenExistsWithInvalidLockId() { var config = new NameValueCollection(_sessionConfig); var provider = new MongoSessionStateStore(); provider.Initialize(DefaultSessionName, config); var context = CreateHttpContext(); var sessionId = GenerateSessionId(); provider.CreateUninitializedItem(context, sessionId, DefaultTimeout); bool locked1; TimeSpan lockAge1; object lockId1; SessionStateActions actions1; var storeData = provider.GetItem(context, sessionId, out locked1, out lockAge1, out lockId1, out actions1); Assert.IsNotNull(storeData); storeData.Items["field"] = "value"; provider.SetAndReleaseItemExclusive(context, sessionId, storeData, ObjectId.GenerateNewId() /* Invalid lock id */, false); bool locked2; TimeSpan lockAge2; object lockId2; SessionStateActions actions2; var retrievedStoreData = provider.GetItem(context, sessionId, out locked2, out lockAge2, out lockId2, out actions2); Assert.IsNotNull(retrievedStoreData); Assert.IsNull(retrievedStoreData.Items["field"]); Assert.IsFalse(locked2); Assert.AreEqual(SessionStateActions.None, actions2); }
public void TestResetItemTimeout() { var config = new NameValueCollection(_sessionConfig); var provider = new MongoSessionStateStore(); provider.Initialize(DefaultSessionName, config); var context = CreateHttpContext(); var sessionId = GenerateSessionId(); provider.CreateUninitializedItem(context, sessionId, 0); // Give the session a chance to expire. Thread.Sleep(100); // Now reset the timeout. provider.ResetItemTimeout(context, sessionId); bool locked; TimeSpan lockAge; object lockId; SessionStateActions actions; var storeData = provider.GetItem(context, sessionId, out locked, out lockAge, out lockId, out actions); // Give the lock a chance to accumulate age. Thread.Sleep(100); Assert.IsNotNull(storeData); Assert.IsFalse(locked); Assert.Greater(lockAge, TimeSpan.Zero); Assert.AreNotEqual(ObjectId.Empty, lockId); }
public void TestRemoveItem() { var config = new NameValueCollection(_sessionConfig); var provider = new MongoSessionStateStore(); provider.Initialize(DefaultSessionName, config); var context = CreateHttpContext(); var sessionId = GenerateSessionId(); provider.CreateUninitializedItem(context, sessionId, DefaultTimeout); bool locked1; TimeSpan lockAge1; object lockId1; SessionStateActions actions1; var storeData1 = provider.GetItem(context, sessionId, out locked1, out lockAge1, out lockId1, out actions1); provider.RemoveItem(context, sessionId, lockId1, storeData1); bool locked2; TimeSpan lockAge2; object lockId2; SessionStateActions actions2; var storeData2 = provider.GetItem(context, sessionId, out locked2, out lockAge2, out lockId2, out actions2); Assert.IsNull(storeData2); Assert.IsFalse(locked2); }
public void TestGetItemWhenLocked() { var config = new NameValueCollection(_sessionConfig); var provider = new MongoSessionStateStore(); provider.Initialize(DefaultSessionName, config); var context = CreateHttpContext(); var sessionId = GenerateSessionId(); provider.CreateUninitializedItem(context, sessionId, DefaultTimeout); // Call exclusive version of get item to force a lock. bool locked1; TimeSpan lockAge1; object lockId1; SessionStateActions actions1; provider.GetItemExclusive(context, sessionId, out locked1, out lockAge1, out lockId1, out actions1); // Sleep for a second to ensure the lockAge can be greater than 0 if it exists. Thread.Sleep(100); bool locked2; TimeSpan lockAge2; object lockId2; SessionStateActions actions2; var storeData = provider.GetItem(context, sessionId, out locked2, out lockAge2, out lockId2, out actions2); Assert.IsNull(storeData); Assert.IsTrue(locked2); Assert.Greater(lockAge2, TimeSpan.Zero); Assert.AreEqual(lockId1, lockId2); }
public void TestGetItemWhenExpired() { var config = new NameValueCollection(_sessionConfig); var provider = new MongoSessionStateStore(); provider.Initialize(DefaultSessionName, config); var context = CreateHttpContext(); var sessionId = GenerateSessionId(); provider.CreateUninitializedItem(context, sessionId, 0); // Give it a chance to expire. Thread.Sleep(100); bool locked; TimeSpan lockAge; object lockId; SessionStateActions actions; var storeData = provider.GetItem(context, sessionId, out locked, out lockAge, out lockId, out actions); Assert.IsNull(storeData); Assert.IsFalse(locked); }
public void TestGetItemWhenDoesNotExist() { var config = new NameValueCollection(_sessionConfig); var provider = new MongoSessionStateStore(); provider.Initialize(DefaultSessionName, config); var context = CreateHttpContext(); var sessionId = GenerateSessionId(); bool locked; TimeSpan lockAge; object lockId; SessionStateActions actions; var storeData = provider.GetItem(context, sessionId, out locked, out lockAge, out lockId, out actions); Assert.IsNull(storeData); Assert.IsFalse(locked); }