From 6931ebe41dedeaf92fa206a0a6134aeafa873480 Mon Sep 17 00:00:00 2001 From: Hao Kung Date: Mon, 27 Jul 2015 14:53:38 -0700 Subject: [PATCH] Fix but with RemoveRoleClaim --- .../RoleStore.cs | 2 +- test/Shared/UserManagerTestBase.cs | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.AspNet.Identity.EntityFramework/RoleStore.cs b/src/Microsoft.AspNet.Identity.EntityFramework/RoleStore.cs index d1f8abd6cf..496def833b 100644 --- a/src/Microsoft.AspNet.Identity.EntityFramework/RoleStore.cs +++ b/src/Microsoft.AspNet.Identity.EntityFramework/RoleStore.cs @@ -278,7 +278,7 @@ namespace Microsoft.AspNet.Identity.EntityFramework { 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) { RoleClaims.Remove(c); diff --git a/test/Shared/UserManagerTestBase.cs b/test/Shared/UserManagerTestBase.cs index 37b51c338e..b19f2a6021 100644 --- a/test/Shared/UserManagerTestBase.cs +++ b/test/Shared/UserManagerTestBase.cs @@ -1058,23 +1058,34 @@ namespace Microsoft.AspNet.Identity.Test { var manager = CreateRoleManager(); var role = CreateTestRole("ClaimsAddRemove"); + var roleSafe = CreateTestRole("ClaimsAdd"); 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") }; foreach (Claim c in claims) { IdentityResultAssert.IsSuccess(await manager.AddClaimAsync(role, c)); + IdentityResultAssert.IsSuccess(await manager.AddClaimAsync(roleSafe, c)); } var roleClaims = await manager.GetClaimsAsync(role); + var safeRoleClaims = await manager.GetClaimsAsync(roleSafe); Assert.Equal(3, roleClaims.Count); + Assert.Equal(3, safeRoleClaims.Count); IdentityResultAssert.IsSuccess(await manager.RemoveClaimAsync(role, claims[0])); roleClaims = await manager.GetClaimsAsync(role); + safeRoleClaims = await manager.GetClaimsAsync(roleSafe); Assert.Equal(2, roleClaims.Count); + Assert.Equal(3, safeRoleClaims.Count); IdentityResultAssert.IsSuccess(await manager.RemoveClaimAsync(role, claims[1])); roleClaims = await manager.GetClaimsAsync(role); + safeRoleClaims = await manager.GetClaimsAsync(roleSafe); Assert.Equal(1, roleClaims.Count); + Assert.Equal(3, safeRoleClaims.Count); IdentityResultAssert.IsSuccess(await manager.RemoveClaimAsync(role, claims[2])); roleClaims = await manager.GetClaimsAsync(role); + safeRoleClaims = await manager.GetClaimsAsync(roleSafe); Assert.Equal(0, roleClaims.Count); + Assert.Equal(3, safeRoleClaims.Count); } [Fact]