Ejemplo n.º 1
0
        public void Can_persist_preconfigured_permissions()
        {
            var sut = new UserAuthRepoFixtureBuilder()
                      .WithUsers(
                new UserAuth()
            {
                Id          = 5,
                UserName    = "******",
                Permissions = new[] { "perm1", "perm2", "perm3" }.ToList()
            }, new UserAuth()
            {
                Id          = 2,
                UserName    = "******",
                Permissions = new[] { "perm3" }.ToList()
            }
                )
                      .Build();

            var result                = sut.HasPermission("5", "perm2");
            var invalidPermission     = sut.HasPermission("5", "perm4");
            var invalidUserPermission = sut.HasPermission("2", "perm2");

            Assert.True(result);
            Assert.False(invalidPermission);
            Assert.False(invalidUserPermission);
        }
        public void Can_manage_api_keys()
        {
            var sut = new UserAuthRepoFixtureBuilder()
                      .WithApiKeys(new ApiKey()
            {
                UserAuthId = "4",
                Id         = "foo-key1",
            },
                                   new ApiKey()
            {
                UserAuthId = "4",
                Id         = "foo-keyy2"
            },
                                   new ApiKey()
            {
                UserAuthId = "5",
                Id         = "foobarkey1"
            })
                      .Build() as IManageApiKeys;

            Assert.True(sut.ApiKeyExists("foo-key1"));
            Assert.True(sut.ApiKeyExists("foobarkey1"));

            Assert.Equal("5", sut.GetApiKey("foobarkey1").UserAuthId);

            Assert.Equal(new[] { "foo-key1", "foo-keyy2" }, sut.GetUserApiKeys("4").Select(x => x.Id));
        }
Ejemplo n.º 3
0
        public void Can_unassign_permissions()
        {
            var sut = new UserAuthRepoFixtureBuilder()
                      .WithUsers(
                new UserAuth()
            {
                Id          = 5,
                UserName    = "******",
                Permissions = new[] { "perm1", "perm3" }.ToList()
            }, new UserAuth()
            {
                Id          = 2,
                UserName    = "******",
                Permissions = new[] { "perm3" }.ToList()
            }
                )
                      .Build();

            sut.AssignRoles("5", permissions: new[] { "perm3" });
            sut.UnAssignRoles("5", permissions: new[] { "perm2", "perm1" });
            sut.UnAssignRoles("2", permissions: new[] { "perm3" });

            var hasRemovedPermission1  = sut.HasPermission("5", "perm2");
            var hasRemovedPermission2  = sut.HasPermission("5", "perm1");
            var hasUnremovedPermission = sut.HasPermission("5", "perm3");

            Assert.True(hasUnremovedPermission);
            Assert.False(hasRemovedPermission1);
            Assert.False(hasRemovedPermission2);

            Assert.False(sut.HasPermission("2", "perm3"));
        }
        public void Permission_query_uses_psql_json_contains()
        {
            var sut = new UserAuthRepoFixtureBuilder()
                      .Build();

            sut.Execute(session => {
                var command = session.Query <UserAuth>()
                              .Where(x => x.Permissions.Contains("perm3") && x.Id == 2)
                              .ToCommand(FetchType.Any);

                // uses JSONb contains operator
                Assert.Contains("@>", command.CommandText);
            });
        }
Ejemplo n.º 5
0
        public void Can_create_user()
        {
            var sut = new UserAuthRepoFixtureBuilder()
                      .Build();

            var user = new UserAuth()
            {
                UserName  = "******",
                FirstName = "Mike"
            };

            var created = sut.CreateUserAuth(user, "12345");

            Assert.NotEqual(default(int), created.Id);
        }
Ejemplo n.º 6
0
        public void Can_load_user_auth_by_email()
        {
            var sut = new UserAuthRepoFixtureBuilder()
                      .WithUser(new UserAuth()
            {
                UserName  = "******",
                Email     = "*****@*****.**",
                FirstName = "Mike"
            }, "123456")
                      .Build();

            var user = sut.GetUserAuthByUserName("*****@*****.**");

            Assert.NotNull(user);
            Assert.Equal("Mike", user.FirstName);
        }
        public void Get_user_by_name_uses_separate_field()
        {
            var sut = new UserAuthRepoFixtureBuilder()
                      .Build();

            sut.Execute(session =>
            {
                var command = session.Query <UserAuth>()
                              .Where(x => x.UserName.Equals("bob", StringComparison.CurrentCultureIgnoreCase))
                              .ToCommand(FetchType.FetchOne);

                // does not operate on JSONb
                Assert.DoesNotContain(">", command.CommandText);
                // matches d.user_name ILIKE
                Assert.Matches(@"\w+\.user_name\s+ILIKE", command.CommandText);
            });
        }
Ejemplo n.º 8
0
        public void Can_create_multiple_users()
        {
            var sut = new UserAuthRepoFixtureBuilder()
                      .WithUsers(
                new UserAuth()
            {
                UserName = "******"
            },
                new UserAuth()
            {
                UserName = "******"
            }
                )
                      .Build();

            Assert.Equal(2, sut.Execute(session => session.Query <UserAuth>().Count()));
        }
        public void Can_record_invalid_auth_attempts()
        {
            var sut = new UserAuthRepoFixtureBuilder()
                      .WithUser(new UserAuth()
            {
                UserName = "******"
            }, "bob2")
                      .Build();

            IUserAuth user;
            // invalid password
            var result = sut.TryAuthenticate("bob", "wrongpassword", out user);

            var user2 = sut.GetUserAuthByUserName("bob");

            Assert.False(result);
            Assert.Null(user);

            Assert.Equal(1, user2.InvalidLoginAttempts);
            Assert.True((DateTime.UtcNow - user2.LastLoginAttempt.Value).TotalSeconds <= 1);
        }