Beispiel #1
0
 public function testDispatch($path)
 {
     $request = \Owl\Http\Request::factory(['uri' => $path, 'method' => 'GET']);
     if ($router = $this->getDelegateRouter($request)) {
         return $router->dispatch($request);
     }
     return $this->dispatch($request);
 }
Beispiel #2
0
 public function testRequestURI()
 {
     $uri = '/foobar.json?foo=bar';
     $request = \Owl\Http\Request::factory(['uri' => $uri]);
     $this->assertEquals($uri, $request->getRequestURI());
     $this->assertEquals('/foobar.json', $request->getRequestPath());
     $this->assertEquals('json', $request->getExtension());
 }
Beispiel #3
0
 /**
  * @expectedException \Owl\Http\Exception
  * @expectedExceptionCode 501
  */
 public function test501()
 {
     $app = new \Owl\Application();
     $app->setExceptionHandler(function ($exception) {
         throw $exception;
     });
     $request = \Owl\Http\Request::factory(['method' => 'FOO']);
     $response = new \Owl\Http\Response();
     $app->execute($request, $response);
 }
Beispiel #4
0
 public function testBindIpCookieContext()
 {
     $config = ['request' => \Owl\Http\Request::factory(['ip' => '192.168.1.1']), 'response' => new \Tests\Mock\Http\Response(), 'token' => 'test', 'sign_salt' => 'fdajkfldsjfldsf', 'bind_ip' => true];
     $handler = new \Owl\Context\Cookie($config);
     $handler->set('test', 'abc');
     $handler = new \Owl\Context\Cookie(array_merge($config, ['request' => \Owl\Http\Request::factory(['cookies' => $handler->getConfig('response')->getCookies(), 'ip' => '192.168.1.3']), 'response' => new \Tests\Mock\Http\Response()]));
     $this->assertEquals($handler->get('test'), 'abc', '同子网IP取值');
     $handler = new \Owl\Context\Cookie(array_merge($config, ['request' => \Owl\Http\Request::factory(['cookies' => $handler->getConfig('response')->getCookies(), 'ip' => '192.168.2.1']), 'response' => new \Owl\Http\Response()]));
     $this->assertNull($handler->get('test'), '不同子网IP取值');
 }
Beispiel #5
0
 public function reset()
 {
     parent::reset();
     $request = $this->request;
     $this->get = isset($request->get) ? $request->get : [];
     $this->post = isset($request->post) ? $request->post : [];
     $this->cookies = isset($request->cookie) ? $request->cookie : [];
     $this->server = isset($request->server) ? array_change_key_case($request->server, CASE_UPPER) : [];
     $this->headers = isset($request->header) ? $request->header : [];
     $_GET = $this->get;
     $_POST = $this->post;
     $_COOKIE = $this->cookies;
     $_SERVER = $this->server;
 }
Beispiel #6
0
 public function testRequestURI()
 {
     $uri = '/foobar.json?foo=bar';
     $request = \Owl\Http\Request::factory(['uri' => $uri]);
     $this->assertEquals($uri, $request->getRequestTarget());
     $this->assertEquals('/foobar.json', $request->getUri()->getPath());
     $this->assertEquals('json', $request->getUri()->getExtension());
     $request = \Owl\Http\Request::factory(['uri' => '/', '_SERVER' => ['SERVER_NAME' => 'test.example.com']]);
     $uri = $request->getUri();
     $this->assertEquals('test.example.com', $uri->getHost());
     $request = \Owl\Http\Request::factory(['uri' => '/', 'headers' => ['host' => 'www.example.com:88'], '_SERVER' => ['SERVER_NAME' => 'test.example.com']]);
     $uri = $request->getUri();
     $this->assertEquals('www.example.com', $uri->getHost());
     $this->assertEquals(88, $uri->getPort());
 }
Beispiel #7
0
 protected function execute(array $options)
 {
     $path = isset($options['uri']) ? parse_url($options['uri'], PHP_URL_PATH) : '/';
     $cookies = \Tests\Mock\Cookie::getInstance()->get($path);
     if (isset($options['cookies'])) {
         $options['cookies'] = array_merge($cookies, $options['cookies']);
     } else {
         $options['cookies'] = $cookies;
     }
     $request = \Owl\Http\Request::factory($options);
     $response = new \Tests\Mock\Response();
     $app = __get_fpm_app();
     $app->execute($request, $response);
     return $response;
 }
