17 require_mock_env(
'env1');
19 import(
'lib.pkp.classes.core.PKPComponentRouter');
20 import(
'lib.pkp.tests.classes.core.PKPRouterTestCase');
26 protected function setUp() : void {
34 $this->markTestSkipped();
48 'SCRIPT_NAME' =>
'/index.php',
49 'PATH_INFO' =>
'/context1/context2/$$$call$$$/grid/notifications/task-notifications-grid/fetch-grid'
51 self::assertTrue($this->router->supports($this->request));
65 'SCRIPT_NAME' =>
'/index.php',
66 'PATH_INFO' =>
'/context1/context2/page/operation'
68 self::assertEquals(
'', $this->router->getRequestedComponent($this->request));
69 self::assertFalse($this->router->supports($this->request));
83 'SCRIPT_NAME' =>
'/index.php',
84 'PATH_INFO' =>
'/context1/context2/path/to/handler/operation'
86 self::assertEquals(
'', $this->router->getRequestedComponent($this->request));
87 self::assertFalse($this->router->supports($this->request));
98 $this->markTestSkipped();
102 'SCRIPT_NAME' =>
'/index.php',
103 'PATH_INFO' =>
'/context1/context2/$$$call$$$/inexistent/component/fetch-grid'
105 self::assertEquals(
'inexistent.ComponentHandler', $this->router->getRequestedComponent($this->request));
106 self::assertFalse($this->router->supports($this->request));
119 'SCRIPT_NAME' =>
'/index.php',
120 'PATH_INFO' =>
'/context1/context2/$$$call$$$/path/to/some-component/operation'
122 self::assertEquals(
'path.to.SomeComponentHandler', $this->router->getRequestedComponent($this->request));
135 'SCRIPT_NAME' =>
'/index.php',
136 'PATH_INFO' =>
'/context1/context2/$$$call$$$/path/to/some-#component/operation'
138 self::assertEquals(
'', $this->router->getRequestedComponent($this->request));
151 'component' =>
'path.to.some-component',
154 self::assertEquals(
'path.to.SomeComponentHandler', $this->router->getRequestedComponent($this->request));
167 'SCRIPT_NAME' =>
'/index.php',
168 'PATH_INFO' =>
'/context1/context2/$$$call$$$/path/to/some-component/some-op'
170 self::assertEquals(
'someOp', $this->router->getRequestedOp($this->request));
183 'component' =>
'path.to.some-component',
186 self::assertEquals(
'someOp', $this->router->getRequestedOp($this->request));
201 self::assertEquals(
'', $this->router->getRequestedOp($this->request));
214 'SCRIPT_NAME' =>
'/index.php',
215 'PATH_INFO' =>
'/context1/context2/$$$call$$$/path/to/some-component/so#me-op'
217 self::assertEquals(
'', $this->router->getRequestedOp($this->request));
233 'SCRIPT_NAME' =>
'/index.php',
234 'PATH_INFO' =>
'/context1/context2/$$$call$$$/grid/notifications/task-notifications-grid/fetch-grid'
246 $this->router->route($this->request);
248 self::assertNotNull($serviceEndpoint =& $this->router->getRpcServiceEndpoint($this->request));
249 self::assertInstanceOf(
'NotificationsGridHandler', $handler =& $serviceEndpoint[0]);
251 self::assertInstanceOf(
'Context', $firstContextDao->getByPath(
'context1'));
253 self::assertInstanceOf(
'Context', $secondContextDao->getByPath(
'context2'));
267 'SERVER_NAME' =>
'mydomain.org',
268 'SCRIPT_NAME' =>
'/index.php',
269 'PATH_INFO' =>
'/current-context1/current-context2/$$$call$$$/current/component-class/current-op'
275 $result = $this->router->url($this->request);
276 self::assertEquals(
'http://mydomain.org/index.php/current-context1/current-context2/$$$call$$$/current/component-class/current-op', $result);
278 $result = $this->router->url($this->request,
'new-context1');
279 self::assertEquals(
'http://mydomain.org/index.php/new-context1/current-context2/$$$call$$$/current/component-class/current-op', $result);
281 $result = $this->router->url($this->request, array(
'new-context1',
'new?context2'));
282 self::assertEquals(
'http://mydomain.org/index.php/new-context1/new%3Fcontext2/$$$call$$$/current/component-class/current-op', $result);
284 $result = $this->router->url($this->request, array(),
'new.NewComponentHandler');
285 self::assertEquals(
'http://mydomain.org/index.php/current-context1/current-context2/$$$call$$$/new/new-component/current-op', $result);
287 $result = $this->router->url($this->request, array(),
null,
'newOp');
288 self::assertEquals(
'http://mydomain.org/index.php/current-context1/current-context2/$$$call$$$/current/component-class/new-op', $result);
290 $result = $this->router->url($this->request,
'new-context1',
'new.NewComponentHandler');
291 self::assertEquals(
'http://mydomain.org/index.php/new-context1/current-context2/$$$call$$$/new/new-component/current-op', $result);
293 $result = $this->router->url($this->request,
'new-context1',
'new.NewComponentHandler',
'newOp');
294 self::assertEquals(
'http://mydomain.org/index.php/new-context1/current-context2/$$$call$$$/new/new-component/new-op', $result);
296 $result = $this->router->url($this->request,
'new-context1',
null,
'newOp');
297 self::assertEquals(
'http://mydomain.org/index.php/new-context1/current-context2/$$$call$$$/current/component-class/new-op', $result);
299 $result = $this->router->url($this->request, array(
'firstContext' =>
null,
'secondContext' =>
null),
null,
'newOp');
300 self::assertEquals(
'http://mydomain.org/index.php/current-context1/current-context2/$$$call$$$/current/component-class/new-op', $result);
304 'key2' => array(
'val2-1',
'val2?2')
306 $result = $this->router->url($this->request,
'new-context1',
null,
null,
null, $params,
null,
true);
307 self::assertEquals(
'http://mydomain.org/index.php/new-context1/current-context2/$$$call$$$/current/component-class/current-op?key1=val1%3F&key2%5B%5D=val2-1&key2%5B%5D=val2%3F2', $result);
309 $result = $this->router->url($this->request,
'new-context1',
null,
null,
null, $params,
null,
false);
310 self::assertEquals(
'http://mydomain.org/index.php/new-context1/current-context2/$$$call$$$/current/component-class/current-op?key1=val1%3F&key2[]=val2-1&key2[]=val2%3F2', $result);
312 $result = $this->router->url($this->request,
'new-context1',
null,
null,
null,
null,
'some?anchor');
313 self::assertEquals(
'http://mydomain.org/index.php/new-context1/current-context2/$$$call$$$/current/component-class/current-op#some%3Fanchor', $result);
315 $result = $this->router->url($this->request,
'new-context1',
null,
'newOp',
null, array(
'key' =>
'val'),
'some-anchor');
316 self::assertEquals(
'http://mydomain.org/index.php/new-context1/current-context2/$$$call$$$/current/component-class/new-op?key=val#some-anchor', $result);
318 $result = $this->router->url($this->request,
'new-context1',
null,
null,
null, array(
'key1' =>
'val1',
'key2' =>
'val2'),
null,
true);
319 self::assertEquals(
'http://mydomain.org/index.php/new-context1/current-context2/$$$call$$$/current/component-class/current-op?key1=val1&key2=val2', $result);
333 'SERVER_NAME' =>
'mydomain.org',
334 'SCRIPT_NAME' =>
'/index.php',
335 'PATH_INFO' =>
'/overridden-context/current-context2/$$$call$$$/current/component-class/current-op'
341 $result = $this->router->url($this->request);
342 self::assertEquals(
'http://some-domain/xyz-context/current-context2/$$$call$$$/current/component-class/current-op', $result);
355 'SERVER_NAME' =>
'mydomain.org',
356 'SCRIPT_NAME' =>
'/index.php',
357 'PATH_INFO' =>
'/current-context1/current-context2/$$$call$$$/current/component-class/current-op'
361 $this->
_setUpMockDAOs(
'current-context1',
'current-context2',
false,
true);
363 $result = $this->router->url($this->request);
364 self::assertEquals(
'http://mydomain.org/index.php/current-context1/index/$$$call$$$/current/component-class/current-op', $result);
377 'SERVER_NAME' =>
'mydomain.org',
378 'SCRIPT_NAME' =>
'/index.php',
381 'firstContext' =>
'current-context1',
382 'secondContext' =>
'current-context2',
383 'component' =>
'current.component-class',
390 $result = $this->router->url($this->request);
391 self::assertEquals(
'http://mydomain.org/index.php?firstContext=current-context1&secondContext=current-context2&component=current.component-class&op=current-op', $result);
393 $result = $this->router->url($this->request,
'new-context1');
394 self::assertEquals(
'http://mydomain.org/index.php?firstContext=new-context1&secondContext=current-context2&component=current.component-class&op=current-op', $result);
396 $result = $this->router->url($this->request, array(
'new-context1',
'new-context2'));
397 self::assertEquals(
'http://mydomain.org/index.php?firstContext=new-context1&secondContext=new-context2&component=current.component-class&op=current-op', $result);
399 $result = $this->router->url($this->request, array(),
'new.NewComponentHandler');
400 self::assertEquals(
'http://mydomain.org/index.php?firstContext=current-context1&secondContext=current-context2&component=new.new-component&op=current-op', $result);
402 $result = $this->router->url($this->request, array(),
null,
'newOp');
403 self::assertEquals(
'http://mydomain.org/index.php?firstContext=current-context1&secondContext=current-context2&component=current.component-class&op=new-op', $result);
405 $result = $this->router->url($this->request,
'new-context1',
'new.NewComponentHandler');
406 self::assertEquals(
'http://mydomain.org/index.php?firstContext=new-context1&secondContext=current-context2&component=new.new-component&op=current-op', $result);
408 $result = $this->router->url($this->request,
'new-context1',
'new.NewComponentHandler',
'newOp');
409 self::assertEquals(
'http://mydomain.org/index.php?firstContext=new-context1&secondContext=current-context2&component=new.new-component&op=new-op', $result);
411 $result = $this->router->url($this->request,
'new-context1',
null,
'newOp');
412 self::assertEquals(
'http://mydomain.org/index.php?firstContext=new-context1&secondContext=current-context2&component=current.component-class&op=new-op', $result);
416 'key2' => array(
'val2-1',
'val2?2')
418 $result = $this->router->url($this->request,
'new-context1',
null,
null,
null, $params,
null,
true);
419 self::assertEquals(
'http://mydomain.org/index.php?firstContext=new-context1&secondContext=current-context2&component=current.component-class&op=current-op&key1=val1%3F&key2%5B%5D=val2-1&key2%5B%5D=val2%3F2', $result);
421 $result = $this->router->url($this->request,
'new-context1',
null,
null,
null, $params);
422 self::assertEquals(
'http://mydomain.org/index.php?firstContext=new-context1&secondContext=current-context2&component=current.component-class&op=current-op&key1=val1%3F&key2[]=val2-1&key2[]=val2%3F2', $result);
424 $result = $this->router->url($this->request,
'new-context1',
null,
null,
null,
null,
'some?anchor');
425 self::assertEquals(
'http://mydomain.org/index.php?firstContext=new-context1&secondContext=current-context2&component=current.component-class&op=current-op#some%3Fanchor', $result);
427 $result = $this->router->url($this->request,
'new-context1',
null,
'newOp',
null, array(
'key' =>
'val'),
'some-anchor');
428 self::assertEquals(
'http://mydomain.org/index.php?firstContext=new-context1&secondContext=current-context2&component=current.component-class&op=new-op&key=val#some-anchor', $result);
430 $result = $this->router->url($this->request,
'new-context1',
null,
null,
null, array(
'key1' =>
'val1',
'key2' =>
'val2'),
null,
true);
431 self::assertEquals(
'http://mydomain.org/index.php?firstContext=new-context1&secondContext=current-context2&component=current.component-class&op=current-op&key1=val1&key2=val2', $result);
445 'SERVER_NAME' =>
'mydomain.org',
446 'SCRIPT_NAME' =>
'/index.php',
449 'firstContext' =>
'overridden-context',
450 'secondContext' =>
'current-context2',
451 'component' =>
'current.component-class',
460 $result = $this->router->url($this->request);
461 self::assertEquals(
'http://some-user:some-pass@some-domain:8080/?firstContext=xyz-context&secondContext=current-context2&component=current.component-class&op=current-op', $result);
475 'SERVER_NAME' =>
'mydomain.org',
476 'SCRIPT_NAME' =>
'/index.php',
479 'firstContext' =>
'current-context1',
480 'secondContext' =>
'current-context2',
481 'component' =>
'current.component-class',
486 $this->
_setUpMockDAOs(
'current-context1',
'current-context2',
false,
true);
489 $result = $this->router->url($this->request);
490 self::assertEquals(
'http://mydomain.org/?firstContext=current-context1&secondContext=index&component=current.component-class&op=current-op', $result);