mirror of https://github.com/abpframework/abp.git
1 changed files with 59 additions and 0 deletions
@ -0,0 +1,59 @@ |
|||||
|
using System.Security.Claims; |
||||
|
using System.Threading.Tasks; |
||||
|
using Shouldly; |
||||
|
using Volo.Abp.Security.Claims; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace Volo.Abp.Identity; |
||||
|
|
||||
|
public class IdentityDynamicClaimsPrincipalContributor_Tests : AbpIdentityDomainTestBase |
||||
|
{ |
||||
|
private readonly IdentityUserManager _identityUserManager; |
||||
|
private readonly IAbpClaimsPrincipalFactory _abpClaimsPrincipalFactory; |
||||
|
private readonly AbpUserClaimsPrincipalFactory _abpUserClaimsPrincipalFactory; |
||||
|
private readonly IdentityTestData _testData; |
||||
|
|
||||
|
public IdentityDynamicClaimsPrincipalContributor_Tests() |
||||
|
{ |
||||
|
_identityUserManager = GetRequiredService<IdentityUserManager>(); |
||||
|
_abpClaimsPrincipalFactory = GetRequiredService<IAbpClaimsPrincipalFactory>(); |
||||
|
_abpUserClaimsPrincipalFactory = GetRequiredService<AbpUserClaimsPrincipalFactory>(); |
||||
|
_testData = GetRequiredService<IdentityTestData>(); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public async Task Should_Get_Correct_Claims_After_User_Updating() |
||||
|
{ |
||||
|
IdentityUser user = null; |
||||
|
ClaimsPrincipal claimsPrincipal = null; |
||||
|
string securityStamp = null; |
||||
|
await UsingUowAsync(async () => |
||||
|
{ |
||||
|
user = await _identityUserManager.GetByIdAsync(_testData.UserJohnId); |
||||
|
user.ShouldNotBeNull(); |
||||
|
securityStamp = user.SecurityStamp; |
||||
|
claimsPrincipal = await _abpUserClaimsPrincipalFactory.CreateAsync(user); |
||||
|
|
||||
|
claimsPrincipal.Claims.ShouldContain(x => x.Type == ClaimTypes.NameIdentifier && x.Value == user.Id.ToString()); |
||||
|
claimsPrincipal.Claims.ShouldContain(x => x.Type == ClaimTypes.Name && x.Value == user.UserName); |
||||
|
claimsPrincipal.Claims.ShouldContain(x => x.Type == ClaimTypes.Email && x.Value == user.Email); |
||||
|
claimsPrincipal.Claims.ShouldContain(x => x.Type == "AspNet.Identity.SecurityStamp" && x.Value == securityStamp); |
||||
|
|
||||
|
var dynamicClaimsPrincipal = await _abpClaimsPrincipalFactory.CreateDynamicAsync(claimsPrincipal); |
||||
|
dynamicClaimsPrincipal.Claims.ShouldContain(x => x.Type == ClaimTypes.NameIdentifier && x.Value == user.Id.ToString()); |
||||
|
dynamicClaimsPrincipal.Claims.ShouldContain(x => x.Type == ClaimTypes.Name && x.Value == user.UserName); |
||||
|
dynamicClaimsPrincipal.Claims.ShouldContain(x => x.Type == ClaimTypes.Email && x.Value == user.Email); |
||||
|
dynamicClaimsPrincipal.Claims.ShouldContain(x => x.Type == "AspNet.Identity.SecurityStamp" && x.Value == securityStamp);//SecurityStamp is not dynamic claim
|
||||
|
|
||||
|
await _identityUserManager.SetUserNameAsync(user, "newUserName"); |
||||
|
await _identityUserManager.SetEmailAsync(user, "newUserEmail@abp.io"); |
||||
|
await _identityUserManager.UpdateSecurityStampAsync(user); |
||||
|
}); |
||||
|
|
||||
|
var dynamicClaimsPrincipal = await _abpClaimsPrincipalFactory.CreateDynamicAsync(claimsPrincipal); |
||||
|
dynamicClaimsPrincipal.Claims.ShouldContain(x => x.Type == ClaimTypes.NameIdentifier && x.Value == user.Id.ToString()); |
||||
|
dynamicClaimsPrincipal.Claims.ShouldContain(x => x.Type == ClaimTypes.Name && x.Value =="newUserName"); |
||||
|
dynamicClaimsPrincipal.Claims.ShouldContain(x => x.Type == ClaimTypes.Email && x.Value == "newUserEmail@abp.io"); |
||||
|
dynamicClaimsPrincipal.Claims.ShouldContain(x => x.Type == "AspNet.Identity.SecurityStamp" && x.Value == securityStamp);//SecurityStamp is not dynamic claim
|
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue