Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
UrlTest.php
Go to the documentation of this file.
1 <?php
8 
10 
15 class UrlTest extends \PHPUnit\Framework\TestCase
16 {
21 
26 
30  protected $scopeResolverMock;
31 
35  protected $scopeMock;
36 
41 
45  protected $sidResolverMock;
46 
50  protected $sessionMock;
51 
55  protected $scopeConfig;
56 
60  protected $urlModifier;
61 
65  private $hostChecker;
66 
67  protected function setUp()
68  {
69  $this->routeParamsResolverMock = $this->createPartialMock(
70  \Magento\Framework\Url\RouteParamsResolver::class,
71  ['getType', 'hasData', 'getData', 'getRouteParams', 'unsetData']
72  );
73 
74  $escaperMock = $this->createMock(\Magento\Framework\ZendEscaper::class);
75 
76  $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
77 
78  $objectManager->setBackwardCompatibleProperty($this->routeParamsResolverMock, 'escaper', $escaperMock);
79 
80  $this->routeParamsPreprocessorMock = $this->getMockForAbstractClass(
81  \Magento\Framework\Url\RouteParamsPreprocessorInterface::class,
82  ['unsetData'],
83  '',
84  false,
85  true,
86  true,
87  []
88  );
89 
90  $this->scopeResolverMock = $this->createMock(\Magento\Framework\Url\ScopeResolverInterface::class);
91  $this->scopeMock = $this->createMock(\Magento\Framework\Url\ScopeInterface::class);
92  $this->queryParamsResolverMock = $this->createMock(\Magento\Framework\Url\QueryParamsResolverInterface::class);
93  $this->sidResolverMock = $this->createMock(\Magento\Framework\Session\SidResolverInterface::class);
94  $this->sessionMock = $this->createMock(\Magento\Framework\Session\Generic::class);
95  $this->scopeConfig = $this->createMock(\Magento\Framework\App\Config\ScopeConfigInterface::class);
96 
97  $this->urlModifier = $this->createMock(\Magento\Framework\Url\ModifierInterface::class);
98  $this->urlModifier->expects($this->any())
99  ->method('execute')
100  ->willReturnArgument(0);
101  }
102 
107  protected function getRouteParamsResolverFactory($resolve = true)
108  {
109  $routeParamsResolverFactoryMock = $this->createMock(\Magento\Framework\Url\RouteParamsResolverFactory::class);
110  if ($resolve) {
111  $routeParamsResolverFactoryMock->expects($this->once())->method('create')
112  ->will($this->returnValue($this->routeParamsResolverMock));
113  }
114  return $routeParamsResolverFactoryMock;
115  }
116 
121  protected function getRequestMock()
122  {
123  return $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
124  ->disableOriginalConstructor()->getMock();
125  }
126 
131  protected function getUrlModel($arguments = [])
132  {
133  $arguments = array_merge($arguments, ['scopeType' => \Magento\Store\Model\ScopeInterface::SCOPE_STORE]);
134  $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
135  $model = $objectManager->getObject(\Magento\Framework\Url::class, $arguments);
136 
137  $modelProperty = (new \ReflectionClass(get_class($model)))
138  ->getProperty('urlModifier');
139 
140  $modelProperty->setAccessible(true);
141  $modelProperty->setValue($model, $this->urlModifier);
142 
143  $zendEscaper = new \Magento\Framework\ZendEscaper();
144  $escaper = new \Magento\Framework\Escaper();
145  $objectManager->setBackwardCompatibleProperty($escaper, 'escaper', $zendEscaper);
146  $objectManager->setBackwardCompatibleProperty($model, 'escaper', $escaper);
147 
148  return $model;
149  }
150 
156  public function testGetCurrentUrl($httpHost, $url)
157  {
158  $requestMock = $this->getRequestMock();
159  $requestMock->expects($this->once())->method('getRequestUri')->willReturn('/fancy_uri');
160  $requestMock->expects($this->once())->method('getScheme')->will($this->returnValue('http'));
161  $requestMock->expects($this->once())->method('getHttpHost')->will($this->returnValue($httpHost));
162  $model = $this->getUrlModel(['request' => $requestMock]);
163  $this->assertEquals($url, $model->getCurrentUrl());
164  }
165 
169  public function getCurrentUrlProvider()
170  {
171  return [
172  'without_port' => ['example.com', 'http://example.com/fancy_uri'],
173  'default_port' => ['example.com:80', 'http://example.com/fancy_uri'],
174  'custom_port' => ['example.com:8080', 'http://example.com:8080/fancy_uri']
175  ];
176  }
177 
178  public function testGetUseSession()
179  {
180  $model = $this->getUrlModel();
181 
182  $model->setUseSession(false);
183  $this->assertFalse((bool)$model->getUseSession());
184 
185  $model->setUseSession(true);
186  $this->assertTrue($model->getUseSession());
187  }
188 
189  public function testGetBaseUrlNotLinkType()
190  {
191  $model = $this->getUrlModel(
192  [
193  'scopeResolver' => $this->scopeResolverMock,
194  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory()
195  ]
196  );
197 
198  $baseUrl = 'base-url';
199  $urlType = 'not-link';
200  $this->routeParamsResolverMock->expects($this->any())->method('getType')->will($this->returnValue($urlType));
201  $this->scopeMock->expects($this->once())->method('getBaseUrl')->will($this->returnValue($baseUrl));
202  $this->scopeResolverMock->expects($this->any())
203  ->method('getScope')
204  ->will($this->returnValue($this->scopeMock));
205 
206  $baseUrlParams = ['_scope' => $this->scopeMock, '_type' => $urlType, '_secure' => true];
207  $this->assertEquals($baseUrl, $model->getBaseUrl($baseUrlParams));
208  }
209 
210  public function testGetUrlValidateFilter()
211  {
212  $model = $this->getUrlModel();
213  $this->assertEquals('http://test.com', $model->getUrl('http://test.com'));
214  }
215 
222  public function testGetUrl($query, $queryResult, $returnUri)
223  {
224  $requestMock = $this->getRequestMock();
225  $routeConfigMock = $this->createMock(\Magento\Framework\App\Route\ConfigInterface::class);
226  $model = $this->getUrlModel(
227  [
228  'scopeResolver' => $this->scopeResolverMock,
229  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
230  'queryParamsResolver' => $this->queryParamsResolverMock,
231  'request' => $requestMock,
232  'routeConfig' => $routeConfigMock,
233  'routeParamsPreprocessor' => $this->routeParamsPreprocessorMock
234  ]
235  );
236 
237  $baseUrl = 'http://localhost/index.php/';
239 
240  $this->scopeMock->expects($this->once())->method('getBaseUrl')->will($this->returnValue($baseUrl));
241  $this->scopeResolverMock->expects($this->any())
242  ->method('getScope')
243  ->will($this->returnValue($this->scopeMock));
244  $this->routeParamsResolverMock->expects($this->any())->method('getType')->will($this->returnValue($urlType));
245  $this->routeParamsResolverMock->expects($this->any())->method('getRouteParams')
246  ->will($this->returnValue(['id' => 100]));
247 
248  $this->routeParamsPreprocessorMock->expects($this->once())
249  ->method('execute')
250  ->willReturnArgument(2);
251 
252  $requestMock->expects($this->once())->method('isDirectAccessFrontendName')->will($this->returnValue(true));
253  $routeConfigMock->expects($this->once())->method('getRouteFrontName')->will($this->returnValue('catalog'));
254  $this->queryParamsResolverMock->expects($this->once())->method('getQuery')
255  ->will($this->returnValue($queryResult));
256 
257  $url = $model->getUrl('catalog/product/view', [
258  '_scope' => $this->getMockForAbstractClass(\Magento\Store\Api\Data\StoreInterface::class),
259  '_fragment' => 'anchor',
260  '_escape' => 1,
261  '_query' => $query,
262  '_nosid' => 0,
263  'id' => 100
264  ]);
265  $this->assertEquals($returnUri, $url);
266  }
267 
269  {
270  $model = $this->getUrlModel([
271  'scopeResolver' => $this->scopeResolverMock,
272  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
273  ]);
274  $model->setData('route_path', 'catalog/product/view');
275 
276  $this->scopeResolverMock->expects($this->any())
277  ->method('getScope')
278  ->will($this->returnValue($this->scopeMock));
279 
280  $this->urlModifier->expects($this->exactly(1))->method('execute');
281 
282  $this->assertEquals('catalog/product/view', $model->getUrl('catalog/product/view'));
283  }
284 
286  {
287  $model = $this->getUrlModel([
288  'scopeResolver' => $this->scopeResolverMock,
289  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
290  'request' => $this->getRequestMock()
291  ]);
292  $model->setData('route_name', 'catalog');
293 
294  $this->scopeResolverMock->expects($this->any())
295  ->method('getScope')
296  ->will($this->returnValue($this->scopeMock));
297 
298  $this->assertEquals('/product/view/', $model->getUrl('catalog/product/view'));
299  }
300 
301  public function testGetUrlRouteHasParams()
302  {
303  $this->routeParamsResolverMock->expects($this->any())->method('getRouteParams')
304  ->will($this->returnValue(['foo' => 'bar', 'true' => false]));
305  $model = $this->getUrlModel([
306  'scopeResolver' => $this->scopeResolverMock,
307  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
308  'request' => $this->getRequestMock()
309  ]);
310 
311  $this->scopeResolverMock->expects($this->any())
312  ->method('getScope')
313  ->will($this->returnValue($this->scopeMock));
314 
315  $this->assertEquals('/index/index/foo/bar/', $model->getUrl('catalog'));
316  }
317 
318  public function testGetUrlRouteUseRewrite()
319  {
320  $this->routeParamsResolverMock->expects($this->any())->method('getRouteParams')
321  ->will($this->returnValue(['foo' => 'bar']));
322 
323  $this->routeParamsPreprocessorMock->expects($this->once())
324  ->method('execute')
325  ->willReturnArgument(2);
326 
327  $request = $this->getRequestMock();
328  $request->expects($this->once())->method('getAlias')->will($this->returnValue('/catalog/product/view/'));
329  $model = $this->getUrlModel([
330  'scopeResolver' => $this->scopeResolverMock,
331  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
332  'request' => $request,
333  'routeParamsPreprocessor' => $this->routeParamsPreprocessorMock
334  ]);
335 
336  $this->scopeResolverMock->expects($this->any())
337  ->method('getScope')
338  ->will($this->returnValue($this->scopeMock));
339 
340  $this->assertEquals('/catalog/product/view/', $model->getUrl('catalog', ['_use_rewrite' => 1]));
341  }
342 
346  public function getUrlDataProvider()
347  {
348  return [
349  'string query' => [
350  'foo=bar',
351  'foo=bar',
352  'http://localhost/index.php/catalog/product/view/id/100/?foo=bar#anchor',
353  ],
354  'array query' => [
355  ['foo' => 'bar'],
356  'foo=bar',
357  'http://localhost/index.php/catalog/product/view/id/100/?foo=bar#anchor',
358  ],
359  'without query' => [
360  false,
361  '',
362  'http://localhost/index.php/catalog/product/view/id/100/#anchor'
363  ],
364  ];
365  }
366 
367  public function testGetUrlWithAsterisksPath()
368  {
369  $requestMock = $this->getRequestMock();
370  $routeConfigMock = $this->createMock(\Magento\Framework\App\Route\ConfigInterface::class);
371  $model = $this->getUrlModel(
372  [
373  'scopeResolver' => $this->scopeResolverMock,
374  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
375  'queryParamsResolver' => $this->queryParamsResolverMock,
376  'request' => $requestMock, 'routeConfig' => $routeConfigMock,
377  ]
378  );
379 
380  $baseUrl = 'http://localhost/index.php/';
382 
383  $this->scopeMock->expects($this->once())->method('getBaseUrl')->will($this->returnValue($baseUrl));
384  $this->scopeResolverMock->expects($this->any())
385  ->method('getScope')
386  ->will($this->returnValue($this->scopeMock));
387  $this->routeParamsResolverMock->expects($this->any())->method('getType')->will($this->returnValue($urlType));
388  $this->routeParamsResolverMock->expects($this->any())->method('getRouteParams')
389  ->will($this->returnValue(['key' => 'value']));
390  $requestMock->expects($this->once())->method('isDirectAccessFrontendName')->will($this->returnValue(true));
391 
392  $requestMock->expects($this->once())->method('getRouteName')->will($this->returnValue('catalog'));
393  $requestMock->expects($this->once())
394  ->method('getControllerName')
395  ->will($this->returnValue('product'));
396  $requestMock->expects($this->once())->method('getActionName')->will($this->returnValue('view'));
397  $routeConfigMock->expects($this->once())->method('getRouteFrontName')->will($this->returnValue('catalog'));
398 
399  $url = $model->getUrl('*/*/*/key/value');
400  $this->assertEquals('http://localhost/index.php/catalog/product/view/key/value/', $url);
401  }
402 
403  public function testGetDirectUrl()
404  {
405  $requestMock = $this->getRequestMock();
406  $routeConfigMock = $this->createMock(\Magento\Framework\App\Route\ConfigInterface::class);
407  $model = $this->getUrlModel(
408  [
409  'scopeResolver' => $this->scopeResolverMock,
410  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
411  'queryParamsResolver' => $this->queryParamsResolverMock,
412  'request' => $requestMock,
413  'routeConfig' => $routeConfigMock,
414  'routeParamsPreprocessor' => $this->routeParamsPreprocessorMock
415  ]
416  );
417 
418  $baseUrl = 'http://localhost/index.php/';
420 
421  $this->scopeMock->expects($this->once())->method('getBaseUrl')->will($this->returnValue($baseUrl));
422  $this->scopeResolverMock->expects($this->any())
423  ->method('getScope')
424  ->will($this->returnValue($this->scopeMock));
425  $this->routeParamsResolverMock->expects($this->any())->method('getType')->will($this->returnValue($urlType));
426 
427  $this->routeParamsPreprocessorMock->expects($this->once())
428  ->method('execute')
429  ->willReturnArgument(2);
430 
431  $requestMock->expects($this->once())->method('isDirectAccessFrontendName')->will($this->returnValue(true));
432 
433  $url = $model->getDirectUrl('direct-url');
434  $this->assertEquals('http://localhost/index.php/direct-url', $url);
435  }
436 
441  public function testGetRebuiltUrl($inputUrl, $outputUrl)
442  {
443  $requestMock = $this->getRequestMock();
444  $model = $this->getUrlModel([
445  'session' => $this->sessionMock,
446  'request' => $requestMock,
447  'sidResolver' => $this->sidResolverMock,
448  'scopeResolver' => $this->scopeResolverMock,
449  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(false),
450  'queryParamsResolver' => $this->queryParamsResolverMock,
451  ]);
452 
453  $this->queryParamsResolverMock->expects($this->once())->method('getQuery')
454  ->will($this->returnValue('query=123'));
455 
456  $this->assertEquals($outputUrl, $model->getRebuiltUrl($inputUrl));
457  }
458 
459  public function testGetRedirectUrl()
460  {
461  $model = $this->getUrlModel(
462  [
463  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
464  'session' => $this->sessionMock,
465  'sidResolver' => $this->sidResolverMock,
466  'queryParamsResolver' => $this->queryParamsResolverMock,
467  ]
468  );
469 
470  $this->sidResolverMock->expects($this->once())->method('getUseSessionInUrl')->will($this->returnValue(true));
471  $this->sessionMock->expects($this->once())->method('getSessionIdForHost')->will($this->returnValue(false));
472  $this->sidResolverMock->expects($this->once())->method('getUseSessionVar')->will($this->returnValue(true));
473  $this->routeParamsResolverMock->expects($this->once())->method('hasData')->with('secure_is_forced')
474  ->will($this->returnValue(true));
475  $this->sidResolverMock->expects($this->never())->method('getSessionIdQueryParam');
476  $this->queryParamsResolverMock->expects($this->once())
477  ->method('getQuery')
478  ->will($this->returnValue('foo=bar'));
479 
480  $this->assertEquals('http://example.com/?foo=bar', $model->getRedirectUrl('http://example.com/'));
481  }
482 
484  {
485  $model = $this->getUrlModel(
486  [
487  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(false),
488  'session' => $this->sessionMock,
489  'sidResolver' => $this->sidResolverMock,
490  'queryParamsResolver' => $this->queryParamsResolverMock,
491  ]
492  );
493 
494  $this->sidResolverMock->expects($this->once())->method('getUseSessionInUrl')->will($this->returnValue(true));
495  $this->sessionMock->expects($this->once())->method('getSessionIdForHost')
496  ->will($this->returnValue('session-id'));
497  $this->sidResolverMock->expects($this->once())->method('getUseSessionVar')->will($this->returnValue(false));
498  $this->sidResolverMock->expects($this->once())->method('getSessionIdQueryParam');
499  $this->queryParamsResolverMock->expects($this->once())
500  ->method('getQuery')
501  ->will($this->returnValue('foo=bar'));
502 
503  $this->assertEquals('http://example.com/?foo=bar', $model->getRedirectUrl('http://example.com/'));
504  }
505 
509  public function getRebuiltUrlDataProvider()
510  {
511  return [
512  'with port' => [
513  'https://example.com:88/index.php/catalog/index/view?query=123#hash',
514  'https://example.com:88/index.php/catalog/index/view?query=123#hash'
515  ],
516  'without port' => [
517  'https://example.com/index.php/catalog/index/view?query=123#hash',
518  'https://example.com/index.php/catalog/index/view?query=123#hash'
519  ],
520  'http' => [
521  'http://example.com/index.php/catalog/index/view?query=123#hash',
522  'http://example.com/index.php/catalog/index/view?query=123#hash'
523  ]
524  ];
525  }
526 
527  public function testGetRouteUrlWithValidUrl()
528  {
529  $model = $this->getUrlModel(['routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(false)]);
530 
531  $this->routeParamsResolverMock->expects($this->never())->method('unsetData');
532  $this->assertEquals('http://example.com', $model->getRouteUrl('http://example.com'));
533  }
534 
535  public function testAddSessionParam()
536  {
537  $model = $this->getUrlModel([
538  'session' => $this->sessionMock,
539  'sidResolver' => $this->sidResolverMock,
540  'queryParamsResolver' => $this->queryParamsResolverMock,
541  ]);
542 
543  $this->sidResolverMock->expects($this->once())->method('getSessionIdQueryParam')->with($this->sessionMock)
544  ->will($this->returnValue('sid'));
545  $this->sessionMock->expects($this->once())->method('getSessionId')->will($this->returnValue('session-id'));
546  $this->queryParamsResolverMock->expects($this->once())->method('setQueryParam')->with('sid', 'session-id');
547 
548  $model->addSessionParam();
549  }
550 
556  public function testIsOwnOriginUrl($result, $referrer)
557  {
558  $requestMock = $this->getRequestMock();
559  $this->hostChecker = $this->getMockBuilder(HostChecker::class)
560  ->disableOriginalConstructor()->getMock();
561  $this->hostChecker->expects($this->once())->method('isOwnOrigin')->with($referrer)->willReturn($result);
562  $model = $this->getUrlModel(['hostChecker' => $this->hostChecker, 'request' => $requestMock]);
563 
564  $requestMock->expects($this->once())->method('getServer')->with('HTTP_REFERER')
565  ->will($this->returnValue($referrer));
566 
567  $this->assertEquals($result, $model->isOwnOriginUrl());
568  }
569 
573  public function isOwnOriginUrlDataProvider()
574  {
575  return [
576  'is origin url' => [true, 'http://localhost/'],
577  'is not origin url' => [false, 'http://example.com/'],
578  ];
579  }
580 
589  public function testGetConfigData($urlType, $configPath, $isSecure, $isSecureCallCount, $key)
590  {
591  $urlSecurityInfoMock = $this->createMock(\Magento\Framework\Url\SecurityInfoInterface::class);
592  $model = $this->getUrlModel([
593  'urlSecurityInfo' => $urlSecurityInfoMock,
594  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
595  'scopeResolver' => $this->scopeResolverMock,
596  'scopeConfig' => $this->scopeConfig,
597  ]);
598 
599  $this->scopeConfig->expects($this->any())
600  ->method('getValue')
601  ->with($this->equalTo($configPath), \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $this->scopeMock)
602  ->will($this->returnValue('http://localhost/'));
603  $this->routeParamsResolverMock->expects($this->at(0))->method('hasData')->with('secure_is_forced')
604  ->will($this->returnValue(false));
605  $this->scopeResolverMock->expects($this->any())
606  ->method('getScope')
607  ->will($this->returnValue($this->scopeMock));
608  $this->scopeMock->expects($this->once())->method('isUrlSecure')->will($this->returnValue(true));
609  $this->routeParamsResolverMock->expects($this->at(1))->method('hasData')->with('secure')
610  ->will($this->returnValue(false));
611  $this->routeParamsResolverMock->expects($this->any())->method('getType')
612  ->will($this->returnValue($urlType));
613  $this->routeParamsResolverMock->expects($this->once())
614  ->method('getData')
615  ->will($this->returnValue($isSecure));
616  $urlSecurityInfoMock->expects($this->exactly($isSecureCallCount))->method('isSecure')
617  ->will($this->returnValue(false));
618 
619  $this->assertEquals('http://localhost/', $model->getConfigData($key));
620  }
621 
625  public function getConfigDataDataProvider()
626  {
627  return [
628  'secure url' => ['some-type', 'web/secure/base_url_secure', true, 0, 'base_url_secure'],
629  'unsecure url' => [
631  'web/unsecure/base_url_unsecure',
632  false,
633  1,
634  'base_url_unsecure',
635  ],
636  ];
637  }
638 
640  {
641  $model = $this->getUrlModel([
642  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
643  'scopeResolver' => $this->scopeResolverMock,
644  'scopeConfig' => $this->scopeConfig,
645  ]);
646 
647  $this->scopeConfig->expects($this->any())
648  ->method('getValue')
649  ->with(
650  'web/secure/base_url_secure_forced',
651  \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
652  $this->scopeMock
653  )
654  ->will($this->returnValue('http://localhost/'));
655  $this->routeParamsResolverMock->expects($this->once())->method('hasData')->with('secure_is_forced')
656  ->will($this->returnValue(true));
657  $this->routeParamsResolverMock->expects($this->once())->method('getData')->with('secure')
658  ->will($this->returnValue(true));
659 
660  $this->scopeResolverMock->expects($this->any())
661  ->method('getScope')
662  ->will($this->returnValue($this->scopeMock));
663  $this->assertEquals('http://localhost/', $model->getConfigData('base_url_secure_forced'));
664  }
665 
672  {
673  $requestMock = $this->getRequestMock();
674  $model = $this->getUrlModel(
675  [
676  'session' => $this->sessionMock,
677  'request' => $requestMock,
678  'sidResolver' => $this->sidResolverMock,
679  'scopeResolver' => $this->scopeResolverMock,
680  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
681  ]
682  );
683 
684  $requestMock->expects($this->once())
685  ->method('getHttpHost')
686  ->will($this->returnValue('localhost'));
687  $this->scopeMock->expects($this->once())
688  ->method('getBaseUrl')
689  ->will($this->returnValue('http://localhost'));
690  $this->scopeResolverMock->expects($this->any())
691  ->method('getScope')
692  ->will($this->returnValue($this->scopeMock));
693  $this->sidResolverMock->expects($this->never())
694  ->method('getSessionIdQueryParam');
695 
696  $this->assertEquals($result, $model->sessionUrlVar($html));
697  }
698 
700  {
701  $requestMock = $this->getRequestMock();
702  $model = $this->getUrlModel(
703  [
704  'session' => $this->sessionMock,
705  'request' => $requestMock,
706  'sidResolver' => $this->sidResolverMock,
707  'scopeResolver' => $this->scopeResolverMock,
708  'routeParamsResolverFactory' => $this->getRouteParamsResolverFactory(),
709  ]
710  );
711 
712  $requestMock->expects($this->once())->method('getHttpHost')->will($this->returnValue('localhost'));
713  $this->scopeMock->expects($this->once())
714  ->method('getBaseUrl')
715  ->will($this->returnValue('http://example.com'));
716  $this->scopeResolverMock->expects($this->any())
717  ->method('getScope')
718  ->will($this->returnValue($this->scopeMock));
719  $this->sidResolverMock->expects($this->once())->method('getSessionIdQueryParam')
720  ->will($this->returnValue('SID'));
721  $this->sessionMock->expects($this->once())->method('getSessionId')
722  ->will($this->returnValue('session-id'));
723 
724  $this->assertEquals(
725  '<a href="http://example.com/?SID=session-id">www.example.com</a>',
726  $model->sessionUrlVar('<a href="http://example.com/?___SID=U">www.example.com</a>')
727  );
728  }
729 
734  {
735  return [
736  [
737  '<a href="http://example.com/?___SID=U?SID=session-id">www.example.com</a>',
738  '<a href="http://example.com/?SID=session-id">www.example.com</a>',
739  ],
740  [
741  '<a href="http://example.com/?___SID=U&SID=session-id">www.example.com</a>',
742  '<a href="http://example.com/?SID=session-id">www.example.com</a>',
743  ],
744  [
745  '<a href="http://example.com/?foo=bar&___SID=U?SID=session-id">www.example.com</a>',
746  '<a href="http://example.com/?foo=bar?SID=session-id">www.example.com</a>',
747  ],
748  [
749  '<a href="http://example.com/?foo=bar&___SID=U&SID=session-id">www.example.com</a>',
750  '<a href="http://example.com/?foo=bar&SID=session-id">www.example.com</a>',
751  ],
752  ];
753  }
754 
755  public function testSetRequest()
756  {
757  $initRequestMock = $this->getRequestMock();
758  $requestMock = $this->getRequestMock();
759  $initRequestMock->expects($this->any())->method('getScheme')->will($this->returnValue('fake'));
760  $initRequestMock->expects($this->any())->method('getHttpHost')->will($this->returnValue('fake-host'));
761  $requestMock->expects($this->any())->method('getScheme')->will($this->returnValue('http'));
762  $requestMock->expects($this->any())->method('getHttpHost')->will($this->returnValue('example.com'));
763 
764  $model = $this->getUrlModel(['request' => $initRequestMock]);
765  $model->setRequest($requestMock);
766  $this->assertEquals('http://example.com', $model->getCurrentUrl());
767  }
768 }
getRouteParamsResolverFactory($resolve=true)
Definition: UrlTest.php:107
$objectManager
Definition: bootstrap.php:17
testGetConfigData($urlType, $configPath, $isSecure, $isSecureCallCount, $key)
Definition: UrlTest.php:589
testSessionUrlVarWithMatchedHostsAndBaseUrl($html, $result)
Definition: UrlTest.php:671
testIsOwnOriginUrl($result, $referrer)
Definition: UrlTest.php:556
testGetRebuiltUrl($inputUrl, $outputUrl)
Definition: UrlTest.php:441
testGetUrl($query, $queryResult, $returnUri)
Definition: UrlTest.php:222
$arguments
testGetCurrentUrl($httpHost, $url)
Definition: UrlTest.php:156