public async Task Given_ValidDetails_When_ChangePasswordFromToken_Then_PasswordChanged() { // Arrange var userId = 1; var token = "asbcefghijklmnop"; var newPassword = "******"; string decryptedSecurityAnswer = "blah"; _encryption.Expect(a => a.Decrypt(Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <int> .Is.Anything, Arg <string> .Is.Anything, out Arg <string> .Out(decryptedSecurityAnswer).Dummy)).Return(true); _userStore.Expect(a => a.FindByIdAsync(userId)).Return(Task.FromResult(new User { FirstName = "Bob", LastName = "Joseph", SecurityAnswer = "encryptedblah" })); _userStore.Expect(a => a.ChangePasswordFromTokenAsync(userId, token, newPassword)).Return(Task.FromResult(new IdentityResult())); // Act var result = await _sut.ChangePasswordFromTokenAsync(userId, token, newPassword); // Assert Assert.IsTrue(result.Succeeded, "Expected to Succeed but result was failure"); }
Given_PersonalInformationUsedInPassword_When_ChangePasswordFromToken_Then_PasswordChangeRejected( string wordReused) { // Arrange var userId = 1; var newPassword = $"{wordReused}345"; var token = "asbcefghijklmnop"; var decryptedSecurityAnswer = "blah"; _encryption.Expect(a => a.Decrypt(Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <int> .Is.Anything, Arg <string> .Is.Anything, out Arg <string> .Out(decryptedSecurityAnswer).Dummy)).Return(true); _userStore.Expect(a => a.FindByIdAsync(userId)).Return(Task.FromResult(new User { FirstName = "Bob", LastName = "Joseph", SecurityAnswer = "encryptedblah" })); // Act var result = await _sut.ChangePasswordFromTokenAsync(userId, token, newPassword); // Assert Assert.IsFalse(result.Succeeded); _userStore.AssertWasNotCalled(a => a.ChangePasswordFromTokenAsync(userId, token, newPassword)); }