public void SavingPreservesPassword()
        {
            IMember sut;
            var     provider = TestObjects.GetScopeProvider(Logger);

            using (var scope = provider.CreateScope())
            {
                MemberTypeRepository  memberTypeRepository;
                MemberGroupRepository memberGroupRepository;
                var repository = CreateRepository(provider, out memberTypeRepository, out memberGroupRepository);

                var memberType = MockedContentTypes.CreateSimpleMemberType();
                memberTypeRepository.Save(memberType);


                var member = MockedMember.CreateSimpleMember(memberType, "Johnny Hefty", "*****@*****.**", "123", "hefty");
                repository.Save(member);


                sut = repository.Get(member.Id);
                //when the password is null it will not overwrite what is already there.
                sut.RawPasswordValue = null;
                repository.Save(sut);

                sut = repository.Get(member.Id);

                Assert.That(sut.RawPasswordValue, Is.EqualTo("123"));
            }
        }
        public void Rebuild_All_Xml_Structures()
        {
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();
            MemberTypeRepository  memberTypeRepository;
            MemberGroupRepository memberGroupRepository;

            using (var repository = CreateRepository(unitOfWork, out memberTypeRepository, out memberGroupRepository))
            {
                var memberType1 = CreateTestMemberType();

                for (var i = 0; i < 100; i++)
                {
                    var member = MockedMember.CreateSimpleMember(memberType1, "blah" + i, "blah" + i + "@example.com", "blah", "blah" + i);
                    repository.AddOrUpdate(member);
                }
                unitOfWork.Commit();

                //delete all xml
                unitOfWork.Database.Execute("DELETE FROM cmsContentXml");
                Assert.AreEqual(0, unitOfWork.Database.ExecuteScalar <int>("SELECT COUNT(*) FROM cmsContentXml"));

                repository.RebuildXmlStructures(media => new XElement("test"), 10);

                Assert.AreEqual(100, unitOfWork.Database.ExecuteScalar <int>("SELECT COUNT(*) FROM cmsContentXml"));
            }
        }
        public void MemberRepository_Does_Not_Replace_Password_When_Null()
        {
            IMember sut;
            var     provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var     unitOfWork = provider.GetUnitOfWork();
            MemberTypeRepository  memberTypeRepository;
            MemberGroupRepository memberGroupRepository;

            using (var repository = CreateRepository(unitOfWork, out memberTypeRepository, out memberGroupRepository))
            {
                var memberType = MockedContentTypes.CreateSimpleMemberType();
                memberTypeRepository.AddOrUpdate(memberType);
                unitOfWork.Commit();

                var member = MockedMember.CreateSimpleMember(memberType, "Johnny Hefty", "*****@*****.**", "123", "hefty");
                repository.AddOrUpdate(member);
                unitOfWork.Commit();

                sut = repository.Get(member.Id);
                //when the password is null it will not overwrite what is already there.
                sut.RawPasswordValue = null;
                repository.AddOrUpdate(sut);
                unitOfWork.Commit();
                sut = repository.Get(member.Id);

                Assert.That(sut.RawPasswordValue, Is.EqualTo("123"));
            }
        }
        public void MemberHasBuiltinProperties()
        {
            var provider = TestObjects.GetScopeProvider(Logger);

            using (var scope = provider.CreateScope())
            {
                MemberTypeRepository  memberTypeRepository;
                MemberGroupRepository memberGroupRepository;
                var repository = CreateRepository(provider, out memberTypeRepository, out memberGroupRepository);

                var memberType = MockedContentTypes.CreateSimpleMemberType();
                memberTypeRepository.Save(memberType);

                var member = MockedMember.CreateSimpleMember(memberType, "Johnny Hefty", "*****@*****.**", "123", "hefty");
                repository.Save(member);

                var sut = repository.Get(member.Id);

                Assert.That(memberType.CompositionPropertyGroups.Count(), Is.EqualTo(2));
                Assert.That(memberType.CompositionPropertyTypes.Count(), Is.EqualTo(3 + Constants.Conventions.Member.GetStandardPropertyTypeStubs().Count));
                Assert.That(sut.Properties.Count(), Is.EqualTo(3 + Constants.Conventions.Member.GetStandardPropertyTypeStubs().Count));
                var grp = memberType.CompositionPropertyGroups.FirstOrDefault(x => x.Name == Constants.Conventions.Member.StandardPropertiesGroupName);
                Assert.IsNotNull(grp);
                var aliases = Constants.Conventions.Member.GetStandardPropertyTypeStubs().Select(x => x.Key).ToArray();
                foreach (var p in memberType.CompositionPropertyTypes.Where(x => aliases.Contains(x.Alias)))
                {
                    Assert.AreEqual(grp.Id, p.PropertyGroupId.Value);
                }
            }
        }
        public void MemberRepository_Can_Update_Email_And_Login_When_Changed()
        {
            IMember sut;
            var     provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var     unitOfWork = provider.GetUnitOfWork();
            MemberTypeRepository  memberTypeRepository;
            MemberGroupRepository memberGroupRepository;

            using (var repository = CreateRepository(unitOfWork, out memberTypeRepository, out memberGroupRepository))
            {
                var memberType = MockedContentTypes.CreateSimpleMemberType();
                memberTypeRepository.AddOrUpdate(memberType);
                unitOfWork.Commit();

                var member = MockedMember.CreateSimpleMember(memberType, "Johnny Hefty", "*****@*****.**", "123", "hefty");
                repository.AddOrUpdate(member);
                unitOfWork.Commit();

                sut          = repository.Get(member.Id);
                sut.Username = "******";
                sut.Email    = "*****@*****.**";
                repository.AddOrUpdate(sut);
                unitOfWork.Commit();
                sut = repository.Get(member.Id);

                Assert.That(sut.Email, Is.EqualTo("*****@*****.**"));
                Assert.That(sut.Username, Is.EqualTo("This is new"));
            }
        }
        public void ValidateUser__must_lock_out_users_after_max_attempts_of_wrong_password()
        {
            // Arrange
            IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();

            ServiceContext.MemberTypeService.Save(memberType);
            var member = MockedMember.CreateSimpleMember(memberType, "test", "*****@*****.**", "password", "test");

            ServiceContext.MemberService.Save(member);

            var wrongPassword          = "******";
            var numberOfFailedAttempts = MembersMembershipProvider.MaxInvalidPasswordAttempts + 2;

            // Act
            var memberBefore = ServiceContext.MemberService.GetById(member.Id);

            for (int i = 0; i < numberOfFailedAttempts; i++)
            {
                MembersMembershipProvider.ValidateUser(member.Username, wrongPassword);
            }
            var memberAfter = ServiceContext.MemberService.GetById(member.Id);

            // Assert
            Assert.Multiple(() =>
            {
                Assert.AreEqual(0, memberBefore.FailedPasswordAttempts, "Expected 0 failed password attempts before");
                Assert.IsFalse(memberBefore.IsLockedOut, "Expected the member NOT to be locked out before");

                Assert.AreEqual(MembersMembershipProvider.MaxInvalidPasswordAttempts, memberAfter.FailedPasswordAttempts, "Expected exactly the max possible failed password attempts after");
                Assert.IsTrue(memberAfter.IsLockedOut, "Expected the member to be locked out after");
            });
        }
        public void Rebuild_Member_Xml_On_Alias_Change()
        {
            var contentType1 = MockedContentTypes.CreateSimpleMemberType("test1", "Test1");
            var contentType2 = MockedContentTypes.CreateSimpleMemberType("test2", "Test2");

            ServiceContext.MemberTypeService.Save(contentType1);
            ServiceContext.MemberTypeService.Save(contentType2);
            var contentItems1 = MockedMember.CreateSimpleMember(contentType1, 10).ToArray();

            contentItems1.ForEach(x => ServiceContext.MemberService.Save(x));
            var contentItems2 = MockedMember.CreateSimpleMember(contentType2, 5).ToArray();

            contentItems2.ForEach(x => ServiceContext.MemberService.Save(x));
            //only update the contentType1 alias which will force an xml rebuild for all content of that type
            contentType1.Alias = "newAlias";
            ServiceContext.MemberTypeService.Save(contentType1);

            foreach (var c in contentItems1)
            {
                var xml = DatabaseContext.Database.FirstOrDefault <ContentXmlDto>("WHERE nodeId = @Id", new { Id = c.Id });
                Assert.IsNotNull(xml);
                Assert.IsTrue(xml.Xml.StartsWith("<newAlias"));
            }
            foreach (var c in contentItems2)
            {
                var xml = DatabaseContext.Database.FirstOrDefault <ContentXmlDto>("WHERE nodeId = @Id", new { Id = c.Id });
                Assert.IsNotNull(xml);
                Assert.IsTrue(xml.Xml.StartsWith("<test2")); //should remain the same
            }
        }
        public void Rebuild_Member_Xml_On_Property_Removal()
        {
            var standardProps = Constants.Conventions.Member.GetStandardPropertyTypeStubs();

            var contentType1 = MockedContentTypes.CreateSimpleMemberType("test1", "Test1");

            ServiceContext.MemberTypeService.Save(contentType1);
            var contentItems1 = MockedMember.CreateSimpleMember(contentType1, 10).ToArray();

            contentItems1.ForEach(x => ServiceContext.MemberService.Save(x));

            var alias          = contentType1.PropertyTypes.First(x => standardProps.ContainsKey(x.Alias) == false).Alias;
            var elementToMatch = "<" + alias + ">";

            foreach (var c in contentItems1)
            {
                var xml = DatabaseContext.Database.FirstOrDefault <ContentXmlDto>("WHERE nodeId = @Id", new { Id = c.Id });
                Assert.IsNotNull(xml);
                Assert.IsTrue(xml.Xml.Contains(elementToMatch)); //verify that it is there before we remove the property
            }

            //remove a property (NOT ONE OF THE DEFAULTS)
            contentType1.RemovePropertyType(alias);
            ServiceContext.MemberTypeService.Save(contentType1);

            var reQueried = ServiceContext.MemberTypeService.Get(contentType1.Id);
            var reContent = ServiceContext.MemberService.GetById(contentItems1.First().Id);

            foreach (var c in contentItems1)
            {
                var xml = DatabaseContext.Database.FirstOrDefault <ContentXmlDto>("WHERE nodeId = @Id", new { Id = c.Id });
                Assert.IsNotNull(xml);
                Assert.IsFalse(xml.Xml.Contains(elementToMatch)); //verify that it is no longer there
            }
        }
예제 #9
0
        public void MemberRepository_Can_Persist_Member()
        {
            IMember sut;
            var     provider   = new PetaPocoUnitOfWorkProvider();
            var     unitOfWork = provider.GetUnitOfWork();
            MemberTypeRepository memberTypeRepository;

            using (var repository = CreateRepository(unitOfWork, out memberTypeRepository))
            {
                var memberType = MockedContentTypes.CreateSimpleMemberType();
                memberTypeRepository.AddOrUpdate(memberType);
                unitOfWork.Commit();

                var member = MockedMember.CreateSimpleContent(memberType, "Johnny Hefty", "*****@*****.**", "123", "hefty", -1);
                repository.AddOrUpdate(member);
                unitOfWork.Commit();

                sut = repository.Get(member.Id);

                Assert.That(sut, Is.Not.Null);
                Assert.That(sut.ContentType.PropertyGroups.Count(), Is.EqualTo(1));
                Assert.That(sut.ContentType.PropertyTypes.Count(), Is.EqualTo(12));

                Assert.That(sut.Properties.Count(), Is.EqualTo(12));
                Assert.That(sut.Properties.Any(x => x.HasIdentity == false || x.Id == 0), Is.False);
            }
        }
예제 #10
0
        public void Can_Get_Custom_Properties()
        {
            var date = DateTime.Now;

            var memberType = MockedContentTypes.CreateSimpleMemberType("Member", "Member");
            var member     = MockedMember.CreateSimpleMember(memberType, "test name", "*****@*****.**", "test password", "test username");

            member.Comments        = "test comment";
            member.IsApproved      = true;
            member.IsLockedOut     = false;
            member.CreateDate      = date;
            member.LastLoginDate   = date.AddMinutes(1);
            member.LastLockoutDate = date.AddMinutes(2);
            //NOTE: Last activity date is always the same as last login date since we don't have a place to store that data
            //member.LastLoginDate = date.AddMinutes(3);
            member.LastPasswordChangeDate = date.AddMinutes(4);
            member.PasswordQuestion       = "test question";

            member.Properties["title"].Value    = "Test Value 1";
            member.Properties["bodyText"].Value = "Test Value 2";
            member.Properties["author"].Value   = "Test Value 3";
            var mpc = new MemberPublishedContent(member);

            var d = mpc.AsDynamic();

            Assert.AreEqual("Test Value 1", d.title);
            Assert.AreEqual("Test Value 1", d.Title);
            Assert.AreEqual("Test Value 2", d.bodyText);
            Assert.AreEqual("Test Value 2", d.BodyText);
            Assert.AreEqual("Test Value 3", d.author);
            Assert.AreEqual("Test Value 3", d.Author);
        }
        public void New_Member_Has_Built_In_Properties_By_Default()
        {
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();
            MemberTypeRepository  memberTypeRepository;
            MemberGroupRepository memberGroupRepository;

            using (var repository = CreateRepository(unitOfWork, out memberTypeRepository, out memberGroupRepository))
            {
                var memberType = MockedContentTypes.CreateSimpleMemberType();
                memberTypeRepository.AddOrUpdate(memberType);
                unitOfWork.Commit();

                var member = MockedMember.CreateSimpleMember(memberType, "Johnny Hefty", "*****@*****.**", "123", "hefty");
                repository.AddOrUpdate(member);
                unitOfWork.Commit();

                var sut = repository.Get(member.Id);

                Assert.That(sut.ContentType.PropertyGroups.Count(), Is.EqualTo(2));
                Assert.That(sut.ContentType.PropertyTypes.Count(), Is.EqualTo(3 + Constants.Conventions.Member.GetStandardPropertyTypeStubs().Count));
                Assert.That(sut.Properties.Count(), Is.EqualTo(3 + Constants.Conventions.Member.GetStandardPropertyTypeStubs().Count));
                Assert.That(sut.Properties.Any(x => x.HasIdentity == false || x.Id == 0), Is.False);
                var grp = sut.PropertyGroups.FirstOrDefault(x => x.Name == Constants.Conventions.Member.StandardPropertiesGroupName);
                Assert.IsNotNull(grp);
                var aliases = Constants.Conventions.Member.GetStandardPropertyTypeStubs().Select(x => x.Key).ToArray();
                foreach (var p in sut.PropertyTypes.Where(x => aliases.Contains(x.Alias)))
                {
                    Assert.AreEqual(grp.Id, p.PropertyGroupId.Value);
                }
            }
        }
        public void SavingUpdatesNameAndEmail()
        {
            IMember sut;
            var     provider = TestObjects.GetScopeProvider(Logger);

            using (var scope = provider.CreateScope())
            {
                MemberTypeRepository  memberTypeRepository;
                MemberGroupRepository memberGroupRepository;
                var repository = CreateRepository(provider, out memberTypeRepository, out memberGroupRepository);

                var memberType = MockedContentTypes.CreateSimpleMemberType();
                memberTypeRepository.Save(memberType);


                var member = MockedMember.CreateSimpleMember(memberType, "Johnny Hefty", "*****@*****.**", "123", "hefty");
                repository.Save(member);


                sut          = repository.Get(member.Id);
                sut.Username = "******";
                sut.Email    = "*****@*****.**";
                repository.Save(sut);

                sut = repository.Get(member.Id);

                Assert.That(sut.Email, Is.EqualTo("*****@*****.**"));
                Assert.That(sut.Username, Is.EqualTo("This is new"));
            }
        }
