public async void DeleteUserProfileByIdentityIdAsync_PositiveAndNegative_TestAsync() { var options = new DbContextOptionsBuilder <ApartmentContext>() .UseInMemoryDatabase(databaseName: "DeleteUserProfileByIdentityIdAsync_PositiveAndNegative_TestAsync") .Options; using (var context = new ApartmentContext(options)) { context.AddRange(_users); await context.SaveChangesAsync(); } using (var context = new ApartmentContext(options)) { var user = await context.Users.AsNoTracking().FirstOrDefaultAsync(); var service = new UserAdministrationService(context, _mapper); var resultPositive = await service.DeleteUserProfileByIdentityIdAsync(user.Id.ToString()); var resultNegative = await service.DeleteUserProfileByIdentityIdAsync(new Guid().ToString()); resultPositive.IsSuccess.Should().BeTrue(); resultPositive.Message.Should().BeNull(); resultNegative.IsSuccess.Should().BeFalse(); resultNegative.Message.Should().Contain("not exist"); } }
public void CreateUserAsync_UserForRegistrationDtoValid_ReturnsUserFullDetailsDto() { var mockDal = Substitute.For <IUserDal>(); var mockLogger = Substitute.For <ILogger <UserAdministrationService> >(); var mockCryptoSvc = Substitute.For <ICryptographyService>(); var adminSvc = new UserAdministrationService(mockLogger, mockDal, mockCryptoSvc); var mockRegistration = new UserForRegistrationDto() { Title = Title.Miss, FirstName = "Aoife", LastName = "McGonagle", Username = "******", Password = "******", ConfirmPassword = "******", JobDescription = "Head Honcho", Role = UserRole.MedicalPractitioner, State = AccountState.Active }; var mockJobDescription = new JobDescription() { Description = "Head Honcho", Role = UserRole.MedicalPractitioner }; var mockEmployeeDetails = new Employee() { Firstname = "Aoife", Lastname = "McGonagle", Title = Title.Miss, }; var mockUser = new User() { EmployeeDetails = mockEmployeeDetails, Username = "******", JobDescription = mockJobDescription, State = AccountState.Active }; mockDal.AddAsync(Arg.Any <User>()).Returns(mockUser); var result = adminSvc.CreateUserAsync(mockRegistration).GetAwaiter().GetResult(); Assert.That(result, Is.Not.Null); Assert.That(result.Title, Is.EqualTo(Title.Miss)); Assert.That(result.Firstname, Is.EqualTo("Aoife")); Assert.That(result.Lastname, Is.EqualTo("McGonagle")); Assert.That(result.Username, Is.EqualTo("amcg")); Assert.That(result.JobDescription, Is.EqualTo("Head Honcho")); Assert.That(result.Role, Is.EqualTo(UserRole.MedicalPractitioner)); Assert.That(result.State, Is.EqualTo(AccountState.Active)); }
public void CreateUserAsync_UserForRegistrationDtoNull_ThrowsArgumentNullException() { var mockDal = Substitute.For <IUserDal>(); var mockLogger = Substitute.For <ILogger <UserAdministrationService> >(); var mockCryptoSvc = Substitute.For <ICryptographyService>(); var adminSvc = new UserAdministrationService(mockLogger, mockDal, mockCryptoSvc); var e = Assert.Throws <ArgumentNullException>(() => adminSvc.CreateUserAsync(null).GetAwaiter().GetResult()); Assert.That(e.Message, Does.Contain("newUserDetails")); }
public void DeleteUserAsync_IdLessThanOne_ThrowsArgumentNullException() { var mockDal = Substitute.For <IUserDal>(); var mockLogger = Substitute.For <ILogger <UserAdministrationService> >(); var mockCryptoSvc = Substitute.For <ICryptographyService>(); var adminSvc = new UserAdministrationService(mockLogger, mockDal, mockCryptoSvc); var e = Assert.Throws <ArgumentOutOfRangeException>(() => adminSvc.DeleteUserAsync(0).GetAwaiter().GetResult()); Assert.That(e.Message, Does.Contain("Id provided cannot be less than 1")); }
public void UpdateUserDetailsAsync_UserNotFound_ReturnsNotFound() { var mockDal = Substitute.For <IUserDal>(); var mockLogger = Substitute.For <ILogger <UserAdministrationService> >(); var mockCryptoSvc = Substitute.For <ICryptographyService>(); var adminSvc = new UserAdministrationService(mockLogger, mockDal, mockCryptoSvc); var result = adminSvc.UpdateUserDetailsAsync(new UserFullDetailsDto()).GetAwaiter().GetResult(); Assert.That(result, Is.EqualTo(ServiceResultStatusCode.NotFound)); }
public void DeleteUserAsync_DeleteSuccess_ReturnsServiceResultStatusCodeFailed() { var mockDal = Substitute.For <IUserDal>(); var mockLogger = Substitute.For <ILogger <UserAdministrationService> >(); var mockCryptoSvc = Substitute.For <ICryptographyService>(); mockDal.DeleteAsync(1).Returns((false)); var adminSvc = new UserAdministrationService(mockLogger, mockDal, mockCryptoSvc); var result = adminSvc.DeleteUserAsync(1).GetAwaiter().GetResult(); Assert.That(result, Is.EqualTo(ServiceResultStatusCode.Failed)); }
public void ResetPasswordAsync_UserNotFound_ReturnsServiceResultStatusCodeNotFound() { var mockDal = Substitute.For <IUserDal>(); var mockLogger = Substitute.For <ILogger <UserAdministrationService> >(); var mockCryptoSvc = Substitute.For <ICryptographyService>(); mockDal.GetEntityAsync(1).Returns((User)null); var adminSvc = new UserAdministrationService(mockLogger, mockDal, mockCryptoSvc); var passwordRequest = new UserPasswordResetDto() { Id = 1 }; var result = adminSvc.ResetPasswordAsync(passwordRequest).GetAwaiter().GetResult(); Assert.That(result, Is.EqualTo(ServiceResultStatusCode.NotFound)); }
public void LoadUserAccounts_UserDalReturnsTwoUsers_ReturnsTwoUserAccountDetailsDto() { var mockDal = Substitute.For <IUserDal>(); var mockLogger = Substitute.For <ILogger <UserAdministrationService> >(); var mockCryptoSvc = Substitute.For <ICryptographyService>(); var mockJobDescription = new JobDescription() { Description = "Head Honcho", Role = UserRole.MedicalPractitioner }; var mockEmployeeDetails = new Employee() { Firstname = "Aoife", Lastname = "McGonagle", Title = Title.Miss, }; var mockUser = new User() { EmployeeDetails = mockEmployeeDetails, Username = "******", JobDescription = mockJobDescription, State = AccountState.Active }; var users = new List <User> { mockUser, mockUser }; mockDal.GetAllAsync().Returns(users); var adminSvc = new UserAdministrationService(mockLogger, mockDal, mockCryptoSvc); var result = adminSvc.LoadUserAccounts().GetAwaiter().GetResult(); Assert.That(result.Count, Is.EqualTo(2)); }
public void ResetPasswordAsync_PasswordUpdateSuccess_ReturnsServiceResultStatusCodeSuccess() { var mockDal = Substitute.For <IUserDal>(); var mockLogger = Substitute.For <ILogger <UserAdministrationService> >(); var mockCryptoSvc = Substitute.For <ICryptographyService>(); var mockJobDescription = new JobDescription() { Description = "Head Honcho", Role = UserRole.MedicalPractitioner }; var mockEmployeeDetails = new Employee() { Firstname = "Aoife", Lastname = "McGonagle", Title = Title.Miss, }; var mockUser = new User() { EmployeeDetails = mockEmployeeDetails, Username = "******", JobDescription = mockJobDescription, State = AccountState.Active }; mockDal.GetEntityAsync(1).Returns(mockUser); mockDal.UpdateAsync(Arg.Any <User>()).Returns(mockUser); var adminSvc = new UserAdministrationService(mockLogger, mockDal, mockCryptoSvc); var passwordRequest = new UserPasswordResetDto() { Id = 1 }; var result = adminSvc.ResetPasswordAsync(passwordRequest).GetAwaiter().GetResult(); Assert.That(result, Is.EqualTo(ServiceResultStatusCode.Success)); }
public void UpdateUserDetailsAsync_DalFailsToUpdate_ReturnsServiceResultStatusCodeFailed() { var mockDal = Substitute.For <IUserDal>(); var mockLogger = Substitute.For <ILogger <UserAdministrationService> >(); var mockCryptoSvc = Substitute.For <ICryptographyService>(); var adminSvc = new UserAdministrationService(mockLogger, mockDal, mockCryptoSvc); var mockJobDescription = new JobDescription() { Description = "Head Honcho", Role = UserRole.MedicalPractitioner }; var mockEmployeeDetails = new Employee() { Firstname = "Aoife", Lastname = "McGonagle", Title = Title.Miss, }; var mockUser = new User() { EmployeeDetails = mockEmployeeDetails, Username = "******", JobDescription = mockJobDescription, State = AccountState.Active }; mockDal.GetEntityAsync(1).Returns(mockUser); mockDal.UpdateAsync(Arg.Any <User>()).Returns((User)null); var result = adminSvc.UpdateUserDetailsAsync(new UserFullDetailsDto() { UserId = 1 }).GetAwaiter().GetResult(); Assert.That(result, Is.EqualTo(ServiceResultStatusCode.Failed)); }