Пример #1
0
    public async Task ValidateFailsWithTooShortRoleName(string input)
    {
        // Setup
        var validator = new RoleValidator <PocoRole>();
        var manager   = MockHelpers.TestRoleManager <PocoRole>();
        var user      = new PocoRole {
            Name = input
        };

        // Act
        var result = await validator.ValidateAsync(manager, user);

        // Assert
        IdentityResultAssert.IsFailure(result, new IdentityErrorDescriber().InvalidRoleName(input));
    }
        public async Task FindByNameCallsStoreWithNormalizedName()
        {
            // Setup
            var store = new Mock <IRoleStore <PocoRole> >();
            var role  = new PocoRole {
                Name = "Foo"
            };

            store.Setup(s => s.FindByNameAsync("FOO", CancellationToken.None)).Returns(Task.FromResult(role)).Verifiable();
            var manager = MockHelpers.TestRoleManager(store.Object);

            // Act
            var result = await manager.FindByNameAsync(role.Name);

            // Assert
            Assert.Equal(role, result);
            store.VerifyAll();
        }
        public async Task UpdateCallsStore()
        {
            // Setup
            var store = new Mock <IRoleStore <PocoRole> >();
            var role  = new PocoRole {
                Name = "Foo"
            };

            store.Setup(s => s.UpdateAsync(role, CancellationToken.None)).ReturnsAsync(IdentityResult.Success).Verifiable();
            store.Setup(s => s.GetRoleNameAsync(role, CancellationToken.None)).Returns(Task.FromResult(role.Name)).Verifiable();
            store.Setup(s => s.SetNormalizedRoleNameAsync(role, role.Name.ToUpperInvariant(), CancellationToken.None)).Returns(Task.FromResult(0)).Verifiable();
            var roleManager = MockHelpers.TestRoleManager(store.Object);

            // Act
            var result = await roleManager.UpdateAsync(role);

            // Assert
            Assert.True(result.Succeeded);
            store.VerifyAll();
        }
    public async Task EnsureClaimsIdentityHasExpectedClaims(bool supportRoles, bool supportClaims, bool supportRoleClaims, bool supportsUserEmail)
    {
        // Setup
        var userManager = MockHelpers.MockUserManager <PocoUser>();
        var roleManager = MockHelpers.MockRoleManager <PocoRole>();
        var user        = new PocoUser {
            UserName = "******", Email = "*****@*****.**"
        };

        userManager.Setup(m => m.SupportsUserClaim).Returns(supportClaims);
        userManager.Setup(m => m.SupportsUserRole).Returns(supportRoles);
        userManager.Setup(m => m.SupportsUserEmail).Returns(supportsUserEmail);
        userManager.Setup(m => m.GetUserIdAsync(user)).ReturnsAsync(user.Id);
        userManager.Setup(m => m.GetUserNameAsync(user)).ReturnsAsync(user.UserName);
        if (supportsUserEmail)
        {
            userManager.Setup(m => m.GetEmailAsync(user)).ReturnsAsync(user.Email);
        }
        var roleClaims = new[] { "Admin", "Local" };

        if (supportRoles)
        {
            userManager.Setup(m => m.GetRolesAsync(user)).ReturnsAsync(roleClaims);
            roleManager.Setup(m => m.SupportsRoleClaims).Returns(supportRoleClaims);
        }
        var userClaims = new[] { new Claim("Whatever", "Value"), new Claim("Whatever2", "Value2") };

        if (supportClaims)
        {
            userManager.Setup(m => m.GetClaimsAsync(user)).ReturnsAsync(userClaims);
        }
        userManager.Object.Options = new IdentityOptions();

        var admin = new PocoRole()
        {
            Name = "Admin"
        };
        var local = new PocoRole()
        {
            Name = "Local"
        };
        var adminClaims = new[] { new Claim("AdminClaim1", "Value1"), new Claim("AdminClaim2", "Value2") };
        var localClaims = new[] { new Claim("LocalClaim1", "Value1"), new Claim("LocalClaim2", "Value2") };

        if (supportRoleClaims)
        {
            roleManager.Setup(m => m.FindByNameAsync("Admin")).ReturnsAsync(admin);
            roleManager.Setup(m => m.FindByNameAsync("Local")).ReturnsAsync(local);
            roleManager.Setup(m => m.GetClaimsAsync(admin)).ReturnsAsync(adminClaims);
            roleManager.Setup(m => m.GetClaimsAsync(local)).ReturnsAsync(localClaims);
        }

        var options         = new Mock <IOptions <IdentityOptions> >();
        var identityOptions = new IdentityOptions();

        options.Setup(a => a.Value).Returns(identityOptions);
        var factory = new UserClaimsPrincipalFactory <PocoUser, PocoRole>(userManager.Object, roleManager.Object, options.Object);

        // Act
        var principal = await factory.CreateAsync(user);

        var identity = principal.Identities.First();

        // Assert
        var manager = userManager.Object;

        Assert.NotNull(identity);
        Assert.Single(principal.Identities);
        Assert.Equal(IdentityConstants.ApplicationScheme, identity.AuthenticationType);
        var claims = identity.Claims.ToList();

        Assert.NotNull(claims);
        Assert.Contains(
            claims, c => c.Type == manager.Options.ClaimsIdentity.UserNameClaimType && c.Value == user.UserName);
        Assert.Contains(claims, c => c.Type == manager.Options.ClaimsIdentity.UserIdClaimType && c.Value == user.Id);
        Assert.Equal(supportsUserEmail, claims.Any(c => c.Type == manager.Options.ClaimsIdentity.EmailClaimType && c.Value == user.Email));
        Assert.Equal(supportRoles, claims.Any(c => c.Type == manager.Options.ClaimsIdentity.RoleClaimType && c.Value == "Admin"));
        Assert.Equal(supportRoles, claims.Any(c => c.Type == manager.Options.ClaimsIdentity.RoleClaimType && c.Value == "Local"));
        foreach (var cl in userClaims)
        {
            Assert.Equal(supportClaims, claims.Any(c => c.Type == cl.Type && c.Value == cl.Value));
        }
        foreach (var cl in adminClaims)
        {
            Assert.Equal(supportRoleClaims, claims.Any(c => c.Type == cl.Type && c.Value == cl.Value));
        }
        foreach (var cl in localClaims)
        {
            Assert.Equal(supportRoleClaims, claims.Any(c => c.Type == cl.Type && c.Value == cl.Value));
        }
        userManager.VerifyAll();
        roleManager.VerifyAll();
    }
Пример #5
0
 public Task <IdentityResult> ValidateAsync(RoleManager <PocoRole> manager, PocoRole role)
 {
     throw new NotImplementedException();
 }
Пример #6
0
 public Task <IdentityResult> UpdateAsync(PocoRole role, CancellationToken cancellationToken = default(CancellationToken))
 {
     throw new NotImplementedException();
 }
Пример #7
0
 public Task SetRoleNameAsync(PocoRole role, string roleName, CancellationToken cancellationToken = default(CancellationToken))
 {
     throw new NotImplementedException();
 }
Пример #8
0
 public Task <string> GetRoleIdAsync(PocoRole role, CancellationToken cancellationToken = default(CancellationToken))
 {
     throw new NotImplementedException();
 }