public void ThrowsNotFoundExceptionWhenUserDoesNotExists() { var usersStub = new User[0].AsQueryable().BuildMock(); var userRepositoryStub = new Mock <IEfRepository <User> >(); userRepositoryStub.Setup(r => r.All(It.IsAny <bool>())) .Returns(usersStub.Object); var roleRepositoryStub = new Mock <IEfRepository <Role> >(); var contextSaveChangesStub = new Mock <MusicZoneDbContext>( new[] { "Fake Connection string" }); DemoteUserFromRole command = new DemoteUserFromRole() { UserId = "InvalidUserId" }; // Arrange DemoteUserFromRoleCommandService sut = new DemoteUserFromRoleCommandService( userRepository: userRepositoryStub.Object, roleRepository: roleRepositoryStub.Object, contextSaveChanges: contextSaveChangesStub.Object); // Act && Assert Assert.ThrowsAsync <NotFoundException>(async() => await sut.ExecuteAsync(command)); }
public void ThrowsNotFoundExceptionWhenTheRoleDoesNotExists() { const string roleName = "RoleName"; const string userId = "UserId"; var usersStub = new[] { new User() { Id = userId } } .AsQueryable() .BuildMock(); var userRepositoryStub = new Mock <IEfRepository <User> >(); userRepositoryStub.Setup(r => r.All(It.IsAny <bool>())) .Returns(usersStub.Object); var rolesStub = new[] { new Role() { Name = roleName } } .AsQueryable() .BuildMock(); var roleRepositoryStub = new Mock <IEfRepository <Role> >(); roleRepositoryStub.Setup(r => r.All(It.IsAny <bool>())) .Returns(rolesStub.Object); var contextSaveChangesStub = new Mock <MusicZoneDbContext>( new[] { "Fake Connection string" }); DemoteUserFromRole command = new DemoteUserFromRole() { UserId = userId, LoggedUserId = "AnotherUserId", RoleName = "AnotherRoleName" }; // Arrange DemoteUserFromRoleCommandService sut = new DemoteUserFromRoleCommandService( userRepository: userRepositoryStub.Object, roleRepository: roleRepositoryStub.Object, contextSaveChanges: contextSaveChangesStub.Object); // Act && Assert var ex = Assert.ThrowsAsync <NotFoundException>( async() => await sut.ExecuteAsync(command)); StringAssert.Contains("does not exists", ex.Message); }
public void ThrowsInvalidOperationExceptionWhenTheUserTriesToDemoteUserWithAdministratorRoleFromAnotherRole() { const string userId = "UserId"; var usersStub = new[] { new User() { Id = userId, Roles = new List <Role>() { new Role() { Name = "Administrator" } } } } .AsQueryable() .BuildMock(); var userRepositoryStub = new Mock <IEfRepository <User> >(); userRepositoryStub.Setup(r => r.All(It.IsAny <bool>())) .Returns(usersStub.Object); var roleRepositoryStub = new Mock <IEfRepository <Role> >(); var contextSaveChangesStub = new Mock <MusicZoneDbContext>( new[] { "Fake Connection string" }); DemoteUserFromRole command = new DemoteUserFromRole() { UserId = userId, LoggedUserId = "AnotherUserId", RoleName = RoleType.Uploader.ToString() }; // Arrange DemoteUserFromRoleCommandService sut = new DemoteUserFromRoleCommandService( userRepository: userRepositoryStub.Object, roleRepository: roleRepositoryStub.Object, contextSaveChanges: contextSaveChangesStub.Object); // Act && Assert Assert.ThrowsAsync <InvalidOperationException>( async() => await sut.ExecuteAsync(command)); }
public async Task <IActionResult> DemoteUser(UserRoleViewModel model) { string loggedUserId = this.User.FindFirst(ClaimTypes.NameIdentifier).Value; DemoteUserFromRole command = new DemoteUserFromRole() { UserId = model.UserId, RoleName = model.RoleName, LoggedUserId = loggedUserId }; string message = await this.CallServiceAsync( async() => await this.demoteUser.ExecuteAsync(command)); if (message != null) { return(RedirectToAction(nameof(this.Index)) .WithErrorMessage(message)); } return(RedirectToAction(nameof(this.Index)) .WithSuccessMessage($"User {model.Username} successfully demoted from {model.RoleName} role.")); }
public async Task RemoveRoleFromUserRolesWhenCommandContainsValidData() { const string roleName = "RoleName"; const string userId = "UserId"; List <Role> userRoles = new List <Role>() { new Role() { Name = roleName } }; var usersStub = new[] { new User() { Id = userId, Roles = userRoles } } .AsQueryable() .BuildMock(); var userRepositoryStub = new Mock <IEfRepository <User> >(); userRepositoryStub.Setup(r => r.All(It.IsAny <bool>())) .Returns(usersStub.Object); var rolesStub = new[] { new Role() { Name = roleName } } .AsQueryable() .BuildMock(); var roleRepositoryStub = new Mock <IEfRepository <Role> >(); roleRepositoryStub.Setup(r => r.All(It.IsAny <bool>())) .Returns(rolesStub.Object); var contextSaveChangesStub = new Mock <MusicZoneDbContext>( new[] { "Fake Connection string" }); DemoteUserFromRole command = new DemoteUserFromRole() { UserId = userId, LoggedUserId = "AnotherUserId", RoleName = roleName }; // Arrange DemoteUserFromRoleCommandService sut = new DemoteUserFromRoleCommandService( userRepository: userRepositoryStub.Object, roleRepository: roleRepositoryStub.Object, contextSaveChanges: contextSaveChangesStub.Object); // Act await sut.ExecuteAsync(command); // Assert Assert.AreEqual(0, userRoles.Count); }