public void DeleteUserClaim()
        {
            IdentityUser user = new IdentityUser {
                UserName = "******", Email = "*****@*****.**", PhoneNumber = "1234567890", PasswordHash = "@#$rfgt$##WE", EmailConfirmed = true, PhoneNumberConfirmed = true, TwoFactorEnabled = false, LockoutEnabled = false, AccessFailedCount = 0
            };

            user = userTable.Insert(user);
            object claim = new { UserId = user.Id, ClaimType = "Claim1", ClaimValue = "Value1" };

            claim = userClaimTable.Insert(claim);
            userClaimTable.Delete(claim);
            userClaimTable.Delete(where : "ClaimType = 'Claim1'");
            int count = userClaimTable.All("ClaimType = 'Claim1'").ToList().Count;

            Assert.AreEqual(0, count);
        }
        public void It_deletes_all_userclaims_of_user()
        {
            int            result;
            ClaimsIdentity claims;

            using (var transaction = _database.GetTransaction())
            {
                var user = _userTable.GetUserByName(name1).FirstOrDefault();
                CreateUserClaim(user, cType1, cValue1);
                result = _userClaimTable.Delete(user.Id);
                claims = _userClaimTable.FindByUserId(user.Id);
                transaction.Dispose();
            }

            Assert.AreEqual(1, result);
            Assert.IsTrue(!claims.Claims.Any());
        }
        /// <summary>
        /// Removes a claim assignment from the user.
        /// New Approach: Check if the given Claim object is assigned to the user and delete the
        /// assignment(s), if existent. It's not client-agnostic, here!
        /// </summary>
        /// <param name="user"></param>
        /// <param name="claim"></param>
        /// <returns></returns>
        public Task RemoveClaimAsync(TUser user, Claim claim)
        {
            if (user == null)
            {
                throw new ArgumentNullException(IdentityConstants.User);
            }

            if (claim == null)
            {
                throw new ArgumentNullException(IdentityConstants.Claim);
            }

            var claimsAssigned = _userClaimTable
                                 .GetClaims(user.Id)
                                 .Where(c => c.Type == claim.Type && c.Value == claim.Value)
                                 .ToList();

            foreach (var identityClaim in claimsAssigned)
            {
                _userClaimTable.Delete(identityClaim, user);
            }

            return(Task.FromResult <object>(null));
        }