Beispiel #1
0
        public static (MyAccountDetailsData, CentreAnswersData?) MapToUpdateAccountData(
            MyAccountEditDetailsFormData formData,
            int?userAdminId,
            int?userDelegateId,
            int centreId
            )
        {
            var accountDetailsData = new MyAccountDetailsData(
                userAdminId,
                userDelegateId,
                formData.Password !,
                formData.FirstName !,
                formData.LastName !,
                formData.Email !,
                formData.ProfileImage
                );

            var centreAnswersData = userDelegateId == null
                ? null
                : new CentreAnswersData(
                centreId,
                formData.JobGroupId !.Value,
                formData.Answer1,
                formData.Answer2,
                formData.Answer3,
                formData.Answer4,
                formData.Answer5,
                formData.Answer6
                );

            return(accountDetailsData, centreAnswersData);
        }
Beispiel #2
0
        public void EditDetailsPostSave_with_invalid_model_doesnt_call_services()
        {
            // Given
            var myAccountController = new MyAccountController(
                centreCustomPromptsService,
                userService,
                imageResizeService,
                jobGroupsDataService,
                centreCustomPromptHelper
                ).WithDefaultContext().WithMockUser(true);
            var formData      = new MyAccountEditDetailsFormData();
            var expectedModel = new MyAccountEditDetailsViewModel(
                formData,
                new List <(int id, string name)>(),
                new List <EditCustomFieldViewModel>(),
                DlsSubApplication.Default
                );

            myAccountController.ModelState.AddModelError(nameof(MyAccountEditDetailsFormData.Email), "Required");

            // When
            var result = myAccountController.EditDetails(formData, "save", DlsSubApplication.Default);

            // Then
            A.CallTo(() => userService.NewEmailAddressIsValid(A <string> ._, A <int?> ._, A <int?> ._, A <int> ._))
            .MustNotHaveHappened();
            result.As <ViewResult>().Model.As <MyAccountEditDetailsViewModel>().Should().BeEquivalentTo(expectedModel);
        }
Beispiel #3
0
 public IActionResult EditDetails(
     MyAccountEditDetailsFormData formData,
     string action,
     DlsSubApplication dlsSubApplication
     )
 {
     return(action switch
     {
         "save" => EditDetailsPostSave(formData, dlsSubApplication),
         "previewImage" => EditDetailsPostPreviewImage(formData, dlsSubApplication),
         "removeImage" => EditDetailsPostRemoveImage(formData, dlsSubApplication),
         _ => new StatusCodeResult(500),
     });
 public List <EditDelegateRegistrationPromptViewModel> GetEditDelegateRegistrationPromptViewModelsForCentre(
     MyAccountEditDetailsFormData formData,
     int centreId
     )
 {
     return(GetEditDelegateRegistrationPromptViewModelsForCentre(
                centreId,
                formData.Answer1,
                formData.Answer2,
                formData.Answer3,
                formData.Answer4,
                formData.Answer5,
                formData.Answer6
                ));
 }
Beispiel #5
0
        public void EditDetailsPost_returns_error_with_unexpected_action()
        {
            // Given
            var myAccountController = new MyAccountController(
                centreCustomPromptsService,
                userService,
                imageResizeService,
                jobGroupsDataService,
                centreCustomPromptHelper
                ).WithDefaultContext().WithMockUser(true, adminId: null);
            const string action = "unexpectedString";
            var          model  = new MyAccountEditDetailsFormData();

            // When
            var result = myAccountController.EditDetails(model, action, DlsSubApplication.Default);

            // Then
            result.Should().BeStatusCodeResult().WithStatusCode(500);
        }
Beispiel #6
0
        public void EditDetailsPostSave_without_previewing_profile_image_fails_validation()
        {
            // Given
            var myAccountController = new MyAccountController(
                centreCustomPromptsService,
                userService,
                imageResizeService,
                jobGroupsDataService,
                centreCustomPromptHelper
                ).WithDefaultContext().WithMockUser(true, adminId: null);
            var customPromptLists = new List <CustomPrompt>
            {
                CustomPromptsTestHelper.GetDefaultCustomPrompt(1, mandatory: true)
            };

            A.CallTo
                (() => centreCustomPromptsService.GetCustomPromptsForCentreByCentreId(2)).Returns(
                CustomPromptsTestHelper.GetDefaultCentreCustomPrompts(customPromptLists, 2)
                );
            var formData = new MyAccountEditDetailsFormData
            {
                ProfileImageFile = A.Fake <FormFile>(),
            };
            var expectedPrompt = new EditCustomFieldViewModel(1, "Custom Prompt", true, new List <string>(), null);
            var expectedModel  = new MyAccountEditDetailsViewModel(
                formData,
                new List <(int id, string name)>(),
                new List <EditCustomFieldViewModel> {
                expectedPrompt
            },
                DlsSubApplication.Default
                );

            // When
            var result = myAccountController.EditDetails(formData, "save", DlsSubApplication.Default);

            // Then
            A.CallTo(() => userService.NewEmailAddressIsValid(A <string> ._, A <int?> ._, A <int?> ._, A <int> ._))
            .MustNotHaveHappened();
            result.As <ViewResult>().Model.As <MyAccountEditDetailsViewModel>().Should().BeEquivalentTo(expectedModel);
            myAccountController.ModelState[nameof(MyAccountEditDetailsFormData.ProfileImageFile)].ValidationState
            .Should().Be(ModelValidationState.Invalid);
        }
Beispiel #7
0
        public void EditDetailsPostSave_with_invalid_password_fails_validation()
        {
            // Given
            var myAccountController = new MyAccountController(
                centreCustomPromptsService,
                userService,
                imageResizeService,
                jobGroupsDataService,
                centreCustomPromptHelper
                ).WithDefaultContext().WithMockUser(true, delegateId: null);

            A.CallTo(() => userService.IsPasswordValid(7, null, "password")).Returns(false);
            A.CallTo(() => userService.NewEmailAddressIsValid(Email, 7, null, 2)).Returns(true);
            A.CallTo(() => userService.UpdateUserAccountDetailsForAllVerifiedUsers(A <MyAccountDetailsData> ._, null))
            .DoesNothing();

            var formData = new MyAccountEditDetailsFormData
            {
                FirstName = "Test",
                LastName  = "User",
                Email     = Email,
                Password  = "******",
            };
            var expectedModel = new MyAccountEditDetailsViewModel(
                formData,
                new List <(int id, string name)>(),
                new List <EditCustomFieldViewModel>(),
                DlsSubApplication.Default
                );

            // When
            var result = myAccountController.EditDetails(formData, "save", DlsSubApplication.Default);

            // Then
            A.CallTo(() => userService.NewEmailAddressIsValid(A <string> ._, A <int?> ._, A <int?> ._, A <int> ._))
            .MustNotHaveHappened();
            result.As <ViewResult>().Model.As <MyAccountEditDetailsViewModel>().Should().BeEquivalentTo(expectedModel);
            myAccountController.ModelState[nameof(MyAccountEditDetailsFormData.Password)].ValidationState.Should().Be
                (ModelValidationState.Invalid);
        }
Beispiel #8
0
        public void EditDetailsPostSave_for_admin_user_with_missing_delegate_answers_doesnt_fail_validation()
        {
            // Given
            var myAccountController = new MyAccountController(
                centreCustomPromptsService,
                userService,
                imageResizeService,
                jobGroupsDataService,
                centreCustomPromptHelper
                ).WithDefaultContext().WithMockUser(true, delegateId: null);

            A.CallTo(() => userService.IsPasswordValid(7, null, "password")).Returns(true);
            A.CallTo(() => userService.NewEmailAddressIsValid(Email, 7, null, 2)).Returns(true);
            A.CallTo(() => userService.UpdateUserAccountDetailsForAllVerifiedUsers(A <MyAccountDetailsData> ._, null)).DoesNothing();
            var model = new MyAccountEditDetailsFormData
            {
                FirstName = "Test",
                LastName  = "User",
                Email     = Email,
                Password  = "******",
            };
            var parameterName = typeof(MyAccountController).GetMethod("Index")?.GetParameters()
                                .SingleOrDefault(p => p.ParameterType == typeof(DlsSubApplication))?.Name;

            // When
            var result = myAccountController.EditDetails(model, "save", DlsSubApplication.Default);

            // Then
            A.CallTo(() => userService.NewEmailAddressIsValid(Email, 7, null, 2)).MustHaveHappened();
            A.CallTo(() => userService.UpdateUserAccountDetailsForAllVerifiedUsers(A <MyAccountDetailsData> ._, null))
            .MustHaveHappened();

            result.Should().BeRedirectToActionResult().WithActionName("Index").WithRouteValue(
                parameterName,
                DlsSubApplication.Default.UrlSegment
                );
        }