public async Task Should_Not_Update_User_With_Duplicate_Username_Or_EmailAddress()
        {
            //Arrange

            CreateTestUsers();
            var jnashUser = await GetUserByUserNameOrNullAsync("jnash");

            //Act

            //Try to update with existing username
            await UserAppService.CreateOrUpdate(
                new CreateOrUpdateUserInput
            {
                User = new UserEditDto
                {
                    Id           = jnashUser.Id,
                    EmailAddress = "*****@*****.**",
                    PhoneNumber  = "13388888888",
                    //Surname = "Nash",
                    UserName = "******",     //Changed user name to an existing user
                    Password = "******"
                },
                AssignedRoleNames = new string[0]
            });

            var jnashUser1 = await GetUserByUserNameOrNullAsync("adams_dd");

            jnashUser1.ShouldNotBeNull();

            //exception.Message.ShouldContain("adams_d");

            //Try to update with existing email address
            await UserAppService.CreateOrUpdate(
                new CreateOrUpdateUserInput
            {
                User = new UserEditDto
                {
                    Id           = jnashUser.Id,
                    EmailAddress = "*****@*****.**",     //Changed email to an existing user
                    PhoneNumber  = "13388888888",
                    //Surname = "Nash",
                    UserName = "******",
                    Password = "******"
                },
                AssignedRoleNames = new string[0]
            });

            var jnashUser2 = await GetUserByUserNameOrNullAsync("jnash");

            jnashUser2.ShouldNotBeNull();
        }
Exemplo n.º 2
0
        private async Task CreateUserAndTestAsync(string userName, string name, string surname, string emailAddress, int?tenantId, params string[] roleNames)
        {
            //Arrange
            AbpSession.TenantId = tenantId;

            //Act
            await UserAppService.CreateOrUpdate(
                new CreateOrUpdateUserInput
            {
                User = new UserEditDto
                {
                    EmailAddress = emailAddress,
                    //Name = name,
                    //Surname = surname,
                    UserName = userName,
                    Password = "******",
                },
                AssignedRoleNames = roleNames
            });

            //Assert
            await UsingDbContextAsync(async context =>
            {
                //Get created user
                var createdUser = await context.Users.Include(u => u.Roles).FirstOrDefaultAsync(u => u.UserName == userName);
                createdUser.ShouldNotBe(null);

                //Check some properties
                createdUser.EmailAddress.ShouldBe(emailAddress);
                createdUser.TenantId.ShouldBe(tenantId);

                //Check roles
                if (roleNames.IsNullOrEmpty())
                {
                    createdUser.Roles.Count.ShouldBe(0);
                }
                else
                {
                    createdUser.Roles.Count.ShouldBe(roleNames.Length);
                    foreach (var roleName in roleNames)
                    {
                        var roleId = (await GetRoleAsync(roleName)).Id;
                        createdUser.Roles.Any(ur => ur.RoleId == roleId && ur.TenantId == tenantId).ShouldBe(true);
                    }
                }
            });
        }
        public async Task Update_User_Basic_Tests()
        {
            //Arrange
            var managerRole = CreateRole("Manager");
            var adminUser   = await GetUserByUserNameOrNullAsync(AbpUserBase.AdminUserName);

            //Act
            await UserAppService.CreateOrUpdate(
                new CreateOrUpdateUserInput
            {
                User = new UserEditDto
                {
                    Id           = adminUser.Id,
                    EmailAddress = "*****@*****.**",
                    //Name = "System1",
                    //Surname = "Admin2",
                    Password = "******",
                    UserName = adminUser.UserName
                },
                AssignedRoleNames = new[] { "Manager" }
            });

            //Assert
            await UsingDbContextAsync(async context =>
            {
                //Get created user
                var updatedAdminUser = await GetUserByUserNameOrNullAsync(adminUser.UserName, includeRoles: true);
                updatedAdminUser.ShouldNotBe(null);
                updatedAdminUser.Id.ShouldBe(adminUser.Id);

                //Check some properties
                updatedAdminUser.EmailAddress.ShouldBe("*****@*****.**");
                updatedAdminUser.TenantId.ShouldBe(AbpSession.TenantId);

                LocalIocManager
                .Resolve <IPasswordHasher <User> >()
                .VerifyHashedPassword(updatedAdminUser, updatedAdminUser.Password, "123qwE*")
                .ShouldBe(PasswordVerificationResult.Success);

                //Check roles
                updatedAdminUser.Roles.Count.ShouldBe(1);
                updatedAdminUser.Roles.Any(ur => ur.RoleId == managerRole.Id).ShouldBe(true);
            });
        }
Exemplo n.º 4
0
        public async Task Should_Not_Create_User_With_Duplicate_Username_Or_EmailAddress()
        {
            //Arrange
            CreateTestUsers();

            //Act
            await Assert.ThrowsAsync <UserFriendlyException>(
                async() =>
                await UserAppService.CreateOrUpdate(
                    new CreateOrUpdateUserInput
            {
                User = new UserEditDto
                {
                    EmailAddress = "*****@*****.**",
                    //Name = "John",
                    //Surname = "Nash",
                    UserName = "******",             //Same username is added before (in CreateTestUsers)
                    Password = "******"
                },
                AssignedRoleNames = new string[0]
            }));
        }
        public async Task Should_Remove_From_Role()
        {
            LoginAsHostAdmin();

            //Arrange
            var adminUser = await GetUserByUserNameOrNullAsync(AbpUserBase.AdminUserName);

            await UsingDbContextAsync(async context =>
            {
                var roleCount = await context.UserRoles.CountAsync(ur => ur.UserId == adminUser.Id);
                roleCount.ShouldBeGreaterThan(0); //There should be 1 role at least
            });

            //Act
            await UserAppService.CreateOrUpdate(
                new CreateOrUpdateUserInput
            {
                User = new UserEditDto     //Not changing user properties
                {
                    Id           = adminUser.Id,
                    EmailAddress = adminUser.EmailAddress,
                    //Name = adminUser.Name,
                    //Surname = adminUser.Surname,
                    UserName = adminUser.UserName,
                    Password = null
                },
                AssignedRoleNames = new[] { StaticRoleNames.Host.Admin }     //Just deleting all roles expect admin
            });

            //Assert
            await UsingDbContextAsync(async context =>
            {
                var roleCount = await context.UserRoles.CountAsync(ur => ur.UserId == adminUser.Id);
                roleCount.ShouldBe(1);
            });
        }