public async Task WhenBodyCalledWithInvalidPassword_ReturnToViewWithError() { var customer = new Customer { CustomerId = new Guid("c2e27821-cc60-4d3d-b4f0-cbe20867897c"), Contact = new Contact { EmailAddress = "user" } }; _authService.GetCustomer(Arg.Any <ClaimsPrincipal>()).ReturnsForAnyArgs(customer); _openIdConnectClient.VerifyPassword("user", "password").ReturnsForAnyArgs(Result.Fail("Failed")); var controller = new CloseYourAccountController(_compositeSettings, _authService, _openIdConnectClient, _documentService, _config); var closeYourAccountCompositeViewModel = new CloseYourAccountCompositeViewModel(); controller.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() }; var result = await controller.Body(closeYourAccountCompositeViewModel) as ViewResult; result.ViewData.ModelState.IsValid.Should().BeFalse(); result.ViewData.ModelState["Password"].Errors[0].ErrorMessage.Should().Be("Wrong password. Try again."); }
public async Task <IActionResult> Body(CloseYourAccountCompositeViewModel model) { if (!ModelState.IsValid) { ViewData["Title"] = $"Error: {ViewModel.PageTitle}"; return(View(ViewModel)); } var customer = await GetCustomerDetails(); if (_openIdConnectClient.VerifyPassword(customer.Contact.EmailAddress, model.Password).Result.IsFailure) { ModelState.AddModelError("Password", "Wrong password. Try again."); return(View(ViewModel)); } ViewModel.PageTitle = $"Are you sure you want to close your account? | {ViewModel.PageTitle}"; var sharedContent = await _documentService.GetByIdAsync(_sharedContent, "account").ConfigureAwait(false); ViewModel.SharedSideBar = sharedContent?.Content; return(base.View("ConfirmDeleteAccount", ViewModel)); }