1<?php
2
3namespace Drupal\Tests\media\Unit;
4
5use Drupal\Core\PrivateKey;
6use Drupal\Core\Routing\RequestContext;
7use Drupal\media\IFrameUrlHelper;
8use Drupal\Tests\UnitTestCase;
9
10/**
11 * @coversDefaultClass \Drupal\media\IFrameUrlHelper
12 *
13 * @group media
14 */
15class IFrameUrlHelperTest extends UnitTestCase {
16
17  /**
18   * Data provider for testIsSecure().
19   *
20   * @see ::testIsSecure()
21   *
22   * @return array
23   */
24  public function providerIsSecure() {
25    return [
26      'no domain' => [
27        '/path/to/media.php',
28        'http://www.example.com/',
29        FALSE,
30      ],
31      'no base URL domain' => [
32        'http://www.example.com/media.php',
33        '/invalid/base/url',
34        FALSE,
35      ],
36      'same domain' => [
37        'http://www.example.com/media.php',
38        'http://www.example.com/',
39        FALSE,
40      ],
41      'different domain' => [
42        'http://www.example.com/media.php',
43        'http://www.example-assets.com/',
44        TRUE,
45      ],
46      'same subdomain' => [
47        'http://foo.example.com/media.php',
48        'http://foo.example.com/',
49        FALSE,
50      ],
51      'different subdomain' => [
52        'http://assets.example.com/media.php',
53        'http://foo.example.com/',
54        TRUE,
55      ],
56      'subdomain and top-level domain' => [
57        'http://assets.example.com/media.php',
58        'http://example.com/',
59        TRUE,
60      ],
61    ];
62  }
63
64  /**
65   * Tests that isSecure() behaves properly.
66   *
67   * @param string $url
68   *   The URL to test for security.
69   * @param string $base_url
70   *   The base URL to compare $url against.
71   * @param bool $secure
72   *   The expected result of isSecure().
73   *
74   * @covers ::isSecure
75   *
76   * @dataProvider providerIsSecure
77   */
78  public function testIsSecure($url, $base_url, $secure) {
79    $request_context = $this->prophesize(RequestContext::class);
80    $request_context->getCompleteBaseUrl()->willReturn($base_url);
81    $url_helper = new IFrameUrlHelper(
82      $request_context->reveal(),
83      $this->prophesize(PrivateKey::class)->reveal()
84    );
85
86    $this->assertSame($secure, $url_helper->isSecure($url));
87  }
88
89}
90