public function __invoke(ContainerInterface $services) { $middleware = new BaseUrlMiddleware(); if ($services->has(UrlHelper::class)) { $middleware->setUrlHelper($services->get(UrlHelper::class)); } if ($services->has(BasePathHelper::class)) { $middleware->setBasePathHelper($services->get(BasePathHelper::class)); } return $middleware; }
public function testMiddlewareInjectsUrlHelperWithBaseUrl() { $server = ['REQUEST_URI' => '/index.php/news/3?var1=val1&var2=val2', 'QUERY_URI' => 'var1=val1&var2=val2', 'SCRIPT_NAME' => '/index.php', 'PHP_SELF' => '/index.php/news/3', 'SCRIPT_FILENAME' => '/var/web/html/index.php']; $request = ServerRequestFactory::fromGlobals($server, [], [], [], []); $middleware = new BaseUrlMiddleware(); $urlHelper = $this->prophesize(UrlHelper::class); $urlHelper->setBasePath('/index.php')->shouldBeCalled(); $middleware->setUrlHelper($urlHelper->reveal()); $middleware($request, new Response(), function (ServerRequestInterface $request) { $this->assertEquals('/', $request->getAttribute(BaseUrlMiddleware::BASE_PATH)); $this->assertEquals('/index.php', $request->getAttribute(BaseUrlMiddleware::BASE_URL)); $this->assertEquals('/news/3', $request->getUri()->getPath()); }); }