/**
  * Resolve unregistered resolvable
  *
  * @param array $params
  * @return null|void
  */
 public function resolve($params = [])
 {
     parent::resolve($params);
     if (!ResolvableAuthorizationRegistry::isRegistered($this->resolvable)) {
         $this->manager->resolve($this->resolvable, $params);
     }
 }
 /**
  * tearDown method
  *
  * @return void
  */
 public function tearDown()
 {
     unset($this->Authorization);
     ResolvableAuthorizationInstance::reset();
     ResolvableAuthorizationRegistry::reset();
     parent::tearDown();
 }
 /**
  * Resolve unregistered resolvables
  *
  * @param array $params
  * @return null|void
  */
 public function resolve($params = [])
 {
     foreach ($this->resolvables as $resolvable) {
         if (!ResolvableAuthorizationRegistry::isRegistered($resolvable)) {
             $this->manager->resolve($resolvable, $params);
         }
     }
 }
 /**
  * Test that resolve not resolve registered
  */
 public function testResolveRegisteredNotCalled()
 {
     $registered = $this->AuthorizationMock->AuthorizationMockUnresolved(true);
     $registered->expects($this->never())->method("resolve");
     ResolvableAuthorizationRegistry::register('test', $registered);
     $authorization = new NotAuthorization();
     $authorization->initialize($this->context);
     $authorization->resolvable = $registered;
     $authorization->resolve(['param']);
 }
 /**
  * Test that resolve method resolve unregistered authorizations
  */
 public function testResolve()
 {
     $registered = $this->AuthorizationMock->AuthorizationMockTrue();
     $unregistered = $this->AuthorizationMock->AuthorizationMockTrue();
     $registered->expects($this->never())->method("resolve");
     $unregistered->expects($this->once())->method("resolve")->with(['param']);
     ResolvableAuthorizationRegistry::register('test', $registered);
     $authorization = new OrAuthorization();
     $authorization->initialize($this->context);
     $authorization->resolvables = [$registered, $unregistered];
     $authorization->resolve(['param']);
 }
 /**
  * Test that register function register an authorization
  */
 public function testRegister()
 {
     $callback = function () {
     };
     $this->manager->registerResolvable('name', $this->manager->context($callback));
     $this->assertTrue(ResolvableAuthorizationRegistry::isRegistered('name'));
     $resolvable = ResolvableAuthorizationRegistry::get('name');
     $this->assertInstanceOf("ResolveAuth\\Authorization\\Resolvable\\ContextAuthorization", $resolvable);
 }
 /**
  * Creates instances from an array.
  *
  * Example :
  *  $array = [
  *      ['type', 'param'],
  *      ['Group', 'user'],
  *      'ignoredAlreadyRegisteredResolvableAuthorization',
  *      $ignoredAlreadyRegisteredResolvableAuthorization
  *  ]
  *
  * @param $authorizationArray
  * @return array
  * @throws Exception
  * @throws InvalidArgumentException
  */
 public function createFromArray($authorizationArray)
 {
     $resolvables = [];
     foreach ($authorizationArray as $resolvable) {
         if (!is_array($resolvable)) {
             $resolvables[] = ResolvableAuthorizationRegistry::get($resolvable);
             continue;
         }
         $resolvables[] = ResolvableAuthorizationInstance::getInstance()->create($resolvable[0], $resolvable[1]);
     }
     return $resolvables;
 }
 /**
  * Registers a registrable ResolvableAuthorizationInterface for later resolution
  *
  * @param  string $key Name in registry
  * @param ResolvableAuthorizationInterface $resolvable
  * @return null
  */
 public function registerResolvable($key, ResolvableAuthorizationInterface $resolvable)
 {
     if (!$resolvable->registrable()) {
         throw new InvalidArgumentException($key . " isn't registrable");
     }
     ResolvableAuthorizationRegistry::register($key, $resolvable);
     return $resolvable;
 }
 /**
  * Create instances with already registered authorizations
  */
 public function testCreateFromArrayWithRegistered()
 {
     $callback = function () {
         return 1;
     };
     $contextAuthorization = new ContextAuthorization();
     $contextAuthorization->initialize($this->context, $callback);
     ResolvableAuthorizationRegistry::register('registered', $contextAuthorization);
     $result = ResolvableAuthorizationInstance::getInstance()->createFromArray(['registered']);
     $this->assertcount(1, $result);
     $this->assertInstanceOf("ResolveAuth\\Authorization\\Resolvable\\ContextAuthorization", $contextAuthorization);
     $this->assertSame($callback, $result[0]->params);
 }