Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public async Task GetRegistrationStatus_ExistingEmail_BlueUser()

var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(userRepositoryMock.Object, userGroupTypeInputValidationRepositoryMock.Object, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(userRepositoryMock.Object, userGroupTypeInputValidationRepositoryMock.Object, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object, null);
var status = await registrationService.GetRegistrationStatus("test@here.com", this.ipAddress);

Assert.IsType<EmailRegistrationStatus>(status);
Expand Down Expand Up @@ -79,7 +79,7 @@ public async Task GetRegistrationStatus_ExistingEmail_NonBlueUser()

var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(userRepositoryMock.Object, userGroupTypeInputValidationRepositoryMock.Object, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, userGroupRepositoryMock.Object, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(userRepositoryMock.Object, userGroupTypeInputValidationRepositoryMock.Object, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, userGroupRepositoryMock.Object, null, null, null, this.countryLookupRepoMock.Object, null);
var status = await registrationService.GetRegistrationStatus("test@here.com", this.ipAddress);

Assert.IsType<EmailRegistrationStatus>(status);
Expand All @@ -103,7 +103,7 @@ public async Task GetRegistrationStatus_NonExistingEmail_BlueUser()

var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(userRepositoryMock.Object, userGroupTypeInputValidationRepositoryMock.Object, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(userRepositoryMock.Object, userGroupTypeInputValidationRepositoryMock.Object, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object, null);
var status = await registrationService.GetRegistrationStatus("test@here.com", this.ipAddress);

Assert.IsType<EmailRegistrationStatus>(status);
Expand All @@ -127,7 +127,7 @@ public async Task GetRegistrationStatus_NonExistingEmail_NonBlueUser()

var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(userRepositoryMock.Object, userGroupTypeInputValidationRepositoryMock.Object, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(userRepositoryMock.Object, userGroupTypeInputValidationRepositoryMock.Object, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object, null);
var status = await registrationService.GetRegistrationStatus("test@here.com", this.ipAddress);

Assert.IsType<EmailRegistrationStatus>(status);
Expand All @@ -145,7 +145,7 @@ public async Task RegisterUser_Invalid_NoEmailOrNames()
{
var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(null, null, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(null, null, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object, null);
var validationResult = await registrationService.RegisterUser(
new RegistrationRequestViewModel()
{
Expand Down Expand Up @@ -177,7 +177,7 @@ public async Task RegisterUser_MissingRegionForEngland()
{
var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(null, null, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(null, null, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object, null);
var validationResult = await registrationService.RegisterUser(
new RegistrationRequestViewModel()
{
Expand Down Expand Up @@ -207,7 +207,7 @@ public async Task RegisterUser_MissingCountryJobRoleSpecialtyAndLocation()
{
var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(null, null, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(null, null, null, null, null, null, null, null, null, null, null, null, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object, null);
var validationResult = await registrationService.RegisterUser(
new RegistrationRequestViewModel()
{
Expand Down Expand Up @@ -252,7 +252,7 @@ public async Task RegisterUser_GMCFailure()

var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(null, null, jobRoleRepositoryMock.Object, null, null, null, null, null, null, null, null, medicalcouncilServiceMock.Object, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(null, null, jobRoleRepositoryMock.Object, null, null, null, null, null, null, null, null, medicalcouncilServiceMock.Object, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object, null);
var validationResult = await registrationService.RegisterUser(
new RegistrationRequestViewModel()
{
Expand Down Expand Up @@ -294,7 +294,7 @@ public async Task RegisterUser_GDCFailure()

var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(null, null, jobRoleRepositoryMock.Object, null, null, null, null, null, null, null, null, medicalcouncilServiceMock.Object, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(null, null, jobRoleRepositoryMock.Object, null, null, null, null, null, null, null, null, medicalcouncilServiceMock.Object, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object, null);
var validationResult = await registrationService.RegisterUser(
new RegistrationRequestViewModel()
{
Expand Down Expand Up @@ -336,7 +336,7 @@ public async Task RegisterUser_NMCFailure()

var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(null, null, jobRoleRepositoryMock.Object, null, null, null, null, null, null, null, null, medicalcouncilServiceMock.Object, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(null, null, jobRoleRepositoryMock.Object, null, null, null, null, null, null, null, null, medicalcouncilServiceMock.Object, null, null, optionsMock.Object, null, null, null, null, null, null, this.countryLookupRepoMock.Object, null);
var validationResult = await registrationService.RegisterUser(
new RegistrationRequestViewModel()
{
Expand Down Expand Up @@ -381,7 +381,7 @@ public async Task RegisterUser_UserAlreadyExists()

var optionsMock = new Mock<IOptions<Settings>>();

var registrationService = new RegistrationService(null, null, jobRoleRepositoryMock.Object, null, null, null, null, null, null, null, null, null, userServiceMock.Object, null, optionsMock.Object, null, medicalCouncilRepositoryMock.Object, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(null, null, jobRoleRepositoryMock.Object, null, null, null, null, null, null, null, null, null, userServiceMock.Object, null, optionsMock.Object, null, medicalCouncilRepositoryMock.Object, null, null, null, null, this.countryLookupRepoMock.Object, null);
var validationResult = await registrationService.RegisterUser(
new RegistrationRequestViewModel()
{
Expand Down Expand Up @@ -456,7 +456,7 @@ public async Task RegisterUser_Success()
var emailLogRepositoryMock = new Mock<IEmailLogRepository>();
emailLogRepositoryMock.Setup(r => r.CreateAsync(It.IsAny<int>(), It.IsAny<EmailLog>()));

var registrationService = new RegistrationService(userRepositoryMock.Object, userGroupTypeInputValidationRepositoryMock.Object, jobRoleRepositoryMock.Object, userUserGroupRepositoryMock.Object, userEmploymentRepositoryMock.Object, emailTemplateRepositoryMock.Object, emailLogRepositoryMock.Object, systemSettingsRepositoryMock.Object, userPasswordValidationTokenRepositoryMock.Object, tenantRepositoryMock.Object, tenantSmtpRepositoryMock.Object, null, userServiceMock.Object, userHistoryServiceMock.Object, this.GetSettings(), loginWizardServiceMock.Object, null, null, null, null, null, this.countryLookupRepoMock.Object);
var registrationService = new RegistrationService(userRepositoryMock.Object, userGroupTypeInputValidationRepositoryMock.Object, jobRoleRepositoryMock.Object, userUserGroupRepositoryMock.Object, userEmploymentRepositoryMock.Object, emailTemplateRepositoryMock.Object, emailLogRepositoryMock.Object, systemSettingsRepositoryMock.Object, userPasswordValidationTokenRepositoryMock.Object, tenantRepositoryMock.Object, tenantSmtpRepositoryMock.Object, null, userServiceMock.Object, userHistoryServiceMock.Object, this.GetSettings(), loginWizardServiceMock.Object, null, null, null, null, null, this.countryLookupRepoMock.Object, null);
var validationResult = await registrationService.RegisterUser(
new RegistrationRequestViewModel()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,7 @@ public async Task GetUserRole_Administrator()
null,
null,
null,
null,
null);

var role = await userService.GetUserRoleAsync(1);
Expand Down Expand Up @@ -591,6 +592,7 @@ public async Task GetUserRole_BlueUser()
null,
null,
null,
null,
null);

var role = await userService.GetUserRoleAsync(1);
Expand Down Expand Up @@ -836,6 +838,7 @@ public async Task GetUserRole_none()
null,
null,
null,
null,
null);

var role = await userService.GetUserRoleAsync(1);
Expand Down Expand Up @@ -885,6 +888,7 @@ public async Task UpdateUserSecurityQuestions_Create()
null,
null,
this.NewMapper(),
null,
null);

await userService.UpdateUserSecurityQuestions(userSecurityQuestions, userId);
Expand Down Expand Up @@ -936,6 +940,7 @@ public async Task UpdateUserSecurityQuestions_CreateAndUpdate()
null,
null,
this.NewMapper(),
null,
null);

await userService.UpdateUserSecurityQuestions(userSecurityQuestions, userId);
Expand Down Expand Up @@ -977,6 +982,7 @@ public async Task InvalidateElfhUserCache_InvalidateSuccess()
this.elfhCacheSettingOptions,
elfhCacheMock.Object,
this.NewMapper(),
null,
null);

await userService.InvalidateElfhUserCacheAsync(123456, "test.user", CancellationToken.None);
Expand Down
10 changes: 6 additions & 4 deletions LearningHub.Nhs.UserApi.Services/ElfhUserService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -673,13 +673,14 @@ public async Task<LearningHubValidationResult> SendAdminPasswordResetEmail(int u
await this.userPasswordValidationTokenRepository.CreateAsync(userId, userPasswordValidationToken);

var personalisation = new Dictionary<string, dynamic>();
personalisation["name"] = (user.FirstName + " " + user.LastName).ToTitleCase();
personalisation["name"] = user.FirstName;
personalisation["username"] = user.UserName;
personalisation["new password"] = userPasswordValidationToken.ValidateUrl;

var emailRequest = new EmailRequest
{
Recipient = user.EmailAddress,
TemplateId = "a6574e74-8769-417b-90ef-c4a4a1be5250",
TemplateId = this.settings.Value.GovNotifyTemplates.ForgottenUsernameOrPassword,
Personalisation = personalisation,
};

Expand Down Expand Up @@ -743,13 +744,14 @@ public async Task SendForgotPasswordEmail(string emailAddress)
await this.userPasswordValidationTokenRepository.CreateAsync(user.Id, userPasswordValidationToken);

var personalisation = new Dictionary<string, dynamic>();
personalisation["name"] = (user.FirstName + " " + user.LastName).ToTitleCase();
personalisation["name"] = user.FirstName;
personalisation["username"] = user.UserName;
personalisation["new password"] = userPasswordValidationToken.ValidateUrl;

var emailRequest = new EmailRequest
{
Recipient = user.EmailAddress,
TemplateId = "a6574e74-8769-417b-90ef-c4a4a1be5250",
TemplateId = this.settings.Value.GovNotifyTemplates.ForgottenUsernameOrPassword,
Personalisation = personalisation,
};

Expand Down
5 changes: 3 additions & 2 deletions LearningHub.Nhs.UserApi.Services/RegistrationService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -354,13 +354,14 @@ public async Task<LearningHubValidationResult> RegisterUser(RegistrationRequestV
await this.userPasswordValidationTokenRepository.CreateAsync(userId, userPasswordValidationToken);

var personalisation = new Dictionary<string, dynamic>();
personalisation["name"] = (newUser.FirstName + " " + newUser.LastName).ToTitleCase();
personalisation["name"] = newUser.FirstName;
personalisation["username"] = newUser.UserName;
personalisation["password"] = userPasswordValidationToken.ValidateUrl;

var emailRequest = new EmailRequest
{
Recipient = registrationRequest.EmailAddress,
TemplateId = "fc3752d7-4c04-4d40-87fd-ad1264072ae9",
TemplateId = this.settings.GovNotifyTemplates.NHSLearningHubRegistration,
Personalisation = personalisation,
};

Expand Down
18 changes: 18 additions & 0 deletions LearningHub.Nhs.UserApi.Shared/Configuration/GovNotifyTemplates.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace LearningHub.Nhs.UserApi.Shared.Configuration
{
/// <summary>
/// GovNotifyTemplates.
/// </summary>
public class GovNotifyTemplates
{
/// <summary>
/// Gets or sets the ForgottenUsernameOrPassword ID.
/// </summary>
public string ForgottenUsernameOrPassword { get; set; }

/// <summary>
/// Gets or sets the NHSLearningHubRegistration ID.
/// </summary>
public string NHSLearningHubRegistration { get; set; }
}
}
5 changes: 5 additions & 0 deletions LearningHub.Nhs.UserApi.Shared/Configuration/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,10 @@ public class Settings
/// Gets or sets the security questions required.
/// </summary>
public int SecurityQuestionsRequired { get; set; }

/// <summary>
/// Gets or sets the GovNotifyTemplates.
/// </summary>
public GovNotifyTemplates GovNotifyTemplates { get; set; }
}
}
6 changes: 5 additions & 1 deletion LearningHub.Nhs.UserApi/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,11 @@
"ElfhUserLoadByUserIdKey": "",
"ElfhUserLoadByUserNameKey": ""
},
"SecurityQuestionsRequired": 2
"SecurityQuestionsRequired": 2,
"GovNotifyTemplates": {
"ForgottenUsernameOrPassword": "",
"NHSLearningHubRegistration": ""
}
},
"OpenApiConfig": {
"OpenApiUrl": "",
Expand Down
Loading