예제 #13
0
        private void CreateTestDataForPagingTests(out List <IContent> createdContent, out List <IMember> createdMembers, out List <IMedia> createdMedia)
        {
            //Create content
            createdContent = new List <IContent>();
            var contentType = MockedContentTypes.CreateBasicContentType("blah");

            ServiceContext.ContentTypeService.Save(contentType);
            for (int i = 0; i < 10; i++)
            {
                var c1 = MockedContent.CreateBasicContent(contentType);
                ServiceContext.ContentService.Save(c1);
                createdContent.Add(c1);
            }

            //Create media
            createdMedia = new List <IMedia>();
            var imageType = MockedContentTypes.CreateImageMediaType("myImage");

            ServiceContext.MediaTypeService.Save(imageType);
            for (int i = 0; i < 10; i++)
            {
                var c1 = MockedMedia.CreateMediaImage(imageType, -1);
                ServiceContext.MediaService.Save(c1);
                createdMedia.Add(c1);
            }

            // Create members
            var memberType = MockedContentTypes.CreateSimpleMemberType("simple");

            ServiceContext.MemberTypeService.Save(memberType);
            createdMembers = MockedMember.CreateSimpleMember(memberType, 10).ToList();
            ServiceContext.MemberService.Save(createdMembers);

            var relType = ServiceContext.RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedMediaAlias);

            // Relate content to media
            foreach (var content in createdContent)
            {
                foreach (var media in createdMedia)
                {
                    ServiceContext.RelationService.Relate(content.Id, media.Id, relType);
                }
            }
            // Relate members to media
            foreach (var member in createdMembers)
            {
                foreach (var media in createdMedia)
                {
                    ServiceContext.RelationService.Relate(member.Id, media.Id, relType);
                }
            }
        }
