‪TYPO3CMS  11.5
VimeoRendererTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\MockObject\MockObject;
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
26 
30 class ‪VimeoRendererTest extends UnitTestCase
31 {
35  protected ‪$subject;
36 
40  protected function ‪setUp(): void
41  {
42  parent::setUp();
43 
44  $vimeoHelper = $this->getAccessibleMock(VimeoHelper::class, ['getOnlineMediaId'], ['vimeo']);
45  $vimeoHelper->method('getOnlineMediaId')->willReturn('7331');
46 
47  $this->subject = $this->getAccessibleMock(VimeoRenderer::class, ['getOnlineMediaHelper'], []);
48  $this->subject->method('getOnlineMediaHelper')->willReturn($vimeoHelper);
49  }
50 
54  public function ‪getPriorityReturnsCorrectValue(): void
55  {
56  self::assertSame(1, $this->subject->getPriority());
57  }
58 
62  public function ‪canRenderReturnsTrueOnCorrectFile(): void
63  {
64  $fileResourceMock1 = $this->createMock(File::class);
65  $fileResourceMock1->method('getMimeType')->willReturn('video/vimeo');
66 
67  $fileResourceMock2 = $this->createMock(File::class);
68  $fileResourceMock2->method('getMimeType')->willReturn('video/unknown');
69  $fileResourceMock2->method('getExtension')->willReturn('vimeo');
70 
71  self::assertTrue($this->subject->canRender($fileResourceMock1));
72  self::assertTrue($this->subject->canRender($fileResourceMock2));
73  }
74 
78  public function ‪canRenderReturnsFalseOnCorrectFile(): void
79  {
80  $fileResourceMock = $this->createMock(File::class);
81  $fileResourceMock->method('getMimeType')->willReturn('video/youtube');
82 
83  self::assertFalse($this->subject->canRender($fileResourceMock));
84  }
85 
89  public function ‪renderOutputIsCorrect(): void
90  {
91  $fileResourceMock = $this->createMock(File::class);
92 
93  self::assertSame(
94  '<iframe src="https://player.vimeo.com/video/7331?dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="fullscreen"></iframe>',
95  $this->subject->render($fileResourceMock, '300m', '200')
96  );
97  }
98 
102  public function ‪renderOutputWithLoopIsCorrect(): void
103  {
104  $fileResourceMock = $this->createMock(File::class);
105 
106  self::assertSame(
107  '<iframe src="https://player.vimeo.com/video/7331?loop=1&amp;dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="fullscreen"></iframe>',
108  $this->subject->render($fileResourceMock, '300m', '200', ['loop' => 1])
109  );
110  }
111 
115  public function ‪renderOutputWithAutoplayIsCorrect(): void
116  {
117  $fileResourceMock = $this->createMock(File::class);
118 
119  self::assertSame(
120  '<iframe src="https://player.vimeo.com/video/7331?autoplay=1&amp;muted=1&amp;dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="autoplay; fullscreen"></iframe>',
121  $this->subject->render($fileResourceMock, '300m', '200', ['autoplay' => 1])
122  );
123  }
124 
129  {
130  $fileResourceMock = $this->createMock(File::class);
131 
132  $fileReferenceMock = $this->createMock(FileReference::class);
133  $fileReferenceMock->method('getProperty')->willReturn(1);
134  $fileReferenceMock->method('getOriginalFile')->willReturn($fileResourceMock);
135 
136  self::assertSame(
137  '<iframe src="https://player.vimeo.com/video/7331?autoplay=1&amp;muted=1&amp;dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="autoplay; fullscreen"></iframe>',
138  $this->subject->render($fileReferenceMock, '300m', '200')
139  );
140  }
141 
146  {
147  $fileResourceMock = $this->createMock(File::class);
148 
149  self::assertSame(
150  '<iframe src="https://player.vimeo.com/video/7331?autoplay=1&amp;muted=1&amp;dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="autoplay; fullscreen"></iframe>',
151  $this->subject->render($fileResourceMock, '300m', '200', ['autoplay' => 1])
152  );
153  }
154 
158  public function ‪renderOutputWithAdditionalAttributes(): void
159  {
160  $fileResourceMock = $this->createMock(File::class);
161 
162  self::assertSame(
163  '<iframe src="https://player.vimeo.com/video/7331?dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen foo="bar" custom-play="preload" sanitizetest="&lt;&gt;&quot;&apos;test" width="300" height="200" allow="fullscreen"></iframe>',
164  $this->subject->render($fileResourceMock, '300m', '200', ['additionalAttributes' => ['foo' => 'bar', 'custom-play' => 'preload', '<"\'>sanitize^&test' => '<>"\'test']])
165  );
166  }
167 
172  {
173  $fileResourceMock = $this->createMock(File::class);
174 
175  self::assertSame(
176  '<iframe src="https://player.vimeo.com/video/7331?dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen data-player-handler="vimeo" data-custom-playerId="player-123" data-sanitizetest="test" width="300" height="200" allow="fullscreen"></iframe>',
177  $this->subject->render($fileResourceMock, '300m', '200', ['data' => ['player-handler' => 'vimeo', 'custom-playerId' => 'player-123', '*sanitize&test"' => 'test']])
178  );
179  }
180 
185  {
186  $fileResourceMock = $this->createMock(File::class);
187 
188  self::assertSame(
189  '<iframe src="https://player.vimeo.com/video/7331?dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen foo="bar" custom-play="preload" data-player-handler="vimeo" data-custom-playerId="player-123" width="300" height="200" allow="fullscreen"></iframe>',
190  $this->subject->render($fileResourceMock, '300m', '200', ['data' => ['player-handler' => 'vimeo', 'custom-playerId' => 'player-123'], 'additionalAttributes' => ['foo' => 'bar', 'custom-play' => 'preload']])
191  );
192  }
193 
197  public function ‪renderOutputWithCustomAllowIsCorrect(): void
198  {
199  $fileResourceMock = $this->createMock(File::class);
200 
201  self::assertSame(
202  '<iframe src="https://player.vimeo.com/video/7331?dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="foo; bar"></iframe>',
203  $this->subject->render($fileResourceMock, '300m', '200', ['allow' => 'foo; bar'])
204  );
205  }
206 
211  {
212  $fileResourceMock = $this->createMock(File::class);
213 
214  self::assertSame(
215  '<iframe src="https://player.vimeo.com/video/7331?autoplay=1&amp;muted=1&amp;dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="foo; bar"></iframe>',
216  $this->subject->render($fileResourceMock, '300m', '200', ['allow' => 'foo; bar', 'autoplay' => 1])
217  );
218  }
219 
223  public function ‪renderOutputWithPrivateVimeoCodeIsCorrect(): void
224  {
225  $vimeoHelper = $this->getAccessibleMock(VimeoHelper::class, ['getOnlineMediaId'], ['vimeo']);
226  $vimeoHelper->method('getOnlineMediaId')->willReturn('7331/private0123');
227 
228  ‪$subject = $this->getAccessibleMock(VimeoRenderer::class, ['getOnlineMediaHelper'], []);
229  ‪$subject->method('getOnlineMediaHelper')->willReturn($vimeoHelper);
230 
231  $fileResourceMock = $this->createMock(File::class);
232 
233  self::assertSame(
234  '<iframe src="https://player.vimeo.com/video/7331/private0123?dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="fullscreen"></iframe>',
235  ‪$subject->‪render($fileResourceMock, '300m', '200')
236  );
237  }
238 
242  public function ‪renderOutputIsEscaped(): void
243  {
244  $vimeoHelper = $this->getAccessibleMock(VimeoHelper::class, ['getOnlineMediaId'], ['vimeo']);
245  $vimeoHelper->method('getOnlineMediaId')->willReturn('7331<script>danger</script>\'"random"quotes;');
246 
247  ‪$subject = $this->getAccessibleMock(VimeoRenderer::class, ['getOnlineMediaHelper'], []);
248  ‪$subject->method('getOnlineMediaHelper')->willReturn($vimeoHelper);
249 
250  $fileResourceMock = $this->createMock(File::class);
251 
252  self::assertSame(
253  '<iframe src="https://player.vimeo.com/video/7331&lt;script&gt;danger&lt;/script&gt;&apos;&quot;random&quot;quotes;?dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="fullscreen"></iframe>',
254  ‪$subject->‪render($fileResourceMock, '300m', '200')
255  );
256  }
257 
261  public function ‪renderOutputWithApiIsCorrect(): void
262  {
263  $fileResourceMock = $this->createMock(File::class);
264 
265  self::assertSame(
266  '<iframe src="https://player.vimeo.com/video/7331?api=1&amp;dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="fullscreen"></iframe>',
267  $this->subject->render($fileResourceMock, '300m', '200', ['api' => 1])
268  );
269  }
270 
274  public function ‪renderOutputWithEnabledNoCookieIsCorrect(): void
275  {
276  $fileResourceMock = $this->createMock(File::class);
277 
278  self::assertSame(
279  '<iframe src="https://player.vimeo.com/video/7331?api=1&amp;dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="fullscreen"></iframe>',
280  $this->subject->render($fileResourceMock, '300m', '200', ['api' => 1, 'no-cookie' => 1])
281  );
282  }
283 
287  public function ‪renderOutputWithDisabledNoCookieIsCorrect(): void
288  {
289  $fileResourceMock = $this->createMock(File::class);
290 
291  self::assertSame(
292  '<iframe src="https://player.vimeo.com/video/7331?api=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="fullscreen"></iframe>',
293  $this->subject->render($fileResourceMock, '300m', '200', ['api' => 1, 'no-cookie' => 0])
294  );
295  }
296 }
‪TYPO3\CMS\Core\Resource\Rendering\VimeoRenderer
Definition: VimeoRenderer.php:29
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\getPriorityReturnsCorrectValue
‪getPriorityReturnsCorrectValue()
Definition: VimeoRendererTest.php:53
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithCustomAllowIsCorrect
‪renderOutputWithCustomAllowIsCorrect()
Definition: VimeoRendererTest.php:196
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithAutoplayFromReferenceIsCorrect
‪renderOutputWithAutoplayFromReferenceIsCorrect()
Definition: VimeoRendererTest.php:127
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithAdditionalAttributes
‪renderOutputWithAdditionalAttributes()
Definition: VimeoRendererTest.php:157
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithEnabledNoCookieIsCorrect
‪renderOutputWithEnabledNoCookieIsCorrect()
Definition: VimeoRendererTest.php:273
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\$subject
‪VimeoRenderer MockObject $subject
Definition: VimeoRendererTest.php:34
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithApiIsCorrect
‪renderOutputWithApiIsCorrect()
Definition: VimeoRendererTest.php:260
‪TYPO3\CMS\Core\Resource\FileReference
Definition: FileReference.php:33
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\canRenderReturnsTrueOnCorrectFile
‪canRenderReturnsTrueOnCorrectFile()
Definition: VimeoRendererTest.php:61
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering
Definition: AudioTagRendererTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithLoopIsCorrect
‪renderOutputWithLoopIsCorrect()
Definition: VimeoRendererTest.php:101
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithCombinationOfDataAndAdditionalAttributes
‪renderOutputWithCombinationOfDataAndAdditionalAttributes()
Definition: VimeoRendererTest.php:183
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputIsEscaped
‪renderOutputIsEscaped()
Definition: VimeoRendererTest.php:241
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\setUp
‪setUp()
Definition: VimeoRendererTest.php:39
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputIsCorrect
‪renderOutputIsCorrect()
Definition: VimeoRendererTest.php:88
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:24
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithDisabledNoCookieIsCorrect
‪renderOutputWithDisabledNoCookieIsCorrect()
Definition: VimeoRendererTest.php:286
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\canRenderReturnsFalseOnCorrectFile
‪canRenderReturnsFalseOnCorrectFile()
Definition: VimeoRendererTest.php:77
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest
Definition: VimeoRendererTest.php:31
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithDataAttributesForCustomization
‪renderOutputWithDataAttributesForCustomization()
Definition: VimeoRendererTest.php:170
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithPrivateVimeoCodeIsCorrect
‪renderOutputWithPrivateVimeoCodeIsCorrect()
Definition: VimeoRendererTest.php:222
‪TYPO3\CMS\Core\Resource\Rendering\VimeoRenderer\render
‪string render(FileInterface $file, $width, $height, array $options=[], $usedPathsRelativeToCurrentScript=false)
Definition: VimeoRenderer.php:91
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithAutoplayAndWithoutControlsIsCorrect
‪renderOutputWithAutoplayAndWithoutControlsIsCorrect()
Definition: VimeoRendererTest.php:144
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\VimeoHelper
Definition: VimeoHelper.php:26
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithCustomAllowAndAutoplayIsCorrect
‪renderOutputWithCustomAllowAndAutoplayIsCorrect()
Definition: VimeoRendererTest.php:209
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithAutoplayIsCorrect
‪renderOutputWithAutoplayIsCorrect()
Definition: VimeoRendererTest.php:114