public void RegisterController_ReviewRequest_POST_ManualRegistration_ServiceActivated()
        {
            //ARRANGE:
            //create a user who does exist in the db
            var user = new User {
                UserId = 1, EmailAddress = "*****@*****.**", EmailVerifiedDate = VirtualDateTime.Now
            };
            var org = new Organisation {
                OrganisationId = 1, SectorType = SectorTypes.Private, Status = OrganisationStatuses.Pending
            };

            //TODO: Refactoring to user the same Helpers (ie AddScopeStatus.AddScopeStatus)
            org.OrganisationScopes.Add(
                new OrganisationScope {
                Organisation = org,
                ScopeStatus  = ScopeStatuses.InScope,
                SnapshotDate = org.SectorType.GetAccountingStartDate(VirtualDateTime.Now.Year),
                Status       = ScopeRowStatuses.Active
            });

            var address = new OrganisationAddress {
                AddressId = 1, OrganisationId = 1, Organisation = org, Status = AddressStatuses.Pending
            };
            var userOrg = new UserOrganisation {
                UserId         = 1,
                OrganisationId = 1,
                AddressId      = address.AddressId,
                Address        = address,
                User           = user,
                Organisation   = org
            };

            var routeData = new RouteData();

            routeData.Values.Add("Action", "OrganisationType");
            routeData.Values.Add("Controller", "Register");

            var controller = UiTestHelper.GetController <RegisterController>(user.UserId, routeData, user, org, address, userOrg);

            var model = new OrganisationViewModel {
                ReviewCode = userOrg.GetReviewCode()
            };

            controller.StashModel(model);

            //ACT:
            var result = controller.ReviewRequest(model, "approve") as RedirectToActionResult;

            //ASSERT:
            Assert.That(result != null, "Expected RedirectToActionResult");
            Assert.That(result.ActionName == "RequestAccepted", "Expected redirect to RequestAccepted");
            Assert.That(userOrg.PINConfirmedDate > DateTime.MinValue);
            Assert.That(userOrg.Organisation.Status == OrganisationStatuses.Active);
            Assert.That(userOrg.Organisation.GetLatestAddress().AddressId == address.AddressId);
            Assert.That(address.Status == AddressStatuses.Active);
        }
        private void SendReviewRegistrationEmailToGeo(UserOrganisation userOrganisation, IUrlHelper urlHelper)
        {
            User         user         = userOrganisation.User;
            Organisation organisation = userOrganisation.Organisation;

            string contactName      = $"{user.Fullname} ({user.JobTitle})";
            string reportingAddress = organisation.GetLatestAddress()?.GetAddressString();

            string reviewCode = userOrganisation.GetReviewCode();
            string reviewUrl  = urlHelper.Action("ReviewRequest", "Register", new { code = reviewCode }, "https");

            emailSendingService.SendGeoOrganisationRegistrationRequestEmail(
                contactName,
                organisation.OrganisationName,
                reportingAddress,
                reviewUrl);
        }
