public function testAccept(FunctionalTester $I) { $this->app->mountResource(\Mocks\Controllers\FooVar::class); $handlers = App::instance()->getHandlers(); $accept = $handlers[HeaderHandler\Accept::HEADER]; $accept->setAcceptable('application/xml', ContentType\XmlEncoder::class); $I->haveHttpHeader('Accept', 'application/xml'); $I->sendGET('/foo/1/var'); $expected = <<<EOXML <?xml version="1.0"?> <root><id>1</id><name>foo1</name><description>foo1 desc</description><id>2</id><name>foo2</name><description>foo2 desc</description></root> EOXML; $I->seeResponseContains($expected); $I->haveHttpHeader('Accept', 'application/json'); $I->sendGET('/foo/1/var'); $I->seeResponseContainsJson(); $I->haveHttpHeader('Accept', 'foo/bar'); $I->sendGET('/foo/1/var'); }
/** * @depends testSetConfig */ public function testGetConfig() { $I = $this->tester; $_SERVER[Mocks\Headers\Basic::HEADER] = 'var'; $app = App::instance(); $request = new \Phalcon\Http\Request(); $header = new Mocks\Headers\Basic($request); $header->setConfig('bar', 'var'); $actual = $header->getConfig('bar'); $expected = 'var'; $I->assertEquals($expected, $actual); }
public function testErrorHandlerInDevMode() { $this->app->getEventsManager()->attach('micro', function (\Phalcon\Events\Event $evt, App $app) { if ($evt->getType() === 'beforeHandleRoute') { throw new \Exception('foo', 555, new \Exception('bar', 444)); } }); $this->app->devEnv = true; $response = $this->app->handle('/'); $actualContent = json_decode($response->getContent()); $this->assertEquals(555, $actualContent->code); $this->assertEquals('foo', $actualContent->message); $this->assertEquals('Exception', $actualContent->type); $this->assertInternalType('array', $actualContent->trace); $this->assertEquals('500 foo', $response->getHeaders()->get('Status')); }
public function _before(AcceptanceTester $I) { $app = Rest\App::instance(); $app->addResource('lang', LangMock::class); $app->addLanguages(['en', 'es']); }
<?php use Mocks\Examples\User; use Ovide\Libs\Mvc\Rest\App; use Phalcon\Acl; use Ovide\Libs\Mvc\Rest\ContentType\XmlEncoder; App::reset(); $app = App::instance(); $handlers = $app->getHandlers(); $accept = $handlers[\Ovide\Libs\Mvc\Rest\HeaderHandler\Accept::HEADER]; $accept->setAcceptable(XmlEncoder::CONTENT_TYPE, XmlEncoder::class); $app->mountResource(User::class); $app->di->set('acl', function () { $guest = new Acl\Role('guest'); $user = new Acl\Role('user'); $root = new Acl\Role('root'); $users = new Acl\Resource('users'); $acl = new Acl\Adapter\Memory(); $acl->addRole($guest); $acl->addRole($user, $guest); $acl->addRole($root, $user); $acl->addResource($users, ['delete', 'get', 'getOne', 'post', 'put', 'putSelf', 'getSelf', 'deleteSelf']); $acl->allow('guest', 'users', ['post']); $acl->allow('user', 'users', ['getSelf', 'deleteSelf', 'putSelf']); $acl->deny('user', 'users', 'post'); $acl->allow('root', 'users', '*'); $acl->setDefaultAction(Acl::DENY); //Sets 'gest' as active role $acl->isAllowed('guest', '', ''); return $acl; }, true);
public function _before(FunctionalTester $I) { App::instance()->addResources([Controllers\Foo::class]); }
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); }
public function _before(FunctionalTester $I) { App::instance()->mountResource(FooVar::class); }
public function getConfig($key) { return App::instance()->getConfig(static::HEADER, $key); }
public function _before(AcceptanceTester $I) { Rest\App::addResources(['basic/foo' => Controllers\Foo::class]); }
<?php use Ovide\Libs\Mvc\Rest; use Mocks\Examples; $urx = '[a-z]*'; $arx = '[a-z_]*'; $trx = '.*'; $crx = '[0-9]*'; $ur = 'users'; $tr = "{$ur}/\\{{$urx}}/token"; $ar = "{$ur}/\\{{$urx}}/articles"; $cr = "{$ar}/\\{{$arx}}/comments"; $app = Rest\App::instance(); $app->addResource($ur, Examples\User::class, $urx); $app->addResource($tr, Examples\Token::class, $trx); $app->addResource($ar, Examples\Article::class, $arx); $app->addResource($cr, Examples\Comment::class, $crx); $app->handle(); //////////////////////////////////////////////////////////////////////////////// $I = new AcceptanceTester($scenario); $foo = 'foo'; $fooP = 'barbarbar'; $I->wantTo("Create create a user {$foo}"); $I->sendPOST('/users', ['username' => $foo, 'password' => 'bar']); $I->seeResponseCodeIs(Rest\Response::BAD_REQUEST); $I->seeHttpHeader('Status', '400 Password too short'); $I->sendPOST('/users', ['username' => $foo, 'password' => $fooP]); $I->seeResponseCodeIs(201); $I->seeHttpHeader('Location', "/users/{$foo}"); $I->seeResponseEquals(json_encode(['username' => $foo, 'password' => sha1($fooP)])); $fooUrl = $I->grabHttpHeader('Location');