Fix but with RemoveRoleClaim
This commit is contained in:
parent
29549fc0b1
commit
6931ebe41d
|
|
@ -278,7 +278,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("claim");
|
throw new ArgumentNullException("claim");
|
||||||
}
|
}
|
||||||
var claims = await RoleClaims.Where(uc => uc.ClaimValue == claim.Value && uc.ClaimType == claim.Type).ToListAsync(cancellationToken);
|
var claims = await RoleClaims.Where(rc => rc.RoleId.Equals(role.Id) && rc.ClaimValue == claim.Value && rc.ClaimType == claim.Type).ToListAsync(cancellationToken);
|
||||||
foreach (var c in claims)
|
foreach (var c in claims)
|
||||||
{
|
{
|
||||||
RoleClaims.Remove(c);
|
RoleClaims.Remove(c);
|
||||||
|
|
|
||||||
|
|
@ -1058,23 +1058,34 @@ namespace Microsoft.AspNet.Identity.Test
|
||||||
{
|
{
|
||||||
var manager = CreateRoleManager();
|
var manager = CreateRoleManager();
|
||||||
var role = CreateTestRole("ClaimsAddRemove");
|
var role = CreateTestRole("ClaimsAddRemove");
|
||||||
|
var roleSafe = CreateTestRole("ClaimsAdd");
|
||||||
IdentityResultAssert.IsSuccess(await manager.CreateAsync(role));
|
IdentityResultAssert.IsSuccess(await manager.CreateAsync(role));
|
||||||
|
IdentityResultAssert.IsSuccess(await manager.CreateAsync(roleSafe));
|
||||||
Claim[] claims = { new Claim("c", "v"), new Claim("c2", "v2"), new Claim("c2", "v3") };
|
Claim[] claims = { new Claim("c", "v"), new Claim("c2", "v2"), new Claim("c2", "v3") };
|
||||||
foreach (Claim c in claims)
|
foreach (Claim c in claims)
|
||||||
{
|
{
|
||||||
IdentityResultAssert.IsSuccess(await manager.AddClaimAsync(role, c));
|
IdentityResultAssert.IsSuccess(await manager.AddClaimAsync(role, c));
|
||||||
|
IdentityResultAssert.IsSuccess(await manager.AddClaimAsync(roleSafe, c));
|
||||||
}
|
}
|
||||||
var roleClaims = await manager.GetClaimsAsync(role);
|
var roleClaims = await manager.GetClaimsAsync(role);
|
||||||
|
var safeRoleClaims = await manager.GetClaimsAsync(roleSafe);
|
||||||
Assert.Equal(3, roleClaims.Count);
|
Assert.Equal(3, roleClaims.Count);
|
||||||
|
Assert.Equal(3, safeRoleClaims.Count);
|
||||||
IdentityResultAssert.IsSuccess(await manager.RemoveClaimAsync(role, claims[0]));
|
IdentityResultAssert.IsSuccess(await manager.RemoveClaimAsync(role, claims[0]));
|
||||||
roleClaims = await manager.GetClaimsAsync(role);
|
roleClaims = await manager.GetClaimsAsync(role);
|
||||||
|
safeRoleClaims = await manager.GetClaimsAsync(roleSafe);
|
||||||
Assert.Equal(2, roleClaims.Count);
|
Assert.Equal(2, roleClaims.Count);
|
||||||
|
Assert.Equal(3, safeRoleClaims.Count);
|
||||||
IdentityResultAssert.IsSuccess(await manager.RemoveClaimAsync(role, claims[1]));
|
IdentityResultAssert.IsSuccess(await manager.RemoveClaimAsync(role, claims[1]));
|
||||||
roleClaims = await manager.GetClaimsAsync(role);
|
roleClaims = await manager.GetClaimsAsync(role);
|
||||||
|
safeRoleClaims = await manager.GetClaimsAsync(roleSafe);
|
||||||
Assert.Equal(1, roleClaims.Count);
|
Assert.Equal(1, roleClaims.Count);
|
||||||
|
Assert.Equal(3, safeRoleClaims.Count);
|
||||||
IdentityResultAssert.IsSuccess(await manager.RemoveClaimAsync(role, claims[2]));
|
IdentityResultAssert.IsSuccess(await manager.RemoveClaimAsync(role, claims[2]));
|
||||||
roleClaims = await manager.GetClaimsAsync(role);
|
roleClaims = await manager.GetClaimsAsync(role);
|
||||||
|
safeRoleClaims = await manager.GetClaimsAsync(roleSafe);
|
||||||
Assert.Equal(0, roleClaims.Count);
|
Assert.Equal(0, roleClaims.Count);
|
||||||
|
Assert.Equal(3, safeRoleClaims.Count);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue