예제 #1
0
        public void Can_Perform_Delete_On_UserRepository()
        {
            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider();
            var unitOfWork = provider.GetUnitOfWork();
            UserTypeRepository userTypeRepository;

            using (var repository = CreateRepository(unitOfWork, out userTypeRepository))
            {
                var user = MockedUser.CreateUser(CreateAndCommitUserType());

                // Act
                repository.AddOrUpdate(user);
                unitOfWork.Commit();
                var id = user.Id;

                var repository2 = RepositoryResolver.Current.ResolveByType <IUserRepository>(unitOfWork);
                repository2.Delete(user);
                unitOfWork.Commit();

                var resolved = repository2.Get((int)id);

                // Assert
                Assert.That(resolved, Is.Null);
            }
        }
예제 #2
0
        public void Can_Perform_Add_With_Group()
        {
            var group = MockedUserGroup.CreateUserGroup();

            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();

            using (var repository = CreateUserGroupRepository(unitOfWork))
            {
                repository.AddOrUpdate(group);
                unitOfWork.Commit();
            }

            using (var repository = CreateRepository(unitOfWork))
            {
                IUser user = MockedUser.CreateUser();
                user.AddGroup(group.ToReadOnlyGroup());

                // Act
                repository.AddOrUpdate(user);
                unitOfWork.Commit();

                user = repository.Get(user.Id);

                // Assert
                Assert.That(user.HasIdentity, Is.True);
                Assert.AreEqual(1, user.Groups.Count());
                Assert.AreEqual(group.Alias, user.Groups.ElementAt(0).Alias);
            }
        }
        public void Get_Users_Assigned_To_Section()
        {
            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();
            UserTypeRepository userTypeRepository;

            using (var repository = CreateRepository(unitOfWork, out userTypeRepository))
            {
                var user1 = MockedUser.CreateUser(CreateAndCommitUserType(), "1", "test", "media");
                var user2 = MockedUser.CreateUser(CreateAndCommitUserType(), "2", "media", "settings");
                var user3 = MockedUser.CreateUser(CreateAndCommitUserType(), "3", "test", "settings");
                repository.AddOrUpdate(user1);
                repository.AddOrUpdate(user2);
                repository.AddOrUpdate(user3);
                unitOfWork.Commit();

                // Act

                var users = repository.GetUsersAssignedToSection("test");

                // Assert
                Assert.AreEqual(2, users.Count());
                var names = users.Select(x => x.Username).ToArray();
                Assert.IsTrue(names.Contains("TestUser1"));
                Assert.IsTrue(names.Contains("TestUser3"));
            }
        }
예제 #4
0
        public void Validate_Login_Session()
        {
            // Arrange
            var provider = TestObjects.GetScopeProvider(Logger);
            var user     = MockedUser.CreateUser();

            using (var scope = provider.CreateScope(autoComplete: true))
            {
                var repository = CreateRepository(provider);
                repository.Save(user);
            }

            using (var scope = provider.CreateScope(autoComplete: true))
            {
                var repository = CreateRepository(provider);
                var sessionId  = repository.CreateLoginSession(user.Id, "1.2.3.4");

                // manually update this record to be in the past
                scope.Database.Execute(SqlContext.Sql()
                                       .Update <UserLoginDto>(u => u.Set(x => x.LoggedOutUtc, DateTime.UtcNow.AddDays(-100)))
                                       .Where <UserLoginDto>(x => x.SessionId == sessionId));

                var isValid = repository.ValidateLoginSession(user.Id, sessionId);
                Assert.IsFalse(isValid);

                // create a new one
                sessionId = repository.CreateLoginSession(user.Id, "1.2.3.4");
                isValid   = repository.ValidateLoginSession(user.Id, sessionId);
                Assert.IsTrue(isValid);
            }
        }
