|
|
|
@ -1,6 +1,7 @@ |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Security.Claims; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Microsoft.AspNetCore.Identity; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
@ -26,8 +27,10 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase |
|
|
|
private readonly IUnitOfWorkManager _unitOfWorkManager; |
|
|
|
private readonly IdentityTestData _testData; |
|
|
|
private readonly ICurrentTenant _currentTenant; |
|
|
|
protected IOptions<IdentityOptions> _identityOptions { get; } |
|
|
|
protected IDistributedEventBus DistributedEventBus { get; set; } |
|
|
|
private readonly IOptions<IdentityOptions> _identityOptions; |
|
|
|
private readonly IdentityLinkUserManager _identityLinkUserManager; |
|
|
|
|
|
|
|
private IDistributedEventBus _distributedEventBus { get; set; } |
|
|
|
|
|
|
|
public IdentityUserManager_Tests() |
|
|
|
{ |
|
|
|
@ -40,12 +43,13 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase |
|
|
|
_unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>(); |
|
|
|
_currentTenant = GetRequiredService<ICurrentTenant>(); |
|
|
|
_identityOptions = GetRequiredService<IOptions<IdentityOptions>>(); |
|
|
|
_identityLinkUserManager = GetRequiredService<IdentityLinkUserManager>(); |
|
|
|
} |
|
|
|
|
|
|
|
protected override void AfterAddApplication(IServiceCollection services) |
|
|
|
{ |
|
|
|
DistributedEventBus = Substitute.For<IDistributedEventBus>(); |
|
|
|
services.Replace(ServiceDescriptor.Singleton(DistributedEventBus)); |
|
|
|
_distributedEventBus = Substitute.For<IDistributedEventBus>(); |
|
|
|
services.Replace(ServiceDescriptor.Singleton(_distributedEventBus)); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
@ -270,7 +274,7 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase |
|
|
|
|
|
|
|
(await _identityUserManager.CreateAsync(user)).CheckErrors(); |
|
|
|
|
|
|
|
await DistributedEventBus.DidNotReceive() |
|
|
|
await _distributedEventBus.DidNotReceive() |
|
|
|
.PublishAsync(Arg.Any<IdentityUserUserNameChangedEto>(), Arg.Any<bool>(), Arg.Any<bool>()); |
|
|
|
|
|
|
|
var newUser = await _identityUserManager.FindByIdAsync(user.Id.ToString()); |
|
|
|
@ -280,16 +284,16 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase |
|
|
|
{ |
|
|
|
var oldUsername = newUser.UserName; |
|
|
|
await _identityUserManager.SetUserNameAsync(newUser, "newUserName"); |
|
|
|
await DistributedEventBus.Received() |
|
|
|
await _distributedEventBus.Received() |
|
|
|
.PublishAsync( |
|
|
|
Arg.Is<IdentityUserUserNameChangedEto>(x => |
|
|
|
x.Id == newUser.Id && x.TenantId == newUser.TenantId && x.OldUserName == oldUsername && x.UserName == "newUserName"), |
|
|
|
Arg.Any<bool>(), Arg.Any<bool>()); |
|
|
|
} |
|
|
|
|
|
|
|
DistributedEventBus.ClearReceivedCalls(); |
|
|
|
_distributedEventBus.ClearReceivedCalls(); |
|
|
|
await _identityUserManager.SetUserNameAsync(newUser, newUser.UserName); |
|
|
|
await DistributedEventBus.DidNotReceive() |
|
|
|
await _distributedEventBus.DidNotReceive() |
|
|
|
.PublishAsync(Arg.Any<IdentityUserUserNameChangedEto>(), Arg.Any<bool>(), Arg.Any<bool>()); |
|
|
|
} |
|
|
|
|
|
|
|
@ -300,7 +304,7 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase |
|
|
|
|
|
|
|
(await _identityUserManager.CreateAsync(user)).CheckErrors(); |
|
|
|
|
|
|
|
await DistributedEventBus.DidNotReceive() |
|
|
|
await _distributedEventBus.DidNotReceive() |
|
|
|
.PublishAsync(Arg.Any<IdentityUserEmailChangedEto>(), Arg.Any<bool>(), Arg.Any<bool>()); |
|
|
|
|
|
|
|
var newUser = await _identityUserManager.FindByIdAsync(user.Id.ToString()); |
|
|
|
@ -310,19 +314,70 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase |
|
|
|
{ |
|
|
|
var oldEmail = newUser.Email; |
|
|
|
await _identityUserManager.SetEmailAsync(newUser, "newEmail@abp.io"); |
|
|
|
await DistributedEventBus.Received() |
|
|
|
await _distributedEventBus.Received() |
|
|
|
.PublishAsync( |
|
|
|
Arg.Is<IdentityUserEmailChangedEto>(x => |
|
|
|
x.Id == newUser.Id && x.TenantId == newUser.TenantId && x.OldEmail == oldEmail && x.Email == "newEmail@abp.io"), |
|
|
|
Arg.Any<bool>(), Arg.Any<bool>()); |
|
|
|
} |
|
|
|
|
|
|
|
DistributedEventBus.ClearReceivedCalls(); |
|
|
|
_distributedEventBus.ClearReceivedCalls(); |
|
|
|
await _identityUserManager.SetEmailAsync(newUser, newUser.Email); |
|
|
|
await DistributedEventBus.DidNotReceive() |
|
|
|
await _distributedEventBus.DidNotReceive() |
|
|
|
.PublishAsync(Arg.Any<IdentityUserEmailChangedEto>(), Arg.Any<bool>(), Arg.Any<bool>()); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task DeleteAsync() |
|
|
|
{ |
|
|
|
await CreateRandomDefaultRoleAsync(); |
|
|
|
var user = CreateRandomUser(); |
|
|
|
(await _identityUserManager.CreateAsync(user)).CheckErrors(); |
|
|
|
|
|
|
|
var user2 = CreateRandomUser(); |
|
|
|
(await _identityUserManager.CreateAsync(user2)).CheckErrors(); |
|
|
|
|
|
|
|
using (var uow = _unitOfWorkManager.Begin()) |
|
|
|
{ |
|
|
|
user = await _identityUserManager.FindByIdAsync(user.Id.ToString()); |
|
|
|
user.ShouldNotBeNull(); |
|
|
|
|
|
|
|
await _identityUserManager.AddClaimAsync(user, new Claim("test", "test")); |
|
|
|
await _identityUserManager.AddLoginAsync(user, new UserLoginInfo("test", "test", "test")); |
|
|
|
await _identityUserManager.AddDefaultRolesAsync(user); |
|
|
|
user.SetToken("test", "test", "test"); |
|
|
|
var ou = await _organizationUnitRepository.GetAsync(_lookupNormalizer.NormalizeName("OU11")); |
|
|
|
await _identityUserManager.AddToOrganizationUnitAsync(user, ou); |
|
|
|
await _identityLinkUserManager.LinkAsync(new IdentityLinkUserInfo(user.Id), new IdentityLinkUserInfo(user2.Id)); |
|
|
|
|
|
|
|
await uow.CompleteAsync(); |
|
|
|
} |
|
|
|
|
|
|
|
using (var uow = _unitOfWorkManager.Begin()) |
|
|
|
{ |
|
|
|
user = await _identityUserManager.FindByIdAsync(user.Id.ToString()); |
|
|
|
user.ShouldNotBeNull(); |
|
|
|
|
|
|
|
user.Claims.Count.ShouldBeGreaterThan(0); |
|
|
|
user.Logins.Count.ShouldBeGreaterThan(0); |
|
|
|
user.Roles.Count.ShouldBeGreaterThan(0); |
|
|
|
user.Tokens.Count.ShouldBeGreaterThan(0); |
|
|
|
user.OrganizationUnits.Count.ShouldBeGreaterThan(0); |
|
|
|
(await _identityLinkUserManager.IsLinkedAsync(new IdentityLinkUserInfo(user.Id), new IdentityLinkUserInfo(user2.Id))).ShouldBeTrue(); |
|
|
|
|
|
|
|
await _identityUserManager.DeleteAsync(user); |
|
|
|
|
|
|
|
user.Claims.Count.ShouldBe(0); |
|
|
|
user.Logins.Count.ShouldBe(0); |
|
|
|
user.Roles.Count.ShouldBe(0); |
|
|
|
user.Tokens.Count.ShouldBe(0); |
|
|
|
user.OrganizationUnits.Count.ShouldBe(0); |
|
|
|
(await _identityLinkUserManager.IsLinkedAsync(new IdentityLinkUserInfo(user.Id), new IdentityLinkUserInfo(user2.Id))).ShouldBeFalse(); |
|
|
|
|
|
|
|
await uow.CompleteAsync(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private async Task CreateRandomDefaultRoleAsync() |
|
|
|
{ |
|
|
|
await _identityRoleRepository.InsertAsync( |
|
|
|
|