mirror of https://github.com/abpframework/abp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
5.3 KiB
181 lines
5.3 KiB
using System;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Shouldly;
|
|
using Volo.Abp.Application.Dtos;
|
|
using Volo.Abp.Domain.Repositories;
|
|
using Xunit;
|
|
|
|
namespace Volo.Abp.Identity
|
|
{
|
|
public class IdentityUserAppService_Tests : AbpIdentityApplicationTestBase
|
|
{
|
|
private readonly IIdentityUserAppService _identityUserAppService;
|
|
private readonly IRepository<IdentityUser> _userRepository;
|
|
|
|
public IdentityUserAppService_Tests()
|
|
{
|
|
_identityUserAppService = ServiceProvider.GetRequiredService<IIdentityUserAppService>();
|
|
_userRepository = ServiceProvider.GetRequiredService<IRepository<IdentityUser>>();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetAsync()
|
|
{
|
|
//Arrange
|
|
|
|
var johnNash = await GetUserAsync("john.nash");
|
|
|
|
//Act
|
|
|
|
var result = await _identityUserAppService.GetAsync(johnNash.Id);
|
|
|
|
//Assert
|
|
|
|
result.Id.ShouldBe(johnNash.Id);
|
|
result.UserName.ShouldBe(johnNash.UserName);
|
|
result.Email.ShouldBe(johnNash.Email);
|
|
result.LockoutEnabled.ShouldBe(johnNash.LockoutEnabled);
|
|
result.PhoneNumber.ShouldBe(johnNash.PhoneNumber);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetListAsync()
|
|
{
|
|
//Act
|
|
|
|
var result = await _identityUserAppService.GetListAsync(new PagedAndSortedResultRequestDto());
|
|
|
|
//Assert
|
|
|
|
result.TotalCount.ShouldBeGreaterThan(0);
|
|
result.Items.Count.ShouldBeGreaterThan(0);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task CreateAsync()
|
|
{
|
|
//Arrange
|
|
|
|
var input = new IdentityUserCreateDto
|
|
{
|
|
UserName = Guid.NewGuid().ToString(),
|
|
Email = CreateRandomEmail(),
|
|
LockoutEnabled = true,
|
|
PhoneNumber = CreateRandomPhoneNumber(),
|
|
Password = "123qwe",
|
|
Roles = new[] {"moderator"}
|
|
};
|
|
|
|
//Act
|
|
|
|
var result = await _identityUserAppService.CreateAsync(input);
|
|
|
|
//Assert
|
|
|
|
result.Id.ShouldNotBe(Guid.Empty);
|
|
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);
|
|
}
|
|
|
|
[Fact]
|
|
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 _identityUserAppService.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);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task DeleteAsync()
|
|
{
|
|
//Arrange
|
|
|
|
var johnNash = await GetUserAsync("john.nash");
|
|
|
|
//Act
|
|
|
|
await _identityUserAppService.DeleteAsync(johnNash.Id);
|
|
|
|
//Assert
|
|
|
|
(await FindUserAsync("john.nash")).ShouldBeNull();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetRolesAsync()
|
|
{
|
|
//Arrange
|
|
|
|
var johnNash = await GetUserAsync("john.nash");
|
|
|
|
//Act
|
|
|
|
var result = await _identityUserAppService.GetRolesAsync(johnNash.Id);
|
|
|
|
//Assert
|
|
|
|
result.Items.Count.ShouldBe(1);
|
|
result.Items[0].Name.ShouldBe("moderator");
|
|
}
|
|
|
|
private async Task<IdentityUser> GetUserAsync(string userName)
|
|
{
|
|
return (await _userRepository.GetListAsync()).First(u => u.UserName == userName);
|
|
}
|
|
|
|
private async Task<IdentityUser> FindUserAsync(string userName)
|
|
{
|
|
return (await _userRepository.GetListAsync()).FirstOrDefault(u => u.UserName == userName);
|
|
}
|
|
|
|
private static string CreateRandomEmail()
|
|
{
|
|
return Guid.NewGuid().ToString("N").Left(16) + "@abp.io";
|
|
}
|
|
|
|
private static string CreateRandomPhoneNumber()
|
|
{
|
|
return RandomHelper.GetRandom(10000000, 100000000).ToString();
|
|
}
|
|
}
|
|
}
|