예제 #5
0
        public void Can_Perform_Delete_On_UserRepository()
        {
            // Arrange
            var provider = TestObjects.GetScopeProvider(Logger);

            using (var scope = provider.CreateScope())
            {
                var repository = CreateRepository(provider);

                var user = MockedUser.CreateUser();

                // Act
                repository.Save(user);

                var id = user.Id;

                var repository2 = new UserRepository((IScopeAccessor)provider, AppCaches.Disabled, Logger, Mock.Of <IMapperCollection>(), TestObjects.GetGlobalSettings());

                repository2.Delete(user);


                var resolved = repository2.Get((int)id);

                // Assert
                Assert.That(resolved, Is.Null);
            }
        }
        public void Can_Perform_Delete_On_UserRepository()
        {
            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();
            UserTypeRepository userTypeRepository;

            using (var repository = CreateRepository(unitOfWork, out userTypeRepository))
            {
                var user = MockedUser.CreateUser(CreateAndCommitUserType());

                // Act
                repository.AddOrUpdate(user);
                unitOfWork.Commit();
                var id = user.Id;

                using (var utRepo = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax))
                    using (var repository2 = new UserRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, utRepo))
                    {
                        repository2.Delete(user);
                        unitOfWork.Commit();

                        var resolved = repository2.Get((int)id);

                        // Assert
                        Assert.That(resolved, Is.Null);
                    }
            }
        }
예제 #7
0
        public void Count_All_Online_Users()
        {
            var users = MockedUser.CreateMulipleUsers(10, (i, member) => member.LastLoginDate = DateTime.Now.AddMinutes(i * -2));

            ServiceContext.UserService.Save(users);

            var customUser = MockedUser.CreateUser();

            throw new NotImplementedException();
        }
예제 #8
0
        private IUser[] CreateAndCommitMultipleUsers(IUserRepository repository)
        {
            var user1 = MockedUser.CreateUser("1");
            var user2 = MockedUser.CreateUser("2");
            var user3 = MockedUser.CreateUser("3");

            repository.Save(user1);
            repository.Save(user2);
            repository.Save(user3);
            return(new IUser[] { user1, user2, user3 });
        }
예제 #9
0
 private IUser[] CreateAndCommitMultipleUsers(IUserRepository repository, IUnitOfWork unitOfWork)
 {
     var user1 = MockedUser.CreateUser(CreateAndCommitUserType(), "1");
     var user2 = MockedUser.CreateUser(CreateAndCommitUserType(), "2");
     var user3 = MockedUser.CreateUser(CreateAndCommitUserType(), "3");
     repository.AddOrUpdate(user1);
     repository.AddOrUpdate(user2);
     repository.AddOrUpdate(user3);
     unitOfWork.Commit();
     return new IUser[] {user1, user2, user3};
 }
예제 #10
0
        private static User CreateAndCommitUserWithGroup(IUserRepository repository, IUserGroupRepository userGroupRepository, IDatabaseUnitOfWork unitOfWork)
        {
            var user = MockedUser.CreateUser();

            repository.AddOrUpdate(user);
            unitOfWork.Commit();

            var group = MockedUserGroup.CreateUserGroup();

            userGroupRepository.AddOrUpdateGroupWithUsers(@group, new[] { user.Id });
            unitOfWork.Commit();

            return(user);
        }
예제 #11
0
        public void Can_Perform_Update_On_UserRepository()
        {
            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider();
            var unitOfWork = provider.GetUnitOfWork();
            UserTypeRepository userTypeRepository;

            using (var repository = CreateRepository(unitOfWork, out userTypeRepository))
            {
                var user = MockedUser.CreateUser(CreateAndCommitUserType());
                repository.AddOrUpdate(user);
                unitOfWork.Commit();

                // Act
                var resolved = repository.Get((int)user.Id);

                resolved.Name = "New Name";
                resolved.DefaultPermissions   = "ZYX";
                resolved.Language             = "fr";
                resolved.IsApproved           = false;
                resolved.Password             = "******";
                resolved.NoConsole            = true;
                resolved.StartContentId       = 10;
                resolved.StartMediaId         = 11;
                resolved.DefaultToLiveEditing = true;
                resolved.Email    = "*****@*****.**";
                resolved.Username = "******";
                resolved.RemoveAllowedSection("content");

                repository.AddOrUpdate(resolved);
                unitOfWork.Commit();
                var updatedItem = repository.Get((int)user.Id);

                // Assert
                Assert.That(updatedItem.Id, Is.EqualTo(resolved.Id));
                Assert.That(updatedItem.Name, Is.EqualTo(resolved.Name));
                Assert.That(updatedItem.DefaultPermissions, Is.EqualTo(resolved.DefaultPermissions));
                Assert.That(updatedItem.Language, Is.EqualTo(resolved.Language));
                Assert.That(updatedItem.IsApproved, Is.EqualTo(resolved.IsApproved));
                Assert.That(updatedItem.Password, Is.EqualTo(resolved.Password));
                Assert.That(updatedItem.NoConsole, Is.EqualTo(resolved.NoConsole));
                Assert.That(updatedItem.StartContentId, Is.EqualTo(resolved.StartContentId));
                Assert.That(updatedItem.StartMediaId, Is.EqualTo(resolved.StartMediaId));
                Assert.That(updatedItem.DefaultToLiveEditing, Is.EqualTo(resolved.DefaultToLiveEditing));
                Assert.That(updatedItem.Email, Is.EqualTo(resolved.Email));
                Assert.That(updatedItem.Username, Is.EqualTo(resolved.Username));
                Assert.That(updatedItem.AllowedSections.Count(), Is.EqualTo(1));
                Assert.IsTrue(updatedItem.AllowedSections.Contains("media"));
            }
        }