예제 #14
0
        public void Can_Serialize_Without_Error()
        {
            var ss = new SerializationService(new JsonNetSerializer());

            var memberType = MockedContentTypes.CreateSimpleMemberType("memberType", "Member Type");

            memberType.Id = 99;
            var member = MockedMember.CreateSimpleMember(memberType, "Name", "*****@*****.**", "pass", "user", Guid.NewGuid());
            var i      = 200;

            foreach (var property in member.Properties)
            {
                property.Id = ++i;
            }
            member.Id                     = 10;
            member.CreateDate             = DateTime.Now;
            member.CreatorId              = 22;
            member.Comments               = "comments";
            member.Key                    = Guid.NewGuid();
            member.FailedPasswordAttempts = 22;
            member.Level                  = 3;
            member.Path                   = "-1,4,10";
            member.Groups                 = new[] { "group1", "group2" };
            member.IsApproved             = true;
            member.IsLockedOut            = true;
            member.LastLockoutDate        = DateTime.Now;
            member.LastLoginDate          = DateTime.Now;
            member.LastPasswordChangeDate = DateTime.Now;
            member.PasswordQuestion       = "question";
            member.ProviderUserKey        = Guid.NewGuid();
            member.RawPasswordAnswerValue = "raw answer";
            member.RawPasswordValue       = "raw pass";
            member.SortOrder              = 5;
            member.Trashed                = false;
            member.UpdateDate             = DateTime.Now;
            member.Version                = Guid.NewGuid();
            ((IUmbracoEntity)member).AdditionalData.Add("test1", 123);
            ((IUmbracoEntity)member).AdditionalData.Add("test2", "hello");

            var result = ss.ToStream(member);
            var json   = result.ResultStream.ToJsonString();

            Console.WriteLine(json);
        }
        public void Deleting_PropertyType_Removes_The_Property_From_Member()
        {
            IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();

            ServiceContext.MemberTypeService.Save(memberType);
            IMember member = MockedMember.CreateSimpleMember(memberType, "test", "*****@*****.**", "pass", "test");

            ServiceContext.MemberService.Save(member);
            var initProps = member.Properties.Count;

            //remove a property (NOT ONE OF THE DEFAULTS)
            var standardProps = Constants.Conventions.Member.GetStandardPropertyTypeStubs();

            memberType.RemovePropertyType(memberType.PropertyTypes.First(x => standardProps.ContainsKey(x.Alias) == false).Alias);
            ServiceContext.MemberTypeService.Save(memberType);

            //re-load it from the db
            member = ServiceContext.MemberService.GetById(member.Id);

            Assert.AreEqual(initProps - 1, member.Properties.Count);
        }
