public function testOnPostSerializeWithApiWrapper()
 {
     $apiWrapper = $this->prophesize(ApiWrapper::class);
     $entity = $this->prophesize(SecuredEntityInterface::class);
     $entity->getId()->willReturn(7);
     $entity->getSecurityContext()->willReturn('sulu.example');
     $apiWrapper->getEntity()->willReturn($entity);
     $this->objectEvent->getObject()->willReturn($apiWrapper);
     $securityCondition = new SecurityCondition('sulu.example', null, get_class($entity->reveal()), 7);
     $permission = ['_permissions' => ['permission' => 'value']];
     $this->accessControlManager->getUserPermissions($securityCondition, $this->user->reveal())->willReturn($permission);
     $this->visitor->addData('_permissions', $permission)->shouldBeCalled();
     $this->securedEntitySubscriber->onPostSerialize($this->objectEvent->reveal());
 }
예제 #2
0
 /**
  * @param $changeset The changeset for the entity
  * @param $expectedFields List of filds which should be updated/set
  *
  * @dataProvider provideLifecycle
  */
 public function testOnFlush($changeset, $expectedFields)
 {
     $entity = $this->userBlameObject->reveal();
     $this->unitOfWork->getScheduledEntityInsertions()->willReturn([$entity]);
     $this->unitOfWork->getScheduledEntityUpdates()->willReturn([]);
     $this->entityManager->getClassMetadata(get_class($entity))->willReturn($this->classMetadata);
     $this->unitOfWork->getEntityChangeSet($this->userBlameObject->reveal())->willReturn($changeset);
     foreach (['creator', 'changer'] as $field) {
         $prophecy = $this->classMetadata->setFieldValue($this->userBlameObject->reveal(), $field, $this->user->reveal());
         if (in_array($field, $expectedFields)) {
             $prophecy->shouldBeCalled();
             continue;
         }
         $prophecy->shouldNotBeCalled();
     }
     if (count($expectedFields)) {
         $this->unitOfWork->recomputeSingleEntityChangeSet($this->classMetadata->reveal(), $this->userBlameObject->reveal())->shouldBeCalled();
     }
     $this->subscriber->onFlush($this->onFlushEvent->reveal());
 }