public void AddItemInCollection_DenyCreateObject() { CreateObjects(); using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { context.PermissionsContainer.AddObjectPermission <DbContextICollectionProperty, OneToManyICollection_Many>( SecurityOperation.Create, OperationState.Deny, (c, t) => t.Name == "4"); OneToManyICollection_One.Count = 0; OneToManyICollection_Many.Count = 0; OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); OneToManyICollection_Many oneToManyICollection_Many = new OneToManyICollection_Many(); oneToManyICollection_Many.Name = "4"; one.Collection.Add(oneToManyICollection_Many); AssertFail(context); one.Collection.Add(oneToManyICollection_Many); oneToManyICollection_Many.Name = "5"; context.SaveChanges(); Assert.AreEqual(2, OneToManyICollection_One.Count); Assert.AreEqual(9, OneToManyICollection_Many.Count); } using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { OneToManyICollection_One.Count = 0; OneToManyICollection_Many.Count = 0; OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); Assert.AreEqual(4, one.Collection.Count); Assert.IsTrue(one.Collection.Any(p => p.Name == "5")); Assert.AreEqual(2, OneToManyICollection_One.Count); Assert.AreEqual(8, OneToManyICollection_Many.Count); } }
public void CreateSecurityCollectionObject_DenyObjectMemberInCollection_Read() { CreateObjects(); using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { context.PermissionsContainer.AddMemberPermission <DbContextICollectionProperty, OneToManyICollection_Many>(SecurityOperation.Read, OperationState.Deny, "Name", (p, d) => d.Name == "3"); OneToManyICollection_One.Count = 0; OneToManyICollection_Many.Count = 0; OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); Assert.IsTrue(one.Collection.Any(p => string.IsNullOrEmpty(p.Name))); Assert.AreEqual(OneToManyICollection_One.Count, 2); Assert.AreEqual(OneToManyICollection_Many.Count, 6); } }
public void CreateSecurityCollectionObject_DenyObjectInCollection_Read() { CreateObjects(); using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { OneToManyICollection_One.Count = 0; OneToManyICollection_Many.Count = 0; context.PermissionsContainer.AddObjectPermission <DbContextICollectionProperty, OneToManyICollection_Many>(SecurityOperation.Read, OperationState.Deny, (p, d) => d.Name == "3"); OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); Assert.AreEqual(one.Collection.Count, 2); Assert.AreEqual(OneToManyICollection_One.Count, 2); Assert.AreEqual(OneToManyICollection_Many.Count, 5);// 3 real object + 2 securityObject } }
public void CreateSecurityCollectionObject_DenyMemberCollection_Read() { CreateObjects(); using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { context.PermissionsContainer.AddMemberPermission <DbContextICollectionProperty, OneToManyICollection_One>(SecurityOperation.Read, OperationState.Deny, "Collection", (p, d) => true); OneToManyICollection_One.Count = 0; OneToManyICollection_Many.Count = 0; OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); Assert.IsNull(one.Collection); Assert.AreEqual(OneToManyICollection_One.Count, 2); Assert.AreEqual(OneToManyICollection_Many.Count, 6); } }
public static void CreateObjectsWithOutCollection() { using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { OneToManyICollection_One one = new OneToManyICollection_One(); one.Name = "1"; context.Add(one); for (int i = 1; i < 4; i++) { string indexString = i.ToString(); OneToManyICollection_Many company = new OneToManyICollection_Many(); company.Name = i.ToString(); context.Add(company); } context.SaveChanges(); } }
public void ChengeItemInCollection_DenyRemoveObjectInCollection() { CreateObjects(); using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { context.PermissionsContainer.AddObjectPermission <DbContextICollectionProperty, OneToManyICollection_Many>( SecurityOperation.Write, OperationState.Deny, (c, t) => t.Name == "1"); OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); one.Collection.Remove(one.Collection.First(p => p.Name == "1")); AssertFail(context); } using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); Assert.AreEqual(3, one.Collection.Count); Assert.AreEqual(3, context.OneToManyICollection_Many.Count()); } }
public void ChengeItemInCollection_DenyChengeObject() { CreateObjects(); using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { context.PermissionsContainer.AddObjectPermission <DbContextICollectionProperty, OneToManyICollection_Many>( SecurityOperation.Write, OperationState.Deny, (c, t) => t.Name == "1"); OneToManyICollection_One.Count = 0; OneToManyICollection_Many.Count = 0; OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); one.Collection.First(p => p.Name == "3").Name = "1"; AssertFail(context); one.Collection.First(p => p.Name == "3").Name = "5"; context.SaveChanges(); Assert.AreEqual(2, OneToManyICollection_One.Count); Assert.AreEqual(6, OneToManyICollection_Many.Count); } }
public void ChengeItemInCollection_DenyWriteCollectionAddExistingObjectInCollection() { CreateObjectsWithOutCollection(); using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { context.PermissionsContainer.AddMemberPermission <DbContextICollectionProperty, OneToManyICollection_One>( SecurityOperation.Write, OperationState.Deny, "Collection", (c, t) => true); OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); OneToManyICollection_Many many = context.OneToManyICollection_Many.First(p => p.Name == "1"); one.Collection.Add(many); AssertFail(context); } using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); Assert.AreEqual(0, one.Collection.Count); Assert.AreEqual(3, context.OneToManyICollection_Many.Count()); } }
public void ChangeItemInCollection_DenyAddingNewObjectInCollection() { CreateObjects(); using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { { context.PermissionsContainer.AddMemberPermission <DbContextICollectionProperty, OneToManyICollection_One>( SecurityOperation.Write, OperationState.Deny, "Collection", (c, t) => true); OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); OneToManyICollection_Many many = new OneToManyICollection_Many(); many.Name = "4"; one.Collection.Add(many); var stateManager = context.ChangeTracker.GetStateManager(); var entityType = context.Model.GetEntityTypes().First(p => p.ClrType == typeof(OneToManyICollection_Many)); var property = entityType.GetForeignKeys().First().Properties.First(); var entity = stateManager.Entries.Last()[property]; AssertFail(context); } } }
public void CreateSecurityCollectionObject_Read() { CreateObjects(); using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { OneToManyICollection_One.Count = 0; OneToManyICollection_Many.Count = 0; OneToManyICollection_One one_1 = context.OneToManyICollection_One.First(); Assert.AreEqual(one_1.Name, "1"); Assert.AreEqual(one_1.Collection.Count, 0); Assert.AreEqual(OneToManyICollection_One.Count, 2); Assert.AreEqual(OneToManyICollection_Many.Count, 0); OneToManyICollection_One.Count = 0; OneToManyICollection_Many.Count = 0; OneToManyICollection_One one_2 = context.OneToManyICollection_One.Include(p => p.Collection).First(); Assert.AreEqual(one_2.Name, "1"); Assert.AreEqual(one_2.Collection.Count, 3); Assert.AreEqual(OneToManyICollection_One.Count, 1); // recreate securityObjects Assert.AreEqual(OneToManyICollection_Many.Count, 6); } }
public void AddItemInCollection() { CreateObjects(); using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { OneToManyICollection_One.Count = 0; OneToManyICollection_Many.Count = 0; OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); OneToManyICollection_Many oneToManyICollection_Many = new OneToManyICollection_Many(); oneToManyICollection_Many.Name = "4"; one.Collection.Add(oneToManyICollection_Many); context.SaveChanges(); Assert.AreEqual(2, OneToManyICollection_One.Count); Assert.AreEqual(8, OneToManyICollection_Many.Count); } using (DbContextICollectionProperty context = new DbContextICollectionProperty()) { OneToManyICollection_One.Count = 0; OneToManyICollection_Many.Count = 0; OneToManyICollection_One one = context.OneToManyICollection_One.Include(p => p.Collection).First(); Assert.AreEqual(4, one.Collection.Count); Assert.AreEqual(2, OneToManyICollection_One.Count); Assert.AreEqual(8, OneToManyICollection_Many.Count); } }