예제 #16
0
        public void Can_Serialize_Without_Error()
        {
            var memberType = MockedContentTypes.CreateSimpleMemberType("memberType", "Member Type");

            memberType.Id = 99;
            var member = MockedMember.CreateSimpleMember(memberType, "Name", "*****@*****.**", "pass", "user", Guid.NewGuid());
            var i      = 200;

            foreach (var property in member.Properties)
            {
                property.Id = ++i;
            }
            member.Id                     = 10;
            member.CreateDate             = DateTime.Now;
            member.CreatorId              = 22;
            member.Comments               = "comments";
            member.Key                    = Guid.NewGuid();
            member.FailedPasswordAttempts = 22;
            member.Level                  = 3;
            member.Path                   = "-1,4,10";
            member.Groups                 = new[] { "group1", "group2" };
            member.IsApproved             = true;
            member.IsLockedOut            = true;
            member.LastLockoutDate        = DateTime.Now;
            member.LastLoginDate          = DateTime.Now;
            member.LastPasswordChangeDate = DateTime.Now;
            member.PasswordQuestion       = "question";
            member.ProviderUserKey        = Guid.NewGuid();
            member.RawPasswordAnswerValue = "raw answer";
            member.RawPasswordValue       = "raw pass";
            member.SortOrder              = 5;
            member.Trashed                = false;
            member.UpdateDate             = DateTime.Now;
            member.AdditionalData.Add("test1", 123);
            member.AdditionalData.Add("test2", "hello");

            var json = JsonConvert.SerializeObject(member);

            Debug.Print(json);
        }
        private IMember CreateTestMember(IMemberType memberType = null, string name = null, string email = null, string password = null, string username = null, Guid?key = null)
        {
            var provider   = new PetaPocoUnitOfWorkProvider(Logger);
            var unitOfWork = provider.GetUnitOfWork();
            MemberTypeRepository  memberTypeRepository;
            MemberGroupRepository memberGroupRepository;

            using (var repository = CreateRepository(unitOfWork, out memberTypeRepository, out memberGroupRepository))
            {
                if (memberType == null)
                {
                    memberType = MockedContentTypes.CreateSimpleMemberType();
                    memberTypeRepository.AddOrUpdate(memberType);
                    unitOfWork.Commit();
                }

                var member = MockedMember.CreateSimpleMember(memberType, name ?? "Johnny Hefty", email ?? "*****@*****.**", password ?? "123", username ?? "hefty", key);
                repository.AddOrUpdate(member);
                unitOfWork.Commit();

                return(member);
            }
        }
        private IMember CreateTestMember(IMemberType memberType = null, string name = null, string email = null, string password = null, string username = null, Guid?key = null)
        {
            var provider = TestObjects.GetScopeProvider(Logger);

            using (var scope = provider.CreateScope())
            {
                MemberTypeRepository  memberTypeRepository;
                MemberGroupRepository memberGroupRepository;
                var repository = CreateRepository(provider, out memberTypeRepository, out memberGroupRepository);

                if (memberType == null)
                {
                    memberType = MockedContentTypes.CreateSimpleMemberType();
                    memberTypeRepository.Save(memberType);
                }

                var member = MockedMember.CreateSimpleMember(memberType, name ?? "Johnny Hefty", email ?? "*****@*****.**", password ?? "123", username ?? "hefty", key);
                repository.Save(member);
                scope.Complete();

                return(member);
            }
        }
