public void ShouldThrowServiceExceptionOnRetrieveAllWhenExceptionOccursAndLogIt() { // given var exception = new Exception(); var expectedUserServiceException = new UserServiceException(exception); this.userManagementBrokerMock.Setup(broker => broker.SelectAllUsers()) .Throws(exception); // when . then Assert.Throws <UserServiceException>(() => this.userService.RetrieveAllUsers()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedUserServiceException))), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.SelectAllUsers(), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); }
/// <summary> /// /// </summary> /// <param name="dumper"></param> public void GetDump(IDump dumper) { if (ReferenceEquals(dumper, null)) { var ex = new ArgumentNullException($"{nameof(dumper)} is null"); this.logger?.Error(ex, ex.Message); throw ex; } try { this.storage = new HashSet <User>(dumper.Load(), this.userEqualityComparer); this.logger?.Info($"Requested {this.storage.Count} users from dump file"); } catch (IOException exception) { var ex = new UserServiceException("Can't load Users", exception); this.logger?.Error(ex, ex.Message); throw ex; } catch (InvalidOperationException exception) { var ex = new UserServiceException("Can't load Users", exception); this.logger?.Error(ex, ex.Message); throw ex; } }
public async Task ShouldThrowServiceExceptionOnRetrieveWhenExceptionOccursAndLogItAsync() { // given Guid randomUserId = Guid.NewGuid(); Guid inputUserId = randomUserId; var exception = new Exception(); var expectedUserServiceException = new UserServiceException(exception); this.userManagementBrokerMock.Setup(broker => broker.SelectUserByIdAsync(inputUserId)) .ThrowsAsync(exception); // when ValueTask <User> retrieveUserTask = this.userService.RetrieveUserByIdAsync(inputUserId); // then await Assert.ThrowsAsync <UserServiceException>(() => retrieveUserTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedUserServiceException))), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.SelectUserByIdAsync(inputUserId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); }
private async Task <bool> CheckUsernameExistsInAdAsync(string username) { try { _logger.LogDebug("Attempting to check if {username} exists in AD", username); var person = await _userApiClient.GetUserByAdUserNameAsync(username); Enum.TryParse <UserRoleType>(person.UserRole, out var userRoleResult); if (userRoleResult == UserRoleType.Judge || userRoleResult == UserRoleType.VhOfficer) { var e = new UserServiceException { Reason = $"Unable to delete account with role {userRoleResult}" }; _logger.LogError(e, "Not allowed to delete {username}", username); throw e; } _logger.LogDebug("{username} exists in AD", username); return(true); } catch (UserApiException e) { _logger.LogError(e, "Failed to get user {username} in User API. Status Code {StatusCode} - Message {Message}", username, e.StatusCode, e.Response); if (e.StatusCode == (int)HttpStatusCode.NotFound) { _logger.LogWarning(e, "{username} not found. Status Code {StatusCode} - Message {Message}", username, e.StatusCode, e.Response); return(false); } throw; } }
public void Dump(IDump dumper) { if (ReferenceEquals(dumper, null)) { var ex = new ArgumentNullException($"{nameof(dumper)} is null"); this.logger?.Error(ex, ex.Message); throw ex; } try { dumper.Save(this.storage); this.logger?.Info($"Dumped {this.storage.Count} users"); } catch (IOException exception) { var ex = new UserServiceException("Can't save Users", exception); this.logger?.Error(ex, ex.Message); throw ex; } catch (InvalidOperationException exception) { var ex = new UserServiceException("Can't save Users", exception); this.logger?.Error(ex, ex.Message); throw ex; } }
private UserServiceException CreateAndLogServiceException(Exception exception) { var userServiceException = new UserServiceException(exception); this.loggingBroker.LogError(userServiceException); return(userServiceException); }
public void Should_return_reason_message() { const string reason = "reason of error"; const string message = "message error"; var exception = new UserServiceException(message, reason); Assert.AreEqual(reason, exception.Reason); Assert.AreEqual($"{message}: {reason}", exception.Message); }
public void Should_return_empty_reson_message() { const string reason = ""; const string message = ""; var exception = new UserServiceException(message, reason); Assert.AreEqual(reason, exception.Reason); Assert.AreEqual(": ", exception.Message); }
public async Task ShouldThrowServiceExceptionOnModifyIfServiceExceptionOccursAndLogItAsync() { // given int randomNegativeNumber = GetNegativeRandomNumber(); DateTimeOffset randomDateTime = GetRandomDateTime(); User randomUser = CreateRandomUser(randomDateTime); User someUser = randomUser; someUser.CreatedDate = randomDateTime.AddMinutes(randomNegativeNumber); var serviceException = new Exception(); var failedUserServiceException = new FailedUserServiceException(serviceException); var expectedUserServiceException = new UserServiceException(failedUserServiceException); this.userManagementBrokerMock.Setup(broker => broker.SelectUserByIdAsync(It.IsAny <Guid>())) .ThrowsAsync(serviceException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDateTime); // when ValueTask <User> modifyUserTask = this.userService.ModifyUserAsync(someUser); // then await Assert.ThrowsAsync <UserServiceException>(() => modifyUserTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.SelectUserByIdAsync(It.IsAny <Guid>()), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedUserServiceException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowServiceExceptionOnCreateWhenExceptionOccursAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); User randomUser = CreateRandomUser(dates: dateTime); User inputUser = randomUser; var serviceException = new Exception(); string password = GetRandomPassword(); var failedUserServiceException = new FailedUserServiceException(serviceException); var expectedAssignmentServiceException = new UserServiceException(failedUserServiceException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); this.userManagementBrokerMock.Setup(broker => broker.InsertUserAsync(It.IsAny <User>(), It.IsAny <string>())) .ThrowsAsync(serviceException); // when ValueTask <User> registerUserTask = this.userService.RegisterUserAsync(inputUser, password); // then await Assert.ThrowsAsync <UserServiceException>(() => registerUserTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedAssignmentServiceException))), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.InsertUserAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); }
public void LoadPreviousSate(ISaveState saver) { if (ReferenceEquals(saver, null)) { var ex = new ArgumentNullException($"{nameof(saver)} is null"); this.logger?.Error(ex, ex.Message); throw ex; } try { rwLockSlim.EnterReadLock(); try { this.storage = new HashSet <User>(saver.Load(), this.userEqualityComparer); } finally { rwLockSlim.ExitReadLock(); } this.logger?.Info($"Requested {this.storage.Count} users from storage"); } catch (IOException exception) { var ex = new UserServiceException("Can't load Users", exception); this.logger?.Error(ex, ex.Message); throw ex; } catch (InvalidOperationException exception) { var ex = new UserServiceException("Can't load Users", exception); this.logger?.Error(ex, ex.Message); throw ex; } foreach (var user in storage) { Notify(new Message { Action = Action.Add, User = user.Clone() }); } }
public async Task ShouldThrowServiceExceptionOnDeleteWhenExceptionOccursAndLogItAsync() { // given Guid someUserId = Guid.NewGuid(); var serviceException = new Exception(); var failedUserServiceException = new FailedUserServiceException(serviceException); var expectedUserServiceException = new UserServiceException(failedUserServiceException); this.userManagementBrokerMock.Setup(broker => broker.SelectUserByIdAsync(It.IsAny <Guid>())) .ThrowsAsync(serviceException); // when ValueTask <User> deleteUserTask = this.userService.RemoveUserByIdAsync(someUserId); // then await Assert.ThrowsAsync <UserServiceException>(() => deleteUserTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedUserServiceException))), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.SelectUserByIdAsync(It.IsAny <Guid>()), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); }
public void SaveCurrentState(ISaveState saver) { if (ReferenceEquals(saver, null)) { var ex = new ArgumentNullException($"{nameof(saver)} is null"); this.logger?.Error(ex, ex.Message); throw ex; } try { rwLockSlim.EnterReadLock(); try { saver.Save(this.storage); } finally { rwLockSlim.ExitReadLock(); } this.logger?.Info($"Saved {this.storage.Count} users"); } catch (IOException exception) { var ex = new UserServiceException("Can't save Users", exception); this.logger?.Error(ex, ex.Message); throw ex; } catch (InvalidOperationException exception) { var ex = new UserServiceException("Can't save Users", exception); this.logger?.Error(ex, ex.Message); throw ex; } }
public async Task ResetParticipantPassword(string userName) { _logger.LogDebug("Attempting to reset AD user {Username}", userName); var userProfile = await _userApiClient.GetUserByAdUserNameAsync(userName); if (userProfile == null) { var e = new UserServiceException { Reason = "Unable to generate new password" }; _logger.LogError(e, "Unable to reset password for AD user {Username}", userName); throw e; } _logger.LogDebug("AD user {Username} found", userName); var passwordResetResponse = await _userApiClient.ResetUserPasswordAsync(userName); _logger.LogDebug("AD user {Username} password has been reset", userName); var passwordResetNotificationRequest = AddNotificationRequestMapper.MapToPasswordResetNotification( $"{userProfile.FirstName} {userProfile.LastName}", passwordResetResponse.NewPassword, userProfile.Email); await _notificationApiClient.CreateNewNotificationAsync(passwordResetNotificationRequest); }
public void SetUp() { _exception = new UserServiceException("Error message", "reason"); }