public void Test_AuthorizationDeletion() { UserAccount userAccount; EntityType entityType; IEntity entity; Authorization authorization; CachingQueryRepository cachingQueryRepository; cachingQueryRepository = (CachingQueryRepository) new EntityAccessControlFactory().Caches.First(c => c is CachingQueryRepository); userAccount = new UserAccount(); userAccount.Name = Guid.NewGuid().ToString(); userAccount.Save(); entityType = new EntityType(); entityType.Save(); entity = Entity.Create(entityType); entity.Save(); authorization = new AccessControlHelper().AddAllowReadQuery(userAccount.As <Subject>(), entityType.As <SecurableEntity>(), TestQueries.GetAllEntitiesReport()); Assert.That(cachingQueryRepository.Cache, Has.Exactly(0) .Property("Key").Property("SubjectId").EqualTo(userAccount.Id) .And.Property("Key").Property("PermissionId").EqualTo(Permission.Read.Id) .And.Property("Key").Property("EntityTypes").Contains(entityType.Id), "Entry initially present in cache"); using (new SetUser(userAccount)) { Assert.That(() => Entity.Get(entity.Id), Throws.Nothing); } Assert.That(cachingQueryRepository.Cache, Has.Exactly(1) .Property("Key").Property("SubjectId").EqualTo(userAccount.Id) .And.Property("Key").Property("PermissionId").EqualTo(Permission.Read.Id) .And.Property("Key").Property("EntityTypes").Contains(entityType.Id), "Entry not added to cache"); authorization.Delete(); Assert.That(cachingQueryRepository.Cache, Has.Exactly(0) .Property("Key").Property("SubjectId").EqualTo(userAccount.Id) .And.Property("Key").Property("PermissionId").EqualTo(Permission.Read.Id) .And.Property("Key").Property("EntityTypes").Contains(entityType.Id), "Entry not removed from cache"); }