예제 #19
0
        public void Get_Paged_Mixed_Entities_By_Ids()
        {
            //Create content

            var createdContent = new List <IContent>();
            var contentType    = MockedContentTypes.CreateBasicContentType("blah");

            ServiceContext.ContentTypeService.Save(contentType);
            for (int i = 0; i < 10; i++)
            {
                var c1 = MockedContent.CreateBasicContent(contentType);
                ServiceContext.ContentService.Save(c1);
                createdContent.Add(c1);
            }

            //Create media

            var createdMedia = new List <IMedia>();
            var imageType    = MockedContentTypes.CreateImageMediaType("myImage");

            ServiceContext.MediaTypeService.Save(imageType);
            for (int i = 0; i < 10; i++)
            {
                var c1 = MockedMedia.CreateMediaImage(imageType, -1);
                ServiceContext.MediaService.Save(c1);
                createdMedia.Add(c1);
            }

            // Create members
            var memberType = MockedContentTypes.CreateSimpleMemberType("simple");

            ServiceContext.MemberTypeService.Save(memberType);
            var createdMembers = MockedMember.CreateSimpleMember(memberType, 10).ToList();

            ServiceContext.MemberService.Save(createdMembers);

            var provider = TestObjects.GetScopeProvider(Logger);

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

                var ids = createdContent.Select(x => x.Id).Concat(createdMedia.Select(x => x.Id)).Concat(createdMembers.Select(x => x.Id));

                var objectTypes = new[] { Constants.ObjectTypes.Document, Constants.ObjectTypes.Media, Constants.ObjectTypes.Member };

                var query = SqlContext.Query <IUmbracoEntity>()
                            .WhereIn(e => e.Id, ids);

                var entities = repo.GetPagedResultsByQuery(query, objectTypes, 0, 20, out var totalRecords, null, null).ToList();

                Assert.AreEqual(20, entities.Count);
                Assert.AreEqual(30, totalRecords);

                //add the next page
                entities.AddRange(repo.GetPagedResultsByQuery(query, objectTypes, 1, 20, out totalRecords, null, null));

                Assert.AreEqual(30, entities.Count);
                Assert.AreEqual(30, totalRecords);

                var contentEntities = entities.OfType <IDocumentEntitySlim>().ToList();
                var mediaEntities   = entities.OfType <IMediaEntitySlim>().ToList();
                var memberEntities  = entities.OfType <IMemberEntitySlim>().ToList();

                Assert.AreEqual(10, contentEntities.Count);
                Assert.AreEqual(10, mediaEntities.Count);
                Assert.AreEqual(10, memberEntities.Count);
            }
        }
