public void ShouldNotUpdateLastActivityDateForProviderKeyIfNotOnline()
			{
				var testData = UserTestData.Setup(true);
				testData.SrirachaUser.LastActivityDateTimeUtc = DateTime.UtcNow.AddMonths(-1);

				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				var membershipUser = provider.GetUser(testData.SrirachaUser.UserGuid, false);

				Assert.IsNotNull(membershipUser);
				testData.Repository.Verify(i => i.UpdateUser(It.IsAny<SrirachaUser>()), Times.Never());
			}
			public void ShouldUpdateLastActivityDateForProviderKeyIfOnline()
			{
				var testData = UserTestData.Setup(true);
				testData.SrirachaUser.LastActivityDateTimeUtc = DateTime.UtcNow.AddMonths(-1);

				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				var membershipUser = provider.GetUser(testData.SrirachaUser.UserGuid, true);

				Assert.IsNotNull(membershipUser);
				testData.Repository.Verify(i => i.UpdateUser(testData.SrirachaUser), Times.Once());
				Assert.Greater(testData.SrirachaUser.LastActivityDateTimeUtc, DateTime.UtcNow.AddMinutes(-1));
			}
			public void ShouldReturnUserByProviderKey()
			{
				var testData = UserTestData.Setup(true);

				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				var membershipUser = provider.GetUser(testData.SrirachaUser.UserGuid, false);

				Assert.IsNotNull(membershipUser);
				Assert.AreEqual(testData.SrirachaUser.UserName, membershipUser.UserName);
				Assert.AreEqual(testData.SrirachaUser.UserGuid, membershipUser.ProviderUserKey);
			}
			public void ShouldReturnNullForInvalidProviderKey()
			{
				var testData = UserTestData.Setup(true);

				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				var membershipUser = provider.GetUser(Guid.NewGuid(), false);

				Assert.IsNull(membershipUser);
			}
			public void ShouldUpdateLastActivityDateForUserNameIfOnline()
			{
				var testData = UserTestData.Setup(true);
				testData.SrirachaUser.LastActivityDateTimeUtc = DateTime.UtcNow.AddMonths(-1);
				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				var membershipUser = provider.GetUser(testData.SrirachaUser.UserName, true);

				Assert.IsNotNull(membershipUser);
                Thread.Sleep(1000); //The update user is run async, try to wait for it
				testData.Repository.Verify(i => i.UpdateUser(testData.SrirachaUser), Times.Once());
				Assert.Greater(testData.SrirachaUser.LastActivityDateTimeUtc, DateTime.UtcNow.AddMinutes(-1));
			}