public void GetAssignment_ConstructsQuery_ReturnsResultOfDispatch() { var assignmentId = TestIds.A; var result = new AssignmentToUserDto(); _dispatcherMock.Setup(d => d.QueryAsync(It.Is <GetAssignmentToUser>(q => q.Id == assignmentId))).ReturnsAsync(result).Verifiable(); var actionResult = _controller.GetAssignment(assignmentId).GetAwaiter().GetResult(); Assert.AreEqual(actionResult.Value, result); _dispatcherMock.Verify(); }
public async Task <ActionResult> UpdateAssignmentToUser(Guid id, AssignmentToUserDto dto) { if (!(await _authService.IsAdministrator(User))) { if (dto.UserId != Guid.Empty) { ModelState.AddModelError("field_is_readonly", "Only administrators may re-assign assignments to user to other users"); return(ValidationProblem()); } dto.UserId = User.GetUserId(); } return(await SendAndHandleOperationCommand( new UpdateAssignmentToUser(id, dto.MeansId, dto.ValidSince, dto.ValidUntil, dto.UserId, dto.IsShared) )); }
public async Task <ActionResult> CreateAssignmentToUser(AssignmentToUserDto dto) { if (!(await _authService.IsAdministrator(User))) { if (dto.UserId != Guid.Empty) { ModelState.AddModelError("field_is_readonly", "Only administrators may create assignments to user for other users"); return(ValidationProblem()); } dto.UserId = User.GetUserId(); } return(await SendAndHandleIdentifierResultCommand( new CreateAssignmentToUser(Guid.NewGuid(), dto.MeansId, dto.ValidSince, dto.ValidUntil, dto.UserId, dto.IsShared), nameof(GetAssignmentToUser) )); }
public async Task <IUserIdResolutionResult> HandleAsync(IResolveAuthenticationMeansUserId command, ICorrelationContext correlationContext) { var authenticationMeans = await _queryDispatcher.QueryAsync(new GetAuthenticationMeans(command.AuthenticationMeansId)); if (authenticationMeans is null) { return(new UserIdResolutionResult("authentication_means_not_found", $"Could not find authentication means with ID '{command.AuthenticationMeansId}'")); } if (!authenticationMeans.IsValid) { return(new UserIdResolutionResult("authentication_means_not_valid", $"The authentication means with ID '{command.AuthenticationMeansId}' is not valid")); } AssignmentToUserDto validUserAssignment = null; var now = DateTimeOffset.UtcNow; await _queryDispatcher.QueryAllPages( // todo new BrowseAssignmentsToUser() { OfAuthenticationMeans = authenticationMeans.Id }, assignment => { if (assignment.ValidSince > now) { return(false); } if (assignment.ValidUntil < now) { return(false); } if (assignment.IsShared && command.ExcludeSharedAuthenticationMeans) { return(false); } validUserAssignment = assignment; return(true); } ); if (validUserAssignment is null) { return(new UserIdResolutionResult("authentication_means_not_assigned", $"The authentication means with ID '{command.AuthenticationMeansId}' is not assigned to any user")); } var user = await _usersService.GetUser(validUserAssignment.AssignedToUserId); if (user is null) { return(new UserIdResolutionResult("authentication_means_assignment_not_valid", $"The authentication means with ID '{command.AuthenticationMeansId}' is assigned to user with ID '{validUserAssignment.AssignedToUserId}' which was not found.")); } else if (!user.IsActive) { return(new UserIdResolutionResult("authentication_means_assignment_not_valid", $"The authentication means with ID '{command.AuthenticationMeansId}' is assigned to user with ID '{validUserAssignment.AssignedToUserId}' which is an inactive account.")); } return(new UserIdResolutionResult( validUserAssignment.AssignedToUserId, validUserAssignment.Id, validUserAssignment.IsShared, validUserAssignment.SpendingLimits.Select(spl => new KeyValuePair <TimeSpan, decimal>(spl.Interval, spl.Value)).ToArray() )); }