18 require_mock_env(
'env1');
20 import(
'lib.pkp.tests.PKPTestCase');
21 import(
'lib.pkp.classes.core.PKPRequest');
22 import(
'lib.pkp.classes.plugins.HookRegistry');
29 private $getRemoteAddrTestConfigData;
31 public function setUp() : void {
37 $this->getRemoteAddrTestConfigData =
Registry::get(
'configData');
44 Registry::set(
'configData', $this->getRemoteAddrTestConfigData);
52 self::assertTrue($this->request->isPathInfoEnabled());
60 self::assertFalse($this->request->isPathInfoEnabled());
68 self::assertFalse($this->request->isRestfulUrlsEnabled());
76 self::assertTrue($this->request->isRestfulUrlsEnabled());
84 $this->request->redirectUrl(
'http://some.url/');
86 array(array(
'Request::redirect' , array(
'http://some.url/'))),
108 'SCRIPT_NAME' =>
'/index.php',
110 self::assertEquals(
'http://baseurl1/', $this->request->getBaseUrl());
115 array(
'Request::getServerHost' , array(
false,
false,
true)),
116 array(
'Request::getBaseUrl' , array(
'http://baseurl1/'))
124 self::assertEquals(
'http://baseurl1/', $this->request->getBaseUrl());
137 'SERVER_NAME' =>
'hostname',
138 'SCRIPT_NAME' =>
'/some/base/path'
140 self::assertEquals(
'http://hostname/some/base/path', $this->request->getBaseUrl());
148 'SCRIPT_NAME' =>
'/some/base/path'
150 self::assertEquals(
'/some/base/path', $this->request->getBasePath());
154 array(array(
'Request::getBasePath' , array(
'/some/base/path'))),
161 self::assertEquals(
'/some/base/path', $this->request->getBasePath());
173 'SCRIPT_NAME' =>
'/main'
175 self::assertEquals(
'/main', $this->request->getBasePath());
183 'SCRIPT_NAME' =>
'some/script/name'
187 self::assertEquals(
'some/script/name', $this->request->getRequestPath());
191 array(array(
'Request::getRequestPath' , array(
'some/script/name'))),
198 self::assertEquals(
'some/script/name', $this->request->getRequestPath());
210 'SCRIPT_NAME' =>
'some/script/name'
214 self::assertEquals(
'some/script/name', $this->request->getRequestPath());
223 'SCRIPT_NAME' =>
'some/script/name',
224 'PATH_INFO' =>
'/extra/path'
228 self::assertEquals(
'some/script/name/extra/path', $this->request->getRequestPath());
236 'SCRIPT_NAME' =>
'some/script/name',
237 'PATH_INFO' =>
'/extra/path'
241 self::assertEquals(
'some/script/name', $this->request->getRequestPath());
250 'SCRIPT_NAME' =>
'/index.php',
252 self::assertEquals(
'localhost', $this->request->getServerHost());
262 'SERVER_NAME' =>
'hostname',
265 self::assertEquals(
'hostname', $this->request->getServerHost());
275 'SERVER_NAME' =>
'hostname',
276 'SCRIPT_NAME' =>
'/index.php',
278 self::assertEquals(
'hostname', $this->request->getServerHost());
288 'SERVER_NAME' =>
'hostname',
289 'HTTP_HOST' =>
'http_host',
290 'SCRIPT_NAME' =>
'/index.php',
292 self::assertEquals(
'http_host', $this->request->getServerHost());
302 'SERVER_NAME' =>
'hostname',
303 'HTTP_HOST' =>
'http_host',
304 'HTTP_X_FORWARDED_HOST' =>
'x_host',
305 'SCRIPT_NAME' =>
'/index.php',
307 self::assertEquals(
'x_host', $this->request->getServerHost());
315 self::assertEquals(
'http', $this->request->getProtocol());
318 array(array(
'Request::getProtocol' , array(
'http'))),
325 self::assertEquals(
'http', $this->request->getProtocol());
338 'SCRIPT_NAME' =>
'/index.php',
340 self::assertEquals(
'http', $this->request->getProtocol());
349 'SCRIPT_NAME' =>
'/index.php',
351 self::assertEquals(
'https', $this->request->getProtocol());
358 list($forwardedIp, $remoteIp) = $this->getRemoteAddrTestPrepare(
359 array(
'trust_x_forwarded_for' =>
true)
361 self::assertEquals($forwardedIp, $this->request->getRemoteAddr());
368 list($forwardedIp, $remoteIp) = $this->getRemoteAddrTestPrepare(
369 array(
'trust_x_forwarded_for' =>
false)
371 self::assertEquals($remoteIp, $this->request->getRemoteAddr());
378 list($forwardedIp, $remoteIp) = $this->getRemoteAddrTestPrepare(array());
379 self::assertEquals($forwardedIp, $this->request->getRemoteAddr());
390 private function getRemoteAddrTestPrepare($generalConfigData = array()) {
394 $_SERVER[
'HTTP_X_FORWARDED_FOR'] =
'1.1.1.1';
395 $_SERVER[
'REMOTE_ADDR'] =
'2.2.2.2';
398 $configData[
'general'] = $generalConfigData;
400 return array($_SERVER[
'HTTP_X_FORWARDED_FOR'], $_SERVER[
'REMOTE_ADDR']);
408 'par1' =>
'\'val1\
'',
415 self::assertEquals(
"'val1'", $this->request->getUserVar(
'par1'));
416 self::assertEquals(
'val2', $this->request->getUserVar(
'par2'));
417 self::assertEquals(
'val3', $this->request->getUserVar(
'par3'));
418 self::assertEquals(
'val4', $this->request->getUserVar(
'par4'));
426 'par1' =>
'\'val1\
'',
433 $expectedResult = array(
439 self::assertEquals($expectedResult, $this->request->getUserVars());