示例#1
0
        public async Task Details_WithCorrectUsername_ShouldReturnValidViewModel()
        {
            //Arrange
            IQueryable <IdentityRole> roles = new List <IdentityRole>()
            {
                new IdentityRole("firstRole"), new IdentityRole("secondRole"), new IdentityRole("thirdRole")
            }.AsQueryable();

            Mock <RoleManager <IdentityRole> > roleManager = RoleManagerMock.New();

            roleManager
            .Setup(r => r.Roles)
            .Returns(roles);

            Mock <UserManager <User> > userManager = UserManagerMock.New();

            userManager
            .Setup(u => u.FindByNameAsync(username))
            .ReturnsAsync(user);
            userManager
            .Setup(u => u.GetRolesAsync(user))
            .ReturnsAsync(new List <string>()
            {
                "firstRole", "secondRole", "thirdRole"
            });

            Mock <IAdminUserService> adminUserService = new Mock <IAdminUserService>();

            adminUserService
            .Setup(a => a.GetDetailsByUsernameAsync(username))
            .ReturnsAsync(new AdminUserDetailsServiceModel());

            UsersController usersController = new UsersController(roleManager.Object, userManager.Object, adminUserService.Object, null, null);

            //Assert
            var result = await usersController.Details(username);

            //Assert
            result.Should().BeOfType <ViewResult>();

            result.As <ViewResult>().Model.Should().BeOfType <AdminUserDetailsServiceModel>();

            AdminUserDetailsServiceModel model = result.As <ViewResult>().Model.As <AdminUserDetailsServiceModel>();

            model.CurrentRoles.First().Text.Should().Be(roles.First().Name);
            model.CurrentRoles.First().Value.Should().Be(roles.First().Name);
            model.CurrentRoles.Last().Text.Should().Be(roles.Last().Name);
            model.CurrentRoles.Last().Value.Should().Be(roles.Last().Name);
            model.AllRoles.Should().HaveCount(0);
        }
示例#2
0
        public async Task GetDetailsByUsernameAsync_WithUsername_ShouldReturnValidServiceModel()
        {
            // Arrange
            FitStoreDbContext database = this.Database;

            DatabaseHelper.SeedData(database);

            IAdminUserService adminUserService = new AdminUserService(database);

            // Act
            AdminUserDetailsServiceModel result = await adminUserService.GetDetailsByUsernameAsync(firstUsername);

            // Assert
            result.Username.Should().Be(firstUsername);
            result.Address.Should().Be(firstAddress);
            result.Email.Should().Be(firstEmail);
        }
        public async Task <IActionResult> Details(string username)
        {
            User user = await this.userManager.FindByNameAsync(username);

            if (user == null)
            {
                TempData.AddErrorMessage(string.Format(EntityNotFound, UserEntity));

                return(this.RedirectToAction(nameof(Index)));
            }

            AdminUserDetailsServiceModel model = await this.adminUserService.GetDetailsByUsernameAsync(username);

            IList <string> currentRolesAsString = await this.userManager.GetRolesAsync(user);

            IEnumerable <SelectListItem> currentRoles = this.roleManager
                                                        .Roles
                                                        .Where(r => currentRolesAsString.Contains(r.Name))
                                                        .Select(r => new SelectListItem
            {
                Value = r.Name,
                Text  = r.Name
            })
                                                        .ToList();

            IEnumerable <SelectListItem> allRoles = this.roleManager
                                                    .Roles
                                                    .Where(r => !currentRolesAsString.Contains(r.Name))
                                                    .Select(r => new SelectListItem
            {
                Value = r.Name,
                Text  = r.Name
            })
                                                    .ToList();

            model.CurrentRoles = currentRoles;
            model.AllRoles     = allRoles;

            return(View(model));
        }