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); }
/** * 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); }