Beispiel #8
0
 public function testOwnRequest()
 {
     $request = new Request([], [], [], [], [], []);
     $this->assertEquals('/', $request->getUri());
     // By default it's /
     $this->assertEquals(Request::GET, $request->getMethod());
     $request = new Request(['param1' => 5], ['post1' => 5, 'post2' => "test string"], ['REQUEST_URI' => '/testuri'], [], [], []);
     $this->assertEquals('/testuri', $request->getUri());
     $this->assertEquals(Request::GET, $request->getMethod());
     $this->assertSame(5, $request->getParam('param1'));
     $this->assertSame(5, $request->getPost('post1'));
     $this->assertSame("test string", $request->getPost('post2'));
 }
Beispiel #9
0
 public function __construct($swoole_request)
 {
     $this->swoole_request = $swoole_request;
     $get = isset($swoole_request->get) ? $swoole_request->get : [];
     $post = isset($swoole_request->post) ? $swoole_request->post : [];
     $cookies = isset($swoole_request->cookie) ? $swoole_request->cookie : [];
     $server = isset($swoole_request->server) ? array_change_key_case($swoole_request->server, CASE_UPPER) : [];
     $headers = isset($swoole_request->header) ? array_change_key_case($swoole_request->header, CASE_LOWER) : [];
     $files = isset($swoole_request->files) ? $swoole_request->files : [];
     foreach ($headers as $key => $value) {
         $key = 'HTTP_' . strtoupper(str_replace('-', '_', $key));
         $server[$key] = $value;
     }
     $_GET = $get;
     $_POST = $post;
     $_COOKIE = $cookies;
     $_SERVER = $server;
     $_FILES = $files;
     parent::__construct($get, $post, $server, $cookies, $files);
 }
Beispiel #10
0
 public function testDispatchEvents()
 {
     $dispatchAfterInitialize = false;
     $dispatchAfterAction = false;
     $dispatchBeforeExecuteRoute = false;
     $dispatchAfterExecuteRoute = false;
     $appAfterHandle = false;
     $eventManager = new \Owl\Event\Manager();
     $eventManager->listen('dispatch:afterInitialize', function ($app) use(&$dispatchAfterInitialize) {
         $dispatchAfterInitialize = true;
     });
     $eventManager->listen('dispatch:afterAction', function ($app) use(&$dispatchAfterAction) {
         $dispatchAfterAction = true;
     });
     $eventManager->listen('dispatch:beforeExecuteRoute', function ($app) use(&$dispatchBeforeExecuteRoute) {
         $dispatchBeforeExecuteRoute = true;
     });
     $eventManager->listen('dispatch:afterExecuteRoute', function ($app) use(&$dispatchAfterExecuteRoute) {
         $dispatchAfterExecuteRoute = true;
     });
     $eventManager->listen('app:afterHandle', function ($app) use(&$appAfterHandle) {
         $appAfterHandle = true;
     });
     $this->assertFalse($dispatchAfterInitialize);
     $this->assertFalse($dispatchAfterAction);
     $this->assertFalse($dispatchBeforeExecuteRoute);
     $this->assertFalse($dispatchAfterExecuteRoute);
     $this->assertFalse($appAfterHandle);
     $application = $this->createSmallApp($eventManager);
     $response = $application->handle(Request::createFromGlobals(), new \Owl\Http\Response\Json());
     $this->assertInstanceOf('Owl\\Http\\ResponseInterface', $response);
     $this->assertSame(200, $response->getCode());
     $this->assertNotFalse($dispatchBeforeExecuteRoute);
     $this->assertNotFalse($dispatchAfterExecuteRoute);
     $this->assertNotFalse($dispatchAfterInitialize);
     $this->assertNotFalse($dispatchAfterAction);
     $this->assertNotFalse($appAfterHandle);
 }
Beispiel #11
0
<?php

