public void ResetPasswordAsync_UserPasswordResetDtoNull_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.ResetPasswordAsync(null).GetAwaiter().GetResult());

            Assert.That(e.Message, Does.Contain("userPasswordReset"));
        }
        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 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));
        }