예제 #12
0
        public void Count_All_Users()
        {
            var users = MockedUser.CreateMulipleUsers(10);

            ServiceContext.UserService.Save(users);
            var customUser = MockedUser.CreateUser();

            ServiceContext.UserService.Save(customUser);

            var found = ServiceContext.UserService.GetCount(MemberCountType.All);

            // + 1 because of the built in admin user
            Assert.AreEqual(12, found);
        }
        public void Can_Perform_Update_On_UserRepository()
        {
            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();
            UserTypeRepository userTypeRepository;

            using (var repository = CreateRepository(unitOfWork, out userTypeRepository))
            {
                var user = MockedUser.CreateUser(CreateAndCommitUserType());
                repository.AddOrUpdate(user);
                unitOfWork.Commit();

                // Act
                var resolved = (User)repository.Get((int)user.Id);

                resolved.Name = "New Name";
                //the db column is not used, default permissions are taken from the user type's permissions, this is a getter only
                //resolved.DefaultPermissions = "ZYX";
                resolved.Language         = "fr";
                resolved.IsApproved       = false;
                resolved.RawPasswordValue = "new";
                resolved.IsLockedOut      = true;
                resolved.StartContentId   = 10;
                resolved.StartMediaId     = 11;
                resolved.Email            = "*****@*****.**";
                resolved.Username         = "******";
                resolved.RemoveAllowedSection("content");

                repository.AddOrUpdate(resolved);
                unitOfWork.Commit();
                var updatedItem = (User)repository.Get((int)user.Id);

                // Assert
                Assert.That(updatedItem.Id, Is.EqualTo(resolved.Id));
                Assert.That(updatedItem.Name, Is.EqualTo(resolved.Name));
                //Assert.That(updatedItem.DefaultPermissions, Is.EqualTo(resolved.DefaultPermissions));
                Assert.That(updatedItem.Language, Is.EqualTo(resolved.Language));
                Assert.That(updatedItem.IsApproved, Is.EqualTo(resolved.IsApproved));
                Assert.That(updatedItem.RawPasswordValue, Is.EqualTo(resolved.RawPasswordValue));
                Assert.That(updatedItem.IsLockedOut, Is.EqualTo(resolved.IsLockedOut));
                Assert.That(updatedItem.StartContentId, Is.EqualTo(resolved.StartContentId));
                Assert.That(updatedItem.StartMediaId, Is.EqualTo(resolved.StartMediaId));
                Assert.That(updatedItem.Email, Is.EqualTo(resolved.Email));
                Assert.That(updatedItem.Username, Is.EqualTo(resolved.Username));
                Assert.That(updatedItem.AllowedSections.Count(), Is.EqualTo(1));
                Assert.IsTrue(updatedItem.AllowedSections.Contains("media"));
            }
        }
예제 #14
0
        public void Count_All_Locked_Users()
        {
            var users = MockedUser.CreateMulipleUsers(10, (i, member) => member.IsLockedOut = i % 2 == 0);

            ServiceContext.UserService.Save(users);

            var customUser = MockedUser.CreateUser();

            customUser.IsLockedOut = true;
            ServiceContext.UserService.Save(customUser);

            var found = ServiceContext.UserService.GetCount(MemberCountType.LockedOut);

            Assert.AreEqual(6, found);
        }
