public void Valid_request_sends_email_with_token() { var model = new EmailAddressFormData { Requested = "*****@*****.**", Password = VALID_PASSWORD }; var token = Guid.NewGuid().ToString(); var tokenExpiry = DateTime.UtcNow.AddDays(1); _verificationToken.Setup(x => x.TokenFor(_currentMember.Object.Id)).Returns((token, tokenExpiry)); Dictionary <string, string> receivedTokens = null; _emailFormatter.Setup(x => x.FormatEmailContent(CONFIRM_EMAIL_SUBJECT, CONFIRM_EMAIL_BODY, It.IsAny <Dictionary <string, string> >())) .Callback <string, string, Dictionary <string, string> >((subject, body, tokens) => receivedTokens = tokens) .Returns(("confirm email subject", "confirm email body")); using (var controller = CreateController()) { var result = controller.UpdateEmailAddress(model); Assert.Equal(_currentMember.Object.Name, receivedTokens["name"]); Assert.Equal(model.Requested, receivedTokens["email"]); Assert.Equal(REQUEST_URL_AUTHORITY, receivedTokens["domain"]); Assert.Equal(token, receivedTokens["token"]); _emailSender.Verify(x => x.SendEmail(model.Requested, "confirm email subject", "confirm email body"), Times.Once); } }
public void Valid_password_passes_validation() { var formData = new EmailAddressFormData { Password = "******" }; Assert.DoesNotContain(ValidateModel(formData), v => v.MemberNames.Contains(nameof(EmailAddressFormData.Password)) && v.ErrorMessage.ToUpperInvariant().Contains("PASSWORD")); }
public void Valid_email_passes_validation() { var formData = new EmailAddressFormData { Requested = "*****@*****.**" }; Assert.DoesNotContain(ValidateModel(formData), v => v.MemberNames.Contains(nameof(EmailAddressFormData.Requested)) && v.ErrorMessage.ToUpperInvariant().Contains("EMAIL")); }
public void Invalid_password_fails_validation(string password) { var formData = new EmailAddressFormData { Password = password }; Assert.Contains(ValidateModel(formData), v => v.MemberNames.Contains(nameof(EmailAddressFormData.Password)) && v.ErrorMessage.ToUpperInvariant().Contains("PASSWORD")); }
public void Invalid_email_address_fails_validation(string email) { var formData = new EmailAddressFormData { Requested = email }; Assert.Contains(ValidateModel(formData), v => v.MemberNames.Contains(nameof(EmailAddressFormData.Requested)) && v.ErrorMessage.ToUpperInvariant().Contains("EMAIL")); }
public void Invalid_model_returns_EmailAddress_view() { var model = new EmailAddressFormData(); using (var controller = CreateController()) { controller.ModelState.AddModelError(string.Empty, "Something is invalid"); var result = controller.UpdateEmailAddress(model); Assert.Equal("EmailAddress", ((ViewResult)result).ViewName); } }
public void Valid_request_returns_RedirectToUmbracoPageResult() { var model = new EmailAddressFormData { Password = VALID_PASSWORD }; using (var controller = CreateController()) { var result = controller.UpdateEmailAddress(model); Assert.IsType <RedirectToUmbracoPageResult>(result); } }
public void Valid_request_sets_TempData_for_view() { var model = new EmailAddressFormData { Password = VALID_PASSWORD }; using (var controller = CreateController()) { var result = controller.UpdateEmailAddress(model); Assert.Equal(true, controller.TempData["Success"]); } }
public void Valid_request_is_logged() { var model = new EmailAddressFormData { Password = VALID_PASSWORD }; using (var controller = CreateController()) { var result = controller.UpdateEmailAddress(model); _logger.Verify(x => x.Info(typeof(EmailAddressSurfaceController), LoggingTemplates.MemberRequestedEmailAddress, _currentMember.Object.Name, _currentMember.Object.Key, typeof(EmailAddressSurfaceController), nameof(EmailAddressSurfaceController.UpdateEmailAddress)), Times.Once); } }
public void Invalid_model_does_not_save_or_set_TempData() { var model = new EmailAddressFormData(); using (var controller = CreateController()) { controller.ModelState.AddModelError(string.Empty, "Something is invalid"); var result = controller.UpdateEmailAddress(model); base.MemberService.Verify(x => x.Save(_currentMember.Object, true), Times.Never); Assert.False(controller.TempData.ContainsKey("Success")); } }
public void Invalid_password_sets_ModelState(string password) { var model = new EmailAddressFormData { Password = password }; using (var controller = CreateController()) { var result = controller.UpdateEmailAddress(model); Assert.True(controller.ModelState.ContainsKey("formData." + nameof(model.Password))); Assert.Equal("Your password is incorrect or your account is locked.", controller.ModelState["formData." + nameof(model.Password)].Errors[0].ErrorMessage); } }
public void Request_for_email_already_in_use_is_logged() { var model = new EmailAddressFormData { Requested = "*****@*****.**", Password = VALID_PASSWORD }; var otherMember = SetupAnotherAccountUsingThisEmail(model.Requested); using (var controller = CreateController()) { var result = controller.UpdateEmailAddress(model); _logger.Verify(x => x.Info(typeof(EmailAddressSurfaceController), LoggingTemplates.MemberRequestedEmailAddressAlreadyInUse, _currentMember.Object.Name, _currentMember.Object.Key, typeof(EmailAddressSurfaceController), nameof(EmailAddressSurfaceController.UpdateEmailAddress)), Times.Once); } }
public void Request_for_email_already_in_use_sets_TempData_for_view() { var model = new EmailAddressFormData { Requested = "*****@*****.**", Password = VALID_PASSWORD }; var otherMember = SetupAnotherAccountUsingThisEmail(model.Requested); using (var controller = CreateController()) { var result = controller.UpdateEmailAddress(model); Assert.Equal(true, controller.TempData["Success"]); } }
public void Request_for_email_already_in_use_saves_token_anyway() { var model = new EmailAddressFormData { Requested = "*****@*****.**", Password = VALID_PASSWORD }; var otherMember = SetupAnotherAccountUsingThisEmail(model.Requested); using (var controller = CreateController()) { var result = controller.UpdateEmailAddress(model); base.MemberService.Verify(x => x.Save(_currentMember.Object, true), Times.Once); } }
public void Invalid_model_returns_form_data_to_view() { var model = new EmailAddressFormData { Password = "******", Requested = "*****@*****.**" }; using (var controller = CreateController()) { controller.ModelState.AddModelError(string.Empty, "Something is invalid"); var result = controller.UpdateEmailAddress(model); var returnedFormData = ((EmailAddress)((ViewResult)result).Model).FormData; Assert.NotNull(returnedFormData); Assert.Equal(model.Password, returnedFormData.Password); Assert.Equal(model.Requested, returnedFormData.Requested); } }
public void Valid_request_saves_email_and_token() { var model = new EmailAddressFormData { Requested = "*****@*****.**", Password = VALID_PASSWORD }; var token = Guid.NewGuid().ToString(); var tokenExpiry = DateTime.UtcNow.AddDays(1); _verificationToken.Setup(x => x.TokenFor(_currentMember.Object.Id)).Returns((token, tokenExpiry)); using (var controller = CreateController()) { var result = controller.UpdateEmailAddress(model); _currentMember.Verify(x => x.SetValue("requestedEmail", model.Requested, null, null), Times.Once); _currentMember.Verify(x => x.SetValue("requestedEmailToken", token, null, null), Times.Once); _currentMember.Verify(x => x.SetValue("requestedEmailTokenExpires", tokenExpiry, null, null), Times.Once); base.MemberService.Verify(x => x.Save(_currentMember.Object, true), Times.Once); } }
public void Request_for_email_already_in_use_sends_email() { var model = new EmailAddressFormData { Requested = "*****@*****.**", Password = VALID_PASSWORD }; var otherMember = SetupAnotherAccountUsingThisEmail(model.Requested); Dictionary <string, string> receivedTokens = null; _emailFormatter.Setup(x => x.FormatEmailContent(EMAIL_TAKEN_SUBJECT, EMAIL_TAKEN_BODY, It.IsAny <Dictionary <string, string> >())) .Callback <string, string, Dictionary <string, string> >((subject, body, tokens) => receivedTokens = tokens) .Returns(("email subject", "email body")); using (var controller = CreateController()) { var result = controller.UpdateEmailAddress(model); Assert.Equal(otherMember.Object.Name, receivedTokens["name"]); Assert.Equal(model.Requested, receivedTokens["email"]); Assert.Equal(REQUEST_URL_AUTHORITY, receivedTokens["domain"]); _emailSender.Verify(x => x.SendEmail(model.Requested, "email subject", "email body"), Times.Once); } }