예제 #1
0
 public function testOptionsWithAcl()
 {
     $I = $this->tester;
     $_SERVER['REQUEST_METHOD'] = 'OPTIONS';
     $resource = new \Phalcon\Acl\Resource('/foo');
     $role = new \Phalcon\Acl\Role('foo');
     $acl = new Phalcon\Acl\Adapter\Memory();
     $acl->setDefaultAction(Phalcon\Acl::DENY);
     $acl->addResource($resource, []);
     $acl->addRole($role);
     $acl->addResourceAccess($resource->getName(), ['GET', 'POST', 'PUT', 'DELETE']);
     $acl->allow($role->getName(), $resource->getName(), 'GET');
     $acl->allow($role->getName(), $resource->getName(), 'POST');
     $acl->isAllowed($role->getName(), $resource->getName(), 'GET');
     $app = Rest\App::instance();
     $app->setService('acl', $acl, true);
     $controller = $this->getMockForAbstractClass(Rest\Controller::class, [], '', true, true, true, ['get', 'put']);
     $controller->setDI($app->getDI());
     $resp = $controller->handle();
     $actual = $resp->getHeaders()->get('Allow');
     $I->assertEquals('GET', $actual);
 }
예제 #2
0
 /**
  * Memory::dropResourceAccess test
  */
 public function testMemoryDropResourceAccess()
 {
     $acl = new Phalcon\Acl\Adapter\Memory();
     $acl->addResource('Resource');
     $acl->addResourceAccess('Resource', array('index', 'show'));
     $acl->addResourceAccess('Resource', 'edit');
     $acl->addRole('Role');
     $acl->deny('Role', 'Resource', 'index');
     $acl->deny('Role', 'Resource', 'edit');
     $this->assertEquals($acl->isAllowed('Role', 'Resource', 'edit'), Phalcon\Acl::DENY);
     $exceptions = 0;
     try {
         $acl->dropResourceAccess('Resource', 'edit');
         $acl->addRole('Role 2');
         $acl->deny('Role 2', 'Resource', 'edit');
     } catch (Phalcon\Acl\Exception $e) {
         $exceptions++;
     }
     $acl->addResourceAccess('Resource', 'edit');
     try {
         $acl->dropResourceAccess('Resource', array('edit'));
         $acl->addRole('Role 3');
         $acl->deny('Role 3', 'Resource', 'edit');
     } catch (Phalcon\Acl\Exception $e) {
         $exceptions++;
     }
     $this->assertEquals($exceptions, 2);
 }