. */ namespace SP\Tests\Core\Bootstrap; use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\MockObject\Exception; use SP\Core\Bootstrap\UriContext; use SP\Domain\Http\Ports\RequestService; use SP\Tests\UnitaryTestCase; /** * Class UriContextTest */ #[Group('unitary')] class UriContextTest extends UnitaryTestCase { /** * @throws Exception */ public function testConstruct() { $request = $this->createMock(RequestService::class); $request->expects(self::exactly(2)) ->method('getServer') ->with(...$this->withConsecutive(['SCRIPT_FILENAME'], ['REQUEST_URI'])) ->willReturn('/some/path/to/test.php', '/syspass/test.php'); $domainName = self::$faker->domainName; $request->expects(self::once()) ->method('getHttpHost') ->willReturn($domainName); $uriContext = new UriContext($request); $this->assertEquals('/test.php', $uriContext->getSubUri()); $this->assertEquals('/syspass', $uriContext->getWebRoot()); $this->assertEquals($domainName . '/syspass', $uriContext->getWebUri()); } /** * @throws Exception */ public function testConstructWithoutWebRoot() { $request = $this->createMock(RequestService::class); $request->expects(self::exactly(2)) ->method('getServer') ->with(...$this->withConsecutive(['SCRIPT_FILENAME'], ['REQUEST_URI'])) ->willReturn('/some/path/to/test.php', 'test.php'); $domainName = self::$faker->domainName; $request->expects(self::once()) ->method('getHttpHost') ->willReturn($domainName); $uriContext = new UriContext($request); $this->assertEquals('/test.php', $uriContext->getSubUri()); $this->assertEquals('', $uriContext->getWebRoot()); $this->assertEquals($domainName, $uriContext->getWebUri()); } }