public async Task DeleteUser_InvalidUserId_ThrowException(string userId) { // Arrange var userRepositoryMock = new Mock <IUserRepository>(); var userManagerMock = new Mock <IUserManager>(); var currentUserResolverMock = new Mock <ICurrentUserResolver>(); var deleteUserCommandValidator = new DeleteUserCommandValidator( userManagerMock.Object, userRepositoryMock.Object, currentUserResolverMock.Object); var validationService = new ValidationService(deleteUserCommandValidator); var userService = InstantiateUserService( new Tuple <Type, object>(typeof(IValidationService), validationService) ); var command = new DeleteUserCommand() { UserId = userId }; // Act // Assert await Assert.ThrowsAsync <ValidationException>( () => userService.DeleteUser(command) ); }
public async Task DeleteUser_IsOnlyAdminOrManager_ThrowException(int adminCount, int managerCount) { // Arrange var userId = Guid.NewGuid().ToString(); var userRepositoryMock = new Mock <IUserRepository>(); userRepositoryMock.Setup(r => r.GetUserById(It.IsAny <string>())) .ReturnsAsync(new User() { Id = userId }); var userManagerMock = new Mock <IUserManager>(); userManagerMock .Setup(um => um.GetRoles(userId)) .ReturnsAsync(new[] { Constants.ROLE_AMIN, Constants.ROLE_USER_MANGER }); userManagerMock .Setup(um => um.CountUsersInRoles()) .ReturnsAsync(new Dictionary <string, int>() { [Constants.ROLE_AMIN] = adminCount, [Constants.ROLE_USER_MANGER] = managerCount, [Constants.ROLE_USER] = 10, }); var currentUserResolverMock = new Mock <ICurrentUserResolver>(); currentUserResolverMock.Setup(r => r.ResolveAsync()) .ReturnsAsync(new User() { Id = Guid.NewGuid().ToString() }); var deleteUserCommandValidator = new DeleteUserCommandValidator( userManagerMock.Object, userRepositoryMock.Object, currentUserResolverMock.Object ); var validationService = new ValidationService(deleteUserCommandValidator); var userService = InstantiateUserService( new Tuple <Type, object>(typeof(IValidationService), validationService) ); var command = new DeleteUserCommand() { UserId = userId }; // Act // Assert await Assert.ThrowsAsync <ValidationException>( () => userService.DeleteUser(command) ); }
public async Task Validate_GivenValidRequest_ShouldReturnTrue() { // Arrange var sut = new DeleteUserCommandValidator(); var query = new DeleteUserCommand(Guid.NewGuid()); // Act var res = await sut.ValidateAsync(query); // Assert res.IsValid.Should().BeTrue(); }
public async Task Validate_GivenInvalidRequest_ShouldReturnFalseWithErrors() { // Arrange var expectedNumberOfValidationErrors = 1; var sut = new DeleteUserCommandValidator(); var query = new DeleteUserCommand(Guid.Empty); // Act var res = await sut.ValidateAsync(query); // Assert res.IsValid.Should().BeFalse(); res.Errors.Count.Equals(expectedNumberOfValidationErrors); }
public async Task DeleteUser_WithoutForceButHasTimeEntries_ThrowException() { // Arrange var userId = Guid.NewGuid().ToString(); var userRepositoryMock = new Mock <IUserRepository>(); userRepositoryMock.Setup(r => r.GetUserById(It.IsAny <string>())) .ReturnsAsync(new User() { Id = userId, TimeEntries = new List <TimeEntry>() { new TimeEntry() } }); var userManagerMock = new Mock <IUserManager>(); var currentUserResolverMock = new Mock <ICurrentUserResolver>(); currentUserResolverMock.Setup(r => r.ResolveAsync()) .ReturnsAsync(new User() { Id = Guid.NewGuid().ToString() }); var deleteUserCommandValidator = new DeleteUserCommandValidator( userManagerMock.Object, userRepositoryMock.Object, currentUserResolverMock.Object ); var validationService = new ValidationService(deleteUserCommandValidator); var userService = InstantiateUserService( new Tuple <Type, object>(typeof(IValidationService), validationService) ); var command = new DeleteUserCommand() { UserId = userId }; // Act // Assert await Assert.ThrowsAsync <ValidationException>( () => userService.DeleteUser(command) ); }