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); }
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"); }
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); }
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"); }