public void ValidUserNameRequired()
			{
				var testData = UserTestData.Setup(false);
				string newPassword = Guid.NewGuid().ToString();

				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				bool result = provider.ChangePassword(testData.UserName, testData.Password, newPassword);
				Assert.IsFalse(result);
				testData.Repository.Verify(i => i.UpdateUser(It.IsAny<SrirachaUser>()), Times.Never());
			}
			public void ShouldUpdatePasswordChangeDate()
			{
				var testData = UserTestData.Setup(true);
				string newPassword = Guid.NewGuid().ToString();
				DateTime oldPasswordChangedDate = DateTime.UtcNow.AddDays(-1);
				testData.SrirachaUser.LastPasswordChangedDateTimeUtc = oldPasswordChangedDate;

				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				bool result = provider.ChangePassword(testData.UserName, testData.Password, newPassword);
				Assert.IsTrue(result);
				Assert.Greater(testData.SrirachaUser.LastPasswordChangedDateTimeUtc, oldPasswordChangedDate);
				testData.Repository.Verify(i => i.UpdateUser(testData.SrirachaUser), Times.Once());
			}
			public void OldPasswordIsRequired()
			{
				var testData = UserTestData.Setup(true);
				string oldEncryptedPassword = testData.SrirachaUser.EncryptedPassword;
				string wrongOldPassword = "******";
				string newPassword = Guid.NewGuid().ToString();

				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				bool result = provider.ChangePassword(testData.UserName, wrongOldPassword, newPassword);
				Assert.IsFalse(result);
				Assert.AreEqual(oldEncryptedPassword, testData.SrirachaUser.EncryptedPassword);
				testData.Repository.Verify(i => i.UpdateUser(It.IsAny<SrirachaUser>()), Times.Never());
			}
			public void ShouldWriteHashedValue()
			{
				var testData = UserTestData.Setup(true);
				string newPassword = Guid.NewGuid().ToString();

				var provider = new SrirachaMembershipProvider(testData.Repository.Object);
				bool result = provider.ChangePassword(testData.UserName, testData.Password, newPassword);
				Assert.IsTrue(result);
				Assert.IsTrue(Crypto.VerifyHashedPassword(testData.SrirachaUser.EncryptedPassword, testData.SrirachaUser.UserName.ToLower()+newPassword));
				testData.Repository.Verify(i => i.UpdateUser(testData.SrirachaUser), Times.Once());
			}