Exemplo n.º 1
0
 protected function getResource()
 {
     $request = $this->getMock('PSX\\Http\\RequestInterface');
     $response = $this->getMock('PSX\\Http\\ResponseInterface');
     $context = new Context();
     $context->set(Context::KEY_PATH, '/foo/bar');
     $documentation = Environment::getService('controller_factory')->getController('PSX\\Controller\\Foo\\Application\\SchemaApi\\VersionViewController', $request, $response, $context)->getDocumentation();
     return $documentation->getResource($documentation->getLatestVersion());
 }
Exemplo n.º 2
0
 /**
  * @expectedException \ReflectionException
  */
 public function testClassNotExist()
 {
     $context = new Context();
     $context->set(Context::KEY_SOURCE, 'Foo::bar');
     $request = new Request(new Url('http://127.0.0.1'), 'GET');
     $response = new Response();
     $simple = new DependencyInjector(Environment::getService('controller_factory'));
     $simple->resolve($request, $response, $context);
 }
Exemplo n.º 3
0
 public function testEventRouteMatched()
 {
     $logger = $this->getLogger();
     $logger->expects($this->once())->method('info')->with($this->equalTo('Route matched GET /foo.htm -> stdClass'));
     $context = new Context();
     $context->set(Context::KEY_SOURCE, 'stdClass');
     $request = new Request(new Uri('/foo.htm'), 'GET');
     $eventDispatcher = new EventDispatcher();
     $eventDispatcher->addSubscriber(new LogListener($logger));
     $eventDispatcher->dispatch(Event::ROUTE_MATCHED, new RouteMatchedEvent($request, $context));
 }
Exemplo n.º 4
0
 public function resolve(RequestInterface $request, ResponseInterface $response, Context $context)
 {
     $source = $context->get(Context::KEY_SOURCE);
     if (strpos($source, '::') !== false) {
         list($className, $method) = explode('::', $source, 2);
     } else {
         $className = $source;
         $method = null;
     }
     $context->set(Context::KEY_CLASS, $className);
     $context->set(Context::KEY_METHOD, $method);
     return $this->factory->getController($className, $request, $response, $context);
 }
Exemplo n.º 5
0
 public function testExecuteControllerMethod()
 {
     $controller = $this->getMock('PSX\\ControllerInterface', array('onLoad', 'onDelete', 'onGet', 'onHead', 'onOptions', 'onPost', 'onPut', 'onTrace', 'processResponse', 'doFoo'));
     $controller->expects($this->once())->method('onLoad');
     $controller->expects($this->once())->method('onGet');
     $controller->expects($this->once())->method('doFoo');
     $controller->expects($this->once())->method('processResponse');
     $context = new Context();
     $context->set(Context::KEY_METHOD, 'doFoo');
     $request = new Request(new Url('http://localhost'), 'GET');
     $response = new Response();
     $filters = array();
     $filters[] = new ControllerExecutor($controller, $context);
     $filterChain = new FilterChain($filters);
     $filterChain->handle($request, $response);
 }
Exemplo n.º 6
0
    public function resolve(RequestInterface $request, Context $context)
    {
        $sql = 'SELECT id,
				       methods,
				       path,
				       controller,
				       config
				  FROM fusio_routes
				 WHERE status = 1
				   AND methods LIKE :method';
        $method = $request->getMethod();
        $pathMatcher = new PathMatcher($request->getUri()->getPath());
        $result = $this->connection->fetchAll($sql, array('method' => '%' . $method . '%'));
        foreach ($result as $row) {
            $parameters = array();
            if (in_array($method, explode('|', $row['methods'])) && $pathMatcher->match($row['path'], $parameters)) {
                $config = $row['config'];
                $config = !empty($config) ? unserialize($config) : null;
                $context->set(Context::KEY_FRAGMENT, $parameters);
                $context->set(Context::KEY_PATH, $row['path']);
                $context->set(Context::KEY_SOURCE, $row['controller']);
                $context->set('fusio.config', $config);
                $context->set('fusio.routeId', $row['id']);
                return $request;
            }
        }
        return null;
    }
Exemplo n.º 7
0
 protected function newContext(array $route)
 {
     $context = new Context();
     $context->set(Context::KEY_PATH, $route[1]);
     return $context;
 }
Exemplo n.º 8
0
 /**
  * Can be overriden by an controller to return the formats which are
  * supported. All following controllers will have the same supported writers
  * as the origin controller. If null gets returned every available format is
  * supported otherwise it must return an array containing writer class names
  *
  * @return array
  */
 protected function getSupportedWriter()
 {
     return $this->context->get(Context::KEY_SUPPORTED_WRITER);
 }