<?php namespace Engelsystem\Test\Unit\Http; use Engelsystem\Config\Config; use Engelsystem\Container\ServiceProvider; use Engelsystem\Http\Request; use Engelsystem\Http\RequestServiceProvider; use Engelsystem\Test\Unit\ServiceProviderTest; use PHPUnit\Framework\MockObject\MockObject; use Symfony\Component\HttpFoundation\Request as SymfonyRequest; class RequestServiceProviderTest extends ServiceProviderTest { /** * @return array */ public function provideRegister() { return [ ['', []], [[], []], ['192.168.10.99', ['192.168.10.99']], [' 234.234.234.234 ', ['234.234.234.234']], ['123.234.123.234,10.0.0.0/8', ['123.234.123.234', '10.0.0.0/8']], ['123.123.234.234 , ' . PHP_EOL . ' 11.22.33.44/22 ', ['123.123.234.234', '11.22.33.44/22']], [['10.100.20.0/24'], ['10.100.20.0/24']], ]; } /** * @dataProvider provideRegister * @covers \Engelsystem\Http\RequestServiceProvider::register() * * @param string|array $configuredProxies * @param array $trustedProxies */ public function testRegister($configuredProxies, $trustedProxies) { /** @var Config|MockObject $config */ $config = $this->getMockBuilder(Config::class)->getMock(); /** @var Request|MockObject $request */ $request = $this->getMockBuilder(Request::class)->getMock(); $app = $this->getApp(['call', 'get', 'instance']); $this->setExpects($app, 'call', [[Request::class, 'createFromGlobals']], $request); $this->setExpects($app, 'get', ['config'], $config); $this->setExpects($config, 'get', ['trusted_proxies'], $configuredProxies); $app->expects($this->exactly(3)) ->method('instance') ->withConsecutive( [Request::class, $request], [SymfonyRequest::class, $request], ['request', $request] ); /** @var ServiceProvider|MockObject $serviceProvider */ $serviceProvider = $this->getMockBuilder(RequestServiceProvider::class) ->setConstructorArgs([$app]) ->onlyMethods(['setTrustedProxies']) ->getMock(); $serviceProvider->expects($this->once()) ->method('setTrustedProxies') ->with($request, $trustedProxies); $serviceProvider->register(); } }