public void SystemStartAndPreloadStructures() { //---- Ensure test data var entities = CreateTestEntities(); var groups = CreateTestGroups(); //var memberships = Tools.CreateInMemoryMembershipTable("G1:U1,U2|G2:U3,U4|G3:U1,U3|G4:U4|G5:U5"); var memberships = Tools.CreateInMemoryMembershipTable(groups); var aces = CreateTestAces(); var storage = new DatabaseStorage { Aces = aces, Memberships = memberships, Entities = entities }; //---- Start the system Context.StartTheSystem(new MemoryDataProvider(storage), new DefaultMessageProvider()); //---- Start the request context = new Context(TestUser.User1); //---- check cache var dbAcc = new MemoryDataProviderAccessor((MemoryDataProvider)context.Security.DataProvider); Assert.AreEqual(entities.Count, context.Security.Cache.Entities.Count); Assert.AreEqual(entities.Count, dbAcc.Storage.Entities.Count); Assert.AreEqual(groups.Count, context.Security.Cache.Groups.Count); Assert.AreEqual(memberships.Count, dbAcc.Storage.Memberships.Count); Assert.AreEqual(aces.Count, storage.Aces.Count); //---- check membership in the evaluator var s = Tools.ReplaceIds(context.Security.Evaluator._traceMembership()); var expected = @"U1:[G1,G3]U2:[G1]U3:[G2,G3]U4:[G2,G4]U5:[G5]"; Assert.AreEqual(expected, s.Replace(Environment.NewLine, "").Replace(" ", "")); //---- preload var id1 = Id("E1"); var id3 = Id("E3"); var id5 = Id("E5"); var id50 = Id("E50"); //---- check nearest holder ids var entityTable = context.Security.Cache.Entities; Assert.AreEqual(id1, entityTable[Id("E1")].GetFirstAclId()); Assert.AreEqual(id1, entityTable[Id("E2")].GetFirstAclId()); Assert.AreEqual(id3, entityTable[Id("E3")].GetFirstAclId()); Assert.AreEqual(id1, entityTable[Id("E4")].GetFirstAclId()); Assert.AreEqual(id5, entityTable[Id("E5")].GetFirstAclId()); Assert.AreEqual(id1, entityTable[Id("E6")].GetFirstAclId()); Assert.AreEqual(id5, entityTable[Id("E14")].GetFirstAclId()); Assert.AreEqual(id5, entityTable[Id("E15")].GetFirstAclId()); Assert.AreEqual(id1, entityTable[Id("E16")].GetFirstAclId()); Assert.AreEqual(id1, entityTable[Id("E17")].GetFirstAclId()); Assert.AreEqual(id50, entityTable[Id("E50")].GetFirstAclId()); Assert.AreEqual(id50, entityTable[Id("E51")].GetFirstAclId()); Assert.AreEqual(id50, entityTable[Id("E52")].GetFirstAclId()); Assert.AreEqual(id50, entityTable[Id("E53")].GetFirstAclId()); //---- check acls in the evaluator var allacls = Tools.CollectAllAcls(context.Security); Assert.AreEqual(4, allacls.Count); var acl1 = GetAcl(allacls, id1); var acl3 = GetAcl(allacls, id3); var acl5 = GetAcl(allacls, id5); var acl50 = GetAcl(allacls, id50); Assert.IsNull(acl1.Parent); Assert.IsNotNull(acl3.Parent); Assert.IsNotNull(acl5.Parent); Assert.IsNotNull(acl50.Parent); Assert.AreEqual(id1, acl3.Parent.EntityId); Assert.AreEqual(id1, acl5.Parent.EntityId); Assert.AreEqual(id5, acl50.Parent.EntityId); }