示例#1
0
    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');
    }
示例#2
0
 /**
  * @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);
 }
示例#3
0
文件: AppTest.php 项目: ovide/phest
 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'));
 }
示例#4
0
 public function _before(AcceptanceTester $I)
 {
     $app = Rest\App::instance();
     $app->addResource('lang', LangMock::class);
     $app->addLanguages(['en', 'es']);
 }
示例#5
0
<?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);
示例#6
0
文件: BasicCest.php 项目: ovide/phest
 public function _before(FunctionalTester $I)
 {
     App::instance()->addResources([Controllers\Foo::class]);
 }
示例#7
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);
 }
示例#8
0
 public function _before(FunctionalTester $I)
 {
     App::instance()->mountResource(FooVar::class);
 }
示例#9
0
文件: Handler.php 项目: ovide/phest
 public function getConfig($key)
 {
     return App::instance()->getConfig(static::HEADER, $key);
 }
示例#10
0
 public function _before(AcceptanceTester $I)
 {
     Rest\App::addResources(['basic/foo' => Controllers\Foo::class]);
 }
示例#11
0
<?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');