$serviceManager = new \Owl\Service\Manager();
$router = new \Owl\Router\Router();
$router->add('/', ['action' => '/']);
$router->add('/user/{id:int}/', ['action' => 'view']);
$router->add('/users', ['action' => 'users']);
$serviceManager->set('router', $router);
$application = new \Owl\Application($serviceManager);
$application->handle(\Owl\Http\Request::createFromGlobals(), new \Owl\Http\Response());
Beispiel #12
0
<?php

/**
 * @author Patsura Dmitry http://github.com/ovr <*****@*****.**>
 */
use Owl\Application;
use Owl\Http\Request;
use Owl\Router\Route;
use Owl\Router\Router;
include_once __DIR__ . '/../vendor/autoload.php';
$serviceManager = new Owl\Service\Manager();
$router = new Router();
/**
 * Frontend
 */
$router->add('/', ['module' => 'Frontend', 'controller' => 'Index', 'action' => 'index']);
/**
 * Api module - REST API
 */
$router->add('/api', ['module' => 'Api', 'controller' => 'Index', 'action' => 'index']);
$router->add('/api/users', ['module' => 'Api', 'controller' => 'User', 'action' => 'list']);
$router->add('/api/users/:id', ['module' => 'Api', 'controller' => 'User', 'action' => 'index']);
$router->add('/api/users/:id', ['module' => 'Api', 'controller' => 'User', 'action' => 'create'], Route::POST);
$router->add('/api/users/:id', ['module' => 'Api', 'controller' => 'User', 'action' => 'delete'], Route::DELETE);
$serviceManager->set('router', $router);
$application = new Application($serviceManager);
$response = $application->handle(Request::createFromGlobals());
$response->send();
Beispiel #13
0
 /**
  * 响应请求,依次执行添加的中间件逻辑.
  *
  * @param \Owl\Http\Request  $request
  * @param \Owl\Http\Response $response
  */
 public function execute(\Owl\Http\Request $request, \Owl\Http\Response $response)
 {
     $exception_handler = $this->getExceptionHandler();
     $method = $request->getMethod();
     try {
         if (!in_array($method, ['HEAD', 'OPTIONS', 'GET', 'POST', 'PUT', 'DELETE', 'PATCH'])) {
             throw \Owl\Http\Exception::factory(501);
         }
         $this->middleware->execute([$request, $response]);
     } catch (\Exception $exception) {
         call_user_func($exception_handler, $exception, $request, $response);
     } catch (\Throwable $error) {
         call_user_func($exception_handler, $error, $request, $response);
     }
     if (!TEST) {
         $response->end();
     }
     if (function_exists('fastcgi_finish_request')) {
         fastcgi_finish_request();
     }
 }
Beispiel #14
0
 /**
  * 获得请求路径,去掉了base_path后的内容
  *
  * @param Owl\Http\Request $request
  * @return string
  */
 protected function getRequestPath(\Owl\Http\Request $request)
 {
     $path = $this->normalizePath($request->getRequestPath());
     return $this->trimBasePath($path);
 }
Beispiel #15
0
<?php

/**
 * @author Patsura Dmitry http://github.com/ovr <*****@*****.**>
 */
use Owl\Application;
use Owl\Http\Request;
use Owl\Router\Route;
use Owl\Router\Router;
error_reporting(-1);
ini_set('display_errors', 1);
include_once __DIR__ . '/../vendor/autoload.php';
include_once __DIR__ . '/../app/Application.php';
$eventManager = new \Owl\Event\Manager();
$profiler = new Owl\Debug\Profiler();
$profiler->listen($eventManager);
$application = new \RestApp\Application(new Owl\Service\Manager(), $eventManager);
$response = $application->bootstrap()->handle(Request::createFromGlobals(), new \Owl\Http\Response\Json());
$response = $profiler->setContent($response);
$response->send();
Beispiel #16
0
 public function testSuccessConstructPass()
 {
     $controller = new Controller(Request::createFromGlobals(), new \Owl\Http\Response\Json(), new \Owl\Service\Manager());
     $this->assertInstanceOf('Owl\\Http\\RequestInterface', $controller->getRequest());
 }