예제 #20
0
        public void Can_Deep_Clone()
        {
            // Arrange
            var memberType = MockedContentTypes.CreateSimpleMemberType("memberType", "Member Type");

            memberType.Id = 99;
            var member = MockedMember.CreateSimpleMember(memberType, "Name", "*****@*****.**", "pass", "user", Guid.NewGuid());
            var i      = 200;

            foreach (var property in member.Properties)
            {
                property.Id = ++i;
            }
            member.Id                     = 10;
            member.CreateDate             = DateTime.Now;
            member.CreatorId              = 22;
            member.Comments               = "comments";
            member.Key                    = Guid.NewGuid();
            member.FailedPasswordAttempts = 22;
            member.Level                  = 3;
            member.Path                   = "-1,4,10";
            member.Groups                 = new[] { "group1", "group2" };
            member.IsApproved             = true;
            member.IsLockedOut            = true;
            member.LastLockoutDate        = DateTime.Now;
            member.LastLoginDate          = DateTime.Now;
            member.LastPasswordChangeDate = DateTime.Now;
            member.PasswordQuestion       = "question";
            member.ProviderUserKey        = Guid.NewGuid();
            member.RawPasswordAnswerValue = "raw answer";
            member.RawPasswordValue       = "raw pass";
            member.SortOrder              = 5;
            member.Trashed                = false;
            member.UpdateDate             = DateTime.Now;
            member.AdditionalData.Add("test1", 123);
            member.AdditionalData.Add("test2", "hello");

            // Act
            var clone = (Member)member.DeepClone();

            // Assert
            Assert.AreNotSame(clone, member);
            Assert.AreEqual(clone, member);
            Assert.AreEqual(clone.Id, member.Id);
            Assert.AreEqual(clone.VersionId, member.VersionId);
            Assert.AreEqual(clone.AdditionalData, member.AdditionalData);
            Assert.AreEqual(clone.ContentType, member.ContentType);
            Assert.AreEqual(clone.ContentTypeId, member.ContentTypeId);
            Assert.AreEqual(clone.CreateDate, member.CreateDate);
            Assert.AreEqual(clone.CreatorId, member.CreatorId);
            Assert.AreEqual(clone.Comments, member.Comments);
            Assert.AreEqual(clone.Key, member.Key);
            Assert.AreEqual(clone.FailedPasswordAttempts, member.FailedPasswordAttempts);
            Assert.AreEqual(clone.Level, member.Level);
            Assert.AreEqual(clone.Path, member.Path);
            Assert.AreEqual(clone.Groups, member.Groups);
            Assert.AreEqual(clone.Groups.Count(), member.Groups.Count());
            Assert.AreEqual(clone.IsApproved, member.IsApproved);
            Assert.AreEqual(clone.IsLockedOut, member.IsLockedOut);
            Assert.AreEqual(clone.SortOrder, member.SortOrder);
            Assert.AreEqual(clone.LastLockoutDate, member.LastLockoutDate);
            Assert.AreNotSame(clone.LastLoginDate, member.LastLoginDate);
            Assert.AreEqual(clone.LastPasswordChangeDate, member.LastPasswordChangeDate);
            Assert.AreEqual(clone.Trashed, member.Trashed);
            Assert.AreEqual(clone.UpdateDate, member.UpdateDate);
            Assert.AreEqual(clone.VersionId, member.VersionId);
            Assert.AreEqual(clone.PasswordQuestion, member.PasswordQuestion);
            Assert.AreEqual(clone.ProviderUserKey, member.ProviderUserKey);
            Assert.AreEqual(clone.RawPasswordAnswerValue, member.RawPasswordAnswerValue);
            Assert.AreEqual(clone.RawPasswordValue, member.RawPasswordValue);
            Assert.AreNotSame(clone.Properties, member.Properties);
            Assert.AreEqual(clone.Properties.Count(), member.Properties.Count());
            for (var index = 0; index < member.Properties.Count; index++)
            {
                Assert.AreNotSame(clone.Properties[index], member.Properties[index]);
                Assert.AreEqual(clone.Properties[index], member.Properties[index]);
            }

            // this can be the same, it is immutable
            Assert.AreSame(clone.ContentType, member.ContentType);

            //This double verifies by reflection
            var allProps = clone.GetType().GetProperties();

            foreach (var propertyInfo in allProps)
            {
                Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(member, null));
            }
        }