Ejemplo n.º 3
0
        public async Task RegistrationController_POST_When_User_Added_To_Public_Organisation_Then_Email_Existing_Users()
        {
            // Arrange
            var organisationId = 100;

            Core.Entities.Organisation organisation = Registration.RegistrationControllerTests.createPublicOrganisation(organisationId, "Company1", 12345678);
            User             existingUser1          = Registration.RegistrationControllerTests.CreateUser(1, "*****@*****.**");
            User             existingUser2          = Registration.RegistrationControllerTests.CreateUser(2, "*****@*****.**");
            User             newUser = Registration.RegistrationControllerTests.CreateUser(3, "*****@*****.**");
            UserOrganisation existingUserOrganisation1 = Registration.RegistrationControllerTests.CreateUserOrganisation(organisation, existingUser1.UserId, VirtualDateTime.Now);
            UserOrganisation existingUserOrganisation2 = Registration.RegistrationControllerTests.CreateUserOrganisation(organisation, existingUser2.UserId, VirtualDateTime.Now);
            UserOrganisation newUserOrganisation       = Registration.RegistrationControllerTests.CreateUserOrganisation(organisation, newUser.UserId, VirtualDateTime.Now);

            newUserOrganisation.PINConfirmedDate = null;
            User govEqualitiesOfficeUser = UserHelper.GetGovEqualitiesOfficeUser();

            govEqualitiesOfficeUser.EmailVerifiedDate = VirtualDateTime.Now;

            var routeData = new RouteData();

            routeData.Values.Add("Action", "ReviewRequest");
            routeData.Values.Add("Controller", "Registration");

            var controller = UiTestHelper.GetController <AdminController>(
                govEqualitiesOfficeUser.UserId,
                routeData,
                organisation,
                existingUser1,
                existingUser2,
                newUser,
                existingUserOrganisation1,
                existingUserOrganisation2,
                newUserOrganisation,
                govEqualitiesOfficeUser);

            var testModel = new OrganisationViewModel {
                ReviewCode = newUserOrganisation.GetReviewCode()
            };

            controller.StashModel(testModel);

            var mockNotifyEmailQueue = new Mock <IQueue>();

            mockNotifyEmailQueue
            .Setup(q => q.AddMessageAsync(It.IsAny <SendEmailRequest>()));

            // Act
            await controller.ReviewRequest(testModel, "approve");

            //ASSERT:
            mockNotifyEmailQueue.Verify(
                x => x.AddMessageAsync(It.Is <SendEmailRequest>(inst => inst.EmailAddress.Contains(existingUser1.EmailAddress))),
                Times.Once(),
                "Expected the existingUser1's email address to be in the email send queue");
            mockNotifyEmailQueue.Verify(
                x => x.AddMessageAsync(It.Is <SendEmailRequest>(inst => inst.EmailAddress.Contains(existingUser2.EmailAddress))),
                Times.Once(),
                "Expected the existingUser2's email address to be in the email send queue");
            mockNotifyEmailQueue.Verify(
                x => x.AddMessageAsync(It.Is <SendEmailRequest>(inst => inst.TemplateId.Contains(EmailTemplates.UserAddedToOrganisationEmail))),
                Times.Exactly(2),
                $"Expected the correct templateId to be in the email send queue, expected {EmailTemplates.UserAddedToOrganisationEmail}");
            mockNotifyEmailQueue.Verify(
                x => x.AddMessageAsync(It.Is <SendEmailRequest>(inst => inst.EmailAddress.Contains(newUser.EmailAddress))),
                Times.Never,
                "Do not expect new user's email address to be in the email send queue");
        }
Ejemplo n.º 4
0
        public async Task AdminController_ReviewRequest_POST_ManualRegistration_ServiceActivated()
        {
            //ARRANGE:
            //create a user who does exist in the db
            var user = new User {
                UserId = 1, EmailAddress = "*****@*****.**", EmailVerifiedDate = VirtualDateTime.Now
            };
            var org = new Core.Entities.Organisation {
                OrganisationId = 1, SectorType = SectorTypes.Private, Status = OrganisationStatuses.Pending
            };

            //TODO: Refactoring to user the same Helpers (ie AddScopeStatus.AddScopeStatus)
            org.OrganisationScopes.Add(
                new OrganisationScope {
                Organisation = org,
                ScopeStatus  = ScopeStatuses.InScope,
                SnapshotDate = org.SectorType.GetAccountingStartDate(VirtualDateTime.Now.Year),
                Status       = ScopeRowStatuses.Active
            });

            var address = new OrganisationAddress {
                AddressId = 1, OrganisationId = 1, Organisation = org, Status = AddressStatuses.Pending
            };
            var userOrg = new UserOrganisation {
                UserId         = 1,
                OrganisationId = 1,
                AddressId      = address.AddressId,
                Address        = address,
                User           = user,
                Organisation   = org
            };

            var routeData = new RouteData();

            routeData.Values.Add("Action", nameof(RegistrationController.OrganisationType));
            routeData.Values.Add("Controller", "Registration");

            var controller = UiTestHelper.GetController <AdminController>(user.UserId, routeData, user, org, address, userOrg);

            var model = new OrganisationViewModel {
                ReviewCode = userOrg.GetReviewCode()
            };

            controller.StashModel(model);

            //ACT:
            var result = await controller.ReviewRequest(model, "approve") as RedirectToActionResult;

            //ASSERT:
            Assert.That(result != null, "Expected RedirectToActionResult");
            Assert.That(result.ActionName == "RequestAccepted", "Expected redirect to RequestAccepted");
            Assert.That(userOrg.PINConfirmedDate > DateTime.MinValue);
            Assert.That(userOrg.Organisation.Status == OrganisationStatuses.Active);
            Assert.That(userOrg.Organisation.LatestAddress.AddressId == address.AddressId);
            Assert.That(!string.IsNullOrWhiteSpace(userOrg.Organisation.EmployerReference));
            Assert.That(address.Status == AddressStatuses.Active);

            //Check the organisation exists in search
            EmployerSearchModel actualIndex = await controller.AdminService.SearchBusinessLogic.EmployerSearchRepository.GetAsync(org.OrganisationId.ToString());

            EmployerSearchModel expectedIndex = EmployerSearchModel.Create(org);

            expectedIndex.Compare(actualIndex);
        }
