public async Task Handle_InvalidUserName_MustReturnNotFound() { // Arrange var request = new EditRoles(DiverFactory.JaneDoeUserName, new[] { "role1" }); // Act var useCaseResult = await interactor.Handle(request, CancellationToken.None); // Assert useCaseResult.IsSuccessful.Should().BeFalse(); useCaseResult.ResultCategory.Should().Be(ResultCategory.NotFound); }
public async Task Handle_Success() { // Arrange var request = new EditRoles(DiverFactory.JohnDoeUserName, new[] { "role2", "role3" }); // Act var useCaseResult = await interactor.Handle(request, CancellationToken.None); // Assert useCaseResult.IsSuccessful.Should().BeTrue(); A.CallTo(() => userManager.AddToRoleAsync(A <IdentityUser> ._, "role3")) .MustHaveHappenedOnceExactly(); A.CallTo(() => userManager.RemoveFromRoleAsync(A <IdentityUser> ._, "role1")) .MustHaveHappenedOnceExactly(); }
public async Task <IActionResult> EditRoles(EditRoles editRoles) { try { var user = await _userManager.FindByNameAsync(editRoles.Username); if (editRoles.NewRole == "Standard" || editRoles.NewRole == "Admin") { // find out what roles the user currently belongs to var userRoles = await _userManager.GetRolesAsync(user); //can not have less than 2 admins if (editRoles.NewRole == "Admin" || editRoles.NewRole == "Standard" && _repo.GetNumberOfAdmins() >= 2) { // remove user from old role var removeUserRole = await _userManager.GetRolesAsync(user); var userRoleRemoved = await _userManager.RemoveFromRolesAsync(user, removeUserRole); // add user to the new roles var result = await _userManager.AddToRoleAsync(user, editRoles.NewRole); if (!result.Succeeded) { return(BadRequest("Failed to add to roles")); } if (!userRoleRemoved.Succeeded) { return(BadRequest("failed to remove the roles")); } return(Ok("User role has been changed")); } return(BadRequest("You cannot have less than 2 admins")); } return(BadRequest("Incorrect role inserted")); } catch (ArgumentNullException) { return(BadRequest("Username does not exist")); } }