Example #1
0
        public async Task UpdateAsync()
        {
            //Arrange

            var johnNash = await GetUserAsync("john.nash");

            var input = new IdentityUserUpdateDto
            {
                UserName         = johnNash.UserName,
                LockoutEnabled   = true,
                TwoFactorEnabled = true,
                PhoneNumber      = CreateRandomPhoneNumber(),
                Email            = CreateRandomEmail()
            };

            //Act

            var result = await _userAppService.UpdateAsync(johnNash.Id, input);

            //Assert

            result.Id.ShouldBe(johnNash.Id);
            result.UserName.ShouldBe(input.UserName);
            result.Email.ShouldBe(input.Email);
            result.LockoutEnabled.ShouldBe(input.LockoutEnabled);
            result.PhoneNumber.ShouldBe(input.PhoneNumber);

            var user = await _userRepository.GetAsync(result.Id);

            user.Id.ShouldBe(result.Id);
            user.UserName.ShouldBe(input.UserName);
            user.Email.ShouldBe(input.Email);
            user.LockoutEnabled.ShouldBe(input.LockoutEnabled);
            user.PhoneNumber.ShouldBe(input.PhoneNumber);
        }
Example #2
0
        public async Task UpdateAsync_Concurrency_Exception()
        {
            //Get user
            var johnNash = await _userAppService.GetAsync(_testData.UserJohnId).ConfigureAwait(false);

            //Act

            var input = new IdentityUserUpdateDto
            {
                Name             = "John-updated",
                Surname          = "Nash-updated",
                UserName         = johnNash.UserName,
                LockoutEnabled   = true,
                TwoFactorEnabled = true,
                PhoneNumber      = CreateRandomPhoneNumber(),
                Email            = CreateRandomEmail(),
                RoleNames        = new[] { "admin", "moderator" },
                ConcurrencyStamp = johnNash.ConcurrencyStamp
            };

            await _userAppService.UpdateAsync(johnNash.Id, input).ConfigureAwait(false);

            //Second update with same input will throw exception because the entity has been modified
            (await Assert.ThrowsAsync <AbpIdentityResultException>(async() =>
            {
                await _userAppService.UpdateAsync(johnNash.Id, input).ConfigureAwait(false);
            }).ConfigureAwait(false)).Message.ShouldContain("Optimistic concurrency failure");
        }
Example #3
0
        public virtual async Task <IdentityUserDto> UpdateAsync(Guid id, IdentityUserUpdateDto input)
        {
            await IdentityOptions.SetAsync();

            var user = await UserManager.GetByIdAsync(id);

            user.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);

            (await UserManager.SetUserNameAsync(user, input.UserName)).CheckErrors();

            await UpdateUserByInput(user, input);

            input.MapExtraPropertiesTo(user);

            (await UserManager.UpdateAsync(user)).CheckErrors();

            if (!input.Password.IsNullOrEmpty())
            {
                (await UserManager.RemovePasswordAsync(user)).CheckErrors();
                (await UserManager.AddPasswordAsync(user, input.Password)).CheckErrors();
            }

            await CurrentUnitOfWork.SaveChangesAsync();

            return(ObjectMapper.Map <IdentityUser, IdentityUserDto>(user));
        }
        public async Task <IdentityUserDto> UpdateAsync(Guid id, IdentityUserUpdateDto input)
        {
            var user = await _userManager.GetByIdAsync(id);

            CheckIdentityErrors(await _userManager.SetUserNameAsync(user, input.UserName));
            await UpdateUserByInput(user, input);

            CheckIdentityErrors(await _userManager.UpdateAsync(user));
            await CurrentUnitOfWork.SaveChangesAsync();

            return(ObjectMapper.Map <IdentityUser, IdentityUserDto>(user));
        }
Example #5
0
        public async Task UpdateAsync()
        {
            //Arrange

            var johnNash = GetUser("john.nash");

            var input = new IdentityUserUpdateDto
            {
                UserName         = johnNash.UserName,
                LockoutEnabled   = true,
                TwoFactorEnabled = true,
                PhoneNumber      = CreateRandomPhoneNumber(),
                Password         = "******",
                Email            = CreateRandomEmail(),
                RoleNames        = new[] { "admin", "moderator" },
                ConcurrencyStamp = johnNash.ConcurrencyStamp,
                Surname          = johnNash.Surname,
                Name             = johnNash.Name
            };

            //Act

            var result = await _userAppService.UpdateAsync(johnNash.Id, input).ConfigureAwait(false);

            //Assert

            result.Id.ShouldBe(johnNash.Id);
            result.UserName.ShouldBe(input.UserName);
            result.Email.ShouldBe(input.Email);
            result.LockoutEnabled.ShouldBe(input.LockoutEnabled);
            result.PhoneNumber.ShouldBe(input.PhoneNumber);

            var user = await _userRepository.GetAsync(result.Id).ConfigureAwait(false);

            user.Id.ShouldBe(result.Id);
            user.UserName.ShouldBe(input.UserName);
            user.Email.ShouldBe(input.Email);
            user.LockoutEnabled.ShouldBe(input.LockoutEnabled);
            user.PhoneNumber.ShouldBe(input.PhoneNumber);
            user.Roles.Count.ShouldBe(2);
        }
Example #6
0
        public async Task <IdentityUserDto> UpdateAsync(Guid id, IdentityUserUpdateDto input)
        {
            var user = await _userManager.GetByIdAsync(id);

            user.ConcurrencyStamp = input.ConcurrencyStamp;

            (await _userManager.SetUserNameAsync(user, input.UserName)).CheckErrors();
            await UpdateUserByInput(user, input);

            (await _userManager.UpdateAsync(user)).CheckErrors();

            if (!input.Password.IsNullOrEmpty())
            {
                (await _userManager.RemovePasswordAsync(user)).CheckErrors();
                (await _userManager.AddPasswordAsync(user, input.Password)).CheckErrors();
            }

            await CurrentUnitOfWork.SaveChangesAsync();

            return(ObjectMapper.Map <IdentityUser, IdentityUserDto>(user));
        }
Example #7
0
 public virtual Task <IdentityUserDto> UpdateAsync(Guid id, IdentityUserUpdateDto input)
 {
     return(UserAppService.UpdateAsync(id, input));
 }