Exemplo n.º 1
0
        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));
        }