예제 #15
0
        public void Find_By_Email_Exact()
        {
            var users = MockedUser.CreateMulipleUsers(10);

            ServiceContext.UserService.Save(users);
            //include this
            var customUser = MockedUser.CreateUser();

            customUser.Email = "*****@*****.**";
            ServiceContext.UserService.Save(customUser);

            var found = ServiceContext.UserService.FindByEmail("*****@*****.**", 0, 100, out _, StringPropertyMatchType.Exact);

            Assert.AreEqual(1, found.Count());
        }
예제 #16
0
        public void Find_By_Email_Starts_With()
        {
            var users = MockedUser.CreateMulipleUsers(10);

            ServiceContext.UserService.Save(users);
            //don't find this
            var customUser = MockedUser.CreateUser();

            customUser.Email = "*****@*****.**";
            ServiceContext.UserService.Save(customUser);

            var found = ServiceContext.UserService.FindByEmail("tes", 0, 100, out _, StringPropertyMatchType.StartsWith);

            Assert.AreEqual(10, found.Count());
        }
예제 #17
0
        private static User CreateAndCommitUserWithGroup(IUserRepository repository, IUserGroupRepository userGroupRepository)
        {
            var user = MockedUser.CreateUser();

            repository.Save(user);


            var group = MockedUserGroup.CreateUserGroup();

            userGroupRepository.AddOrUpdateGroupWithUsers(@group, new[] { user.Id });

            user.AddGroup(group);

            return(user);
        }
예제 #18
0
        public void Can_Perform_Add_On_UserRepository()
        {
            // Arrange
            var provider = new PetaPocoUnitOfWorkProvider();
            var unitOfWork = provider.GetUnitOfWork();
            var repository = RepositoryResolver.Current.ResolveByType<IUserRepository>(unitOfWork);

            var user = MockedUser.CreateUser(CreateAndCommitUserType());

            // Act
            repository.AddOrUpdate(user);
            unitOfWork.Commit();

            // Assert
            Assert.That(user.HasIdentity, Is.True);
        }
예제 #19
0
        public async System.Threading.Tasks.Task GetById_Fips()
        {
            const int mockUserId = 1234;
            var       user       = MockedUser.CreateUser();

            await RunFipsTest("GetById", mock =>
            {
                mock.Setup(service => service.GetUserById(1234))
                .Returns((int i) => i == mockUserId ? user : null);
            }, response =>
            {
                var obj = JsonConvert.DeserializeObject <UserDisplay>(response.Item2);
                Assert.AreEqual(user.Username, obj.Username);
                Assert.AreEqual(user.Email, obj.Email);
            }, new { controller = "Users", action = "GetById" }, $"Users/GetById/{mockUserId}");
        }
예제 #20
0
        public void Can_Perform_Get_On_UserRepository()
        {
            // Arrange
            var provider = new PetaPocoUnitOfWorkProvider();
            var unitOfWork = provider.GetUnitOfWork();
            var repository = RepositoryResolver.Current.ResolveByType<IUserRepository>(unitOfWork);
            var user = MockedUser.CreateUser(CreateAndCommitUserType());
            repository.AddOrUpdate(user);
            unitOfWork.Commit();

            // Act
            var updatedItem = repository.Get((int)user.Id);

            // Assert
            AssertPropertyValues(updatedItem, user);
        }
예제 #21
0
        public void Count_All_Approved_Users()
        {
            var users = MockedUser.CreateMulipleUsers(10, (i, member) => member.IsApproved = i % 2 == 0);

            ServiceContext.UserService.Save(users);

            var customUser = MockedUser.CreateUser();

            customUser.IsApproved = false;
            ServiceContext.UserService.Save(customUser);

            var found = ServiceContext.UserService.GetCount(MemberCountType.Approved);

            // + 1 because of the built in admin user
            Assert.AreEqual(6, found);
        }
예제 #22
0
        public void Can_Verify_Fresh_Entity_Is_Not_Dirty()
        {
            // Arrange
            var provider = new PetaPocoUnitOfWorkProvider();
            var unitOfWork = provider.GetUnitOfWork();
            var repository = RepositoryResolver.Current.ResolveByType<IUserRepository>(unitOfWork);
            var user = MockedUser.CreateUser(CreateAndCommitUserType());
            repository.AddOrUpdate(user);
            unitOfWork.Commit();

            // Act
            var resolved = repository.Get((int)user.Id);
            bool dirty = ((User)resolved).IsDirty();

            // Assert
            Assert.That(dirty, Is.False);
        }
        public void Get_All_Paged_Users()
        {
            var userType = MockedUserType.CreateUserType();

            ServiceContext.UserService.SaveUserType(userType);
            var users = MockedUser.CreateUser(userType, 10);

            ServiceContext.UserService.Save(users);

            int totalRecs;
            var found = ServiceContext.UserService.GetAll(0, 2, out totalRecs);

            Assert.AreEqual(2, found.Count());
            // + 1 because of the built in admin user
            Assert.AreEqual(11, totalRecs);
            Assert.AreEqual("admin", found.First().Username);
            Assert.AreEqual("test0", found.Last().Username);
        }
