protected function setUp()
 {
     $this->tree = new OwnerTree();
     $treeProvider = $this->getMockBuilder('Oro\\Bundle\\SecurityBundle\\Owner\\OwnerTreeProvider')->disableOriginalConstructor()->getMock();
     $treeProvider->expects($this->any())->method('getTree')->will($this->returnValue($this->tree));
     $entityMetadataProvider = $this->getMockBuilder('Oro\\Bundle\\SecurityBundle\\Metadata\\EntitySecurityMetadataProvider')->disableOriginalConstructor()->getMock();
     $entityMetadataProvider->expects($this->any())->method('isProtectedEntity')->will($this->returnValue(true));
     $this->metadataProvider = new OwnershipMetadataProviderStub($this);
     $this->metadataProvider->setMetadata($this->metadataProvider->getOrganizationClass(), new OwnershipMetadata());
     $this->metadataProvider->setMetadata($this->metadataProvider->getBusinessUnitClass(), new OwnershipMetadata('BUSINESS_UNIT', 'owner', 'owner_id'));
     $this->metadataProvider->setMetadata($this->metadataProvider->getUserClass(), new OwnershipMetadata('BUSINESS_UNIT', 'owner', 'owner_id'));
     $this->securityContext = $this->getMock('Symfony\\Component\\Security\\Core\\SecurityContextInterface');
     $securityContextLink = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\DependencyInjection\\Utils\\ServiceLink')->disableOriginalConstructor()->getMock();
     $securityContextLink->expects($this->any())->method('getService')->will($this->returnValue($this->securityContext));
     $this->aclVoter = $this->getMockBuilder('Oro\\Bundle\\SecurityBundle\\Acl\\Voter\\AclVoter')->disableOriginalConstructor()->getMock();
     $this->builder = new OwnershipConditionDataBuilder($securityContextLink, new ObjectIdAccessor(), $entityMetadataProvider, $this->metadataProvider, $treeProvider, $this->aclVoter);
 }
 /**
  * @dataProvider decideIsGrantingProvider
  */
 public function testDecideIsGranting($triggeredMask, $user, $organization, $object, $expectedResult)
 {
     $this->buildTestTree();
     if ($object instanceof TestEntity && $object->getOwner() !== null) {
         $owner = $object->getOwner();
         if (is_a($owner, $this->metadataProvider->getOrganizationClass())) {
             $this->metadataProvider->setMetadata(get_class($object), new OwnershipMetadata('ORGANIZATION', 'owner', 'owner_id', 'organization'));
         } elseif (is_a($owner, $this->metadataProvider->getBusinessUnitClass())) {
             $this->metadataProvider->setMetadata(get_class($object), new OwnershipMetadata('BUSINESS_UNIT', 'owner', 'owner_id', 'organization'));
         } elseif (is_a($owner, $this->metadataProvider->getUserClass())) {
             $this->metadataProvider->setMetadata(get_class($object), new OwnershipMetadata('USER', 'owner', 'owner_id', 'organization'));
         }
     }
     $token = $this->getMockBuilder('Oro\\Bundle\\SecurityBundle\\Authentication\\Token\\UsernamePasswordOrganizationToken')->disableOriginalConstructor()->getMock();
     $token->expects($this->any())->method('getOrganizationContext')->will($this->returnValue($organization));
     $token->expects($this->any())->method('getUser')->will($this->returnValue($user));
     $this->assertEquals($expectedResult, $this->extension->decideIsGranting($triggeredMask, $object, $token));
 }