<?php declare(strict_types=1); namespace ShlinkioTest\Shlink\Rest\Middleware\ShortUrl; use PHPUnit\Framework\Assert; use PHPUnit\Framework\TestCase; use Prophecy\Argument; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\UriInterface; use Psr\Http\Server\RequestHandlerInterface; use Shlinkio\Shlink\Rest\Middleware\ShortUrl\ShortCodePathMiddleware; use Zend\Diactoros\Response; use Zend\Diactoros\Uri; class ShortCodePathMiddlewareTest extends TestCase { private $middleware; private $requestHandler; public function setUp(): void { $this->middleware = new ShortCodePathMiddleware(); $this->requestHandler = $this->prophesize(RequestHandlerInterface::class); $this->requestHandler->handle(Argument::type(ServerRequestInterface::class))->willReturn(new Response()); } /** @test */ public function properlyReplacesTheOldPathByTheNewOne() { $uri = new Uri('/short-codes/foo'); $request = $this->prophesize(ServerRequestInterface::class); $request->getUri()->willReturn($uri); $withUri = $request->withUri(Argument::that(function (UriInterface $uri) { $path = $uri->getPath(); Assert::assertStringContainsString('/short-urls', $path); Assert::assertStringNotContainsString('/short-codes', $path); return $uri; }))->willReturn($request->reveal()); $this->middleware->process($request->reveal(), $this->requestHandler->reveal()); $withUri->shouldHaveBeenCalledOnce(); } }