예제 #24
0
        public void Can_Perform_Add_On_UserRepository()
        {
            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();

            using (var repository = CreateRepository(unitOfWork))
            {
                var user = MockedUser.CreateUser();

                // Act
                repository.AddOrUpdate(user);
                unitOfWork.Commit();

                // Assert
                Assert.That(user.HasIdentity, Is.True);
            }
        }
        public void Find_By_Email_Contains()
        {
            var userType = MockedUserType.CreateUserType();

            ServiceContext.UserService.SaveUserType(userType);
            var users = MockedUser.CreateUser(userType, 10);

            ServiceContext.UserService.Save(users);
            //include this
            var customUser = MockedUser.CreateUser(userType);

            customUser.Email = "*****@*****.**";
            ServiceContext.UserService.Save(customUser);

            int totalRecs;
            var found = ServiceContext.UserService.FindByEmail("test", 0, 100, out totalRecs, StringPropertyMatchType.Contains);

            Assert.AreEqual(11, found.Count());
        }
예제 #26
0
        public void Can_Perform_Add_On_UserRepository()
        {
            // Arrange
            var provider = TestObjects.GetScopeProvider(Logger);

            using (var scope = provider.CreateScope())
            {
                var repository = CreateRepository(provider);

                var user = MockedUser.CreateUser();

                // Act
                repository.Save(user);


                // Assert
                Assert.That(user.HasIdentity, Is.True);
            }
        }
        public void Can_Perform_Get_On_UserRepository()
        {
            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();
            UserTypeRepository userTypeRepository;

            using (var repository = CreateRepository(unitOfWork, out userTypeRepository))
            {
                var user = MockedUser.CreateUser(CreateAndCommitUserType());
                repository.AddOrUpdate(user);
                unitOfWork.Commit();

                // Act
                var updatedItem = repository.Get((int)user.Id);

                // Assert
                AssertPropertyValues(updatedItem, user);
            }
        }
예제 #28
0
        public void Can_Verify_Fresh_Entity_Is_Not_Dirty()
        {
            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();

            using (var repository = CreateRepository(unitOfWork))
            {
                var user = MockedUser.CreateUser();
                repository.AddOrUpdate(user);
                unitOfWork.Commit();

                // Act
                var  resolved = repository.Get((int)user.Id);
                bool dirty    = ((User)resolved).IsDirty();

                // Assert
                Assert.That(dirty, Is.False);
            }
        }
        public void Default_User_Permissions_Based_On_User_Type()
        {
            // Arrange
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();

            using (var utRepo = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax))
                using (var repository = new UserRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, utRepo))
                {
                    // Act
                    var user1 = MockedUser.CreateUser(CreateAndCommitUserType(), "1", "test", "media");
                    repository.AddOrUpdate(user1);
                    unitOfWork.Commit();

                    // Assert
                    Assert.AreEqual(3, user1.DefaultPermissions.Count());
                    Assert.AreEqual("A", user1.DefaultPermissions.ElementAt(0));
                    Assert.AreEqual("B", user1.DefaultPermissions.ElementAt(1));
                    Assert.AreEqual("C", user1.DefaultPermissions.ElementAt(2));
                }
        }
예제 #30
0
        public void Can_Verify_Fresh_Entity_Is_Not_Dirty()
        {
            // Arrange
            var provider = TestObjects.GetScopeProvider(Logger);

            using (var scope = provider.CreateScope())
            {
                var repository = CreateRepository(provider);

                var user = MockedUser.CreateUser();
                repository.Save(user);


                // Act
                var  resolved = repository.Get((int)user.Id);
                bool dirty    = ((User)resolved).IsDirty();

                // Assert
                Assert.That(dirty, Is.False);
            }
        }