Ejemplo n.º 5
0
        public void RegisterController_POST_When_User_Added_To_Public_Organisation_Then_Email_Existing_Users()
        {
            // Arrange
            var              organisationId            = 100;
            Organisation     organisation              = createPublicOrganisation(organisationId, "Company1", 12345678);
            User             existingUser1             = CreateUser(1, "*****@*****.**");
            User             existingUser2             = CreateUser(2, "*****@*****.**");
            User             newUser                   = CreateUser(3, "*****@*****.**");
            UserOrganisation existingUserOrganisation1 = CreateUserOrganisation(organisation, existingUser1.UserId, VirtualDateTime.Now);
            UserOrganisation existingUserOrganisation2 = CreateUserOrganisation(organisation, existingUser2.UserId, VirtualDateTime.Now);
            UserOrganisation newUserOrganisation       = CreateUserOrganisation(organisation, newUser.UserId, VirtualDateTime.Now);

            newUserOrganisation.PINConfirmedDate = null;
            User govEqualitiesOfficeUser = UserHelper.GetGovEqualitiesOfficeUser();

            govEqualitiesOfficeUser.EmailVerifiedDate = VirtualDateTime.Now;

            var routeData = new RouteData();

            routeData.Values.Add("Action", "ReviewRequest");
            routeData.Values.Add("Controller", "Register");

            var controller = UiTestHelper.GetController <RegisterController>(
                govEqualitiesOfficeUser.UserId,
                routeData,
                organisation,
                existingUser1,
                existingUser2,
                newUser,
                existingUserOrganisation1,
                existingUserOrganisation2,
                newUserOrganisation,
                govEqualitiesOfficeUser);

            var testModel = new OrganisationViewModel {
                ReviewCode = newUserOrganisation.GetReviewCode()
            };

            controller.StashModel(testModel);

            UiTestHelper.MockBackgroundJobsApi
            .Setup(q => q.AddEmailToQueue(It.IsAny <NotifyEmail>()));

            // Act
            controller.ReviewRequest(testModel, "approve");

            //ASSERT:
            UiTestHelper.MockBackgroundJobsApi.Verify(
                x => x.AddEmailToQueue(It.Is <NotifyEmail>(inst => inst.EmailAddress.Contains(existingUser1.EmailAddress))),
                Times.Once(),
                "Expected the existingUser1's email address to be in the email send queue");
            UiTestHelper.MockBackgroundJobsApi.Verify(
                x => x.AddEmailToQueue(It.Is <NotifyEmail>(inst => inst.EmailAddress.Contains(existingUser2.EmailAddress))),
                Times.Once(),
                "Expected the existingUser2's email address to be in the email send queue");
            UiTestHelper.MockBackgroundJobsApi.Verify(
                x => x.AddEmailToQueue(It.Is <NotifyEmail>(inst => inst.TemplateId.Contains(EmailTemplates.UserAddedToOrganisationEmail))),
                Times.Exactly(2),
                $"Expected the correct templateId to be in the email send queue, expected {EmailTemplates.UserAddedToOrganisationEmail}");
            UiTestHelper.MockBackgroundJobsApi.Verify(
                x => x.AddEmailToQueue(It.Is <NotifyEmail>(inst => inst.EmailAddress.Contains(newUser.EmailAddress))),
                Times.Once(),
                "Expect new user's email address to be in the email send queue");
        }