/**
  * 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 the resolvable is not resolved when the authorized value is different
  */
 public function testResolveUnregisteredWithAuthorizedValue()
 {
     $action1 = $this->getResolvable();
     $action1->method("resolved")->willReturn(false);
     $action1->expects($this->never())->method("resolve");
     $never = $this->getResolvable();
     $never->method("resolved")->willReturn(false);
     $never->expects($this->never())->method("resolve");
     ResolvableAuthorizationRegistry::register('never', $never);
     $this->manager->rules[] = new Rule($never, "*");
     $this->manager->rules[] = new Rule($action1, "action1");
     $this->manager->resolveUnregistered("action2");
     $this->assertCount(2, $this->manager->rules);
 }
 /**
  * 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);
 }