‪TYPO3CMS  ‪main
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\Attributes\Test;
21 use PHPUnit\Framework\MockObject\MockObject;
26 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
27 
31 final class ‪VimeoRendererTest extends UnitTestCase
32 {
33  protected ‪VimeoRenderer&MockObject ‪$subject;
34 
35  protected function ‪setUp(): void
36  {
37  parent::setUp();
38 
39  $vimeoHelper = $this->getAccessibleMock(VimeoHelper::class, ['getOnlineMediaId'], ['vimeo']);
40  $vimeoHelper->method('getOnlineMediaId')->willReturn('7331');
41 
42  $this->subject = $this->getAccessibleMock(VimeoRenderer::class, ['getOnlineMediaHelper', 'shouldIncludeFrameBorderAttribute']);
43  $this->subject->method('shouldIncludeFrameBorderAttribute')->willReturn(false);
44  $this->subject->method('getOnlineMediaHelper')->willReturn($vimeoHelper);
45  }
46 
47  #[Test]
48  public function ‪getPriorityReturnsCorrectValue(): void
49  {
50  self::assertSame(1, $this->subject->getPriority());
51  }
52 
53  #[Test]
54  public function ‪canRenderReturnsTrueOnCorrectFile(): void
55  {
56  $fileResourceMock1 = $this->createMock(File::class);
57  $fileResourceMock1->method('getMimeType')->willReturn('video/vimeo');
58 
59  $fileResourceMock2 = $this->createMock(File::class);
60  $fileResourceMock2->method('getMimeType')->willReturn('video/unknown');
61  $fileResourceMock2->method('getExtension')->willReturn('vimeo');
62 
63  self::assertTrue($this->subject->canRender($fileResourceMock1));
64  self::assertTrue($this->subject->canRender($fileResourceMock2));
65  }
66 
67  #[Test]
68  public function ‪canRenderReturnsFalseOnCorrectFile(): void
69  {
70  $fileResourceMock = $this->createMock(File::class);
71  $fileResourceMock->method('getMimeType')->willReturn('video/youtube');
72 
73  self::assertFalse($this->subject->canRender($fileResourceMock));
74  }
75 
76  #[Test]
77  public function ‪renderOutputIsCorrect(): void
78  {
79  $fileResourceMock = $this->createMock(File::class);
80 
81  self::assertSame(
82  '<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>',
83  $this->subject->render($fileResourceMock, '300m', '200')
84  );
85  }
86 
87  #[Test]
88  public function ‪renderOutputWithLoopIsCorrect(): void
89  {
90  $fileResourceMock = $this->createMock(File::class);
91 
92  self::assertSame(
93  '<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>',
94  $this->subject->render($fileResourceMock, '300m', '200', ['loop' => 1])
95  );
96  }
97 
98  #[Test]
99  public function ‪renderOutputWithAutoplayIsCorrect(): void
100  {
101  $fileResourceMock = $this->createMock(File::class);
102 
103  self::assertSame(
104  '<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>',
105  $this->subject->render($fileResourceMock, '300m', '200', ['autoplay' => 1])
106  );
107  }
108 
109  #[Test]
111  {
112  $fileResourceMock = $this->createMock(File::class);
113 
114  $fileReferenceMock = $this->createMock(FileReference::class);
115  $fileReferenceMock->method('getProperty')->willReturn(1);
116  $fileReferenceMock->method('getOriginalFile')->willReturn($fileResourceMock);
117 
118  self::assertSame(
119  '<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>',
120  $this->subject->render($fileReferenceMock, '300m', '200')
121  );
122  }
123 
124  #[Test]
126  {
127  $fileResourceMock = $this->createMock(File::class);
128 
129  self::assertSame(
130  '<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>',
131  $this->subject->render($fileResourceMock, '300m', '200', ['autoplay' => 1])
132  );
133  }
134 
135  #[Test]
137  {
138  $fileResourceMock = $this->createMock(File::class);
139 
140  self::assertSame(
141  '<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>',
142  $this->subject->render($fileResourceMock, '300m', '200', ['additionalAttributes' => ['foo' => 'bar', 'custom-play' => 'preload', '<"\'>sanitize^&test' => '<>"\'test']])
143  );
144  }
145 
146  #[Test]
148  {
149  $fileResourceMock = $this->createMock(File::class);
150 
151  self::assertSame(
152  '<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>',
153  $this->subject->render($fileResourceMock, '300m', '200', ['data' => ['player-handler' => 'vimeo', 'custom-playerId' => 'player-123', '*sanitize&test"' => 'test']])
154  );
155  }
156 
157  #[Test]
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" data-player-handler="vimeo" data-custom-playerId="player-123" width="300" height="200" allow="fullscreen"></iframe>',
164  $this->subject->render($fileResourceMock, '300m', '200', ['data' => ['player-handler' => 'vimeo', 'custom-playerId' => 'player-123'], 'additionalAttributes' => ['foo' => 'bar', 'custom-play' => 'preload']])
165  );
166  }
167 
168  #[Test]
170  {
171  $fileResourceMock = $this->createMock(File::class);
172 
173  self::assertSame(
174  '<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>',
175  $this->subject->render($fileResourceMock, '300m', '200', ['allow' => 'foo; bar'])
176  );
177  }
178 
179  #[Test]
181  {
182  $fileResourceMock = $this->createMock(File::class);
183 
184  self::assertSame(
185  '<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>',
186  $this->subject->render($fileResourceMock, '300m', '200', ['allow' => 'foo; bar', 'autoplay' => 1])
187  );
188  }
189 
190  #[Test]
192  {
193  $vimeoHelper = $this->getAccessibleMock(VimeoHelper::class, ['getOnlineMediaId'], ['vimeo']);
194  $vimeoHelper->method('getOnlineMediaId')->willReturn('7331/private0123');
195 
196  ‪$subject = $this->getAccessibleMock(VimeoRenderer::class, ['getOnlineMediaHelper', 'shouldIncludeFrameBorderAttribute']);
197  ‪$subject->method('shouldIncludeFrameBorderAttribute')->willReturn(false);
198  ‪$subject->method('getOnlineMediaHelper')->willReturn($vimeoHelper);
199 
200  $fileResourceMock = $this->createMock(File::class);
201 
202  self::assertSame(
203  '<iframe src="https://player.vimeo.com/video/7331?h=private0123&amp;dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="fullscreen"></iframe>',
204  ‪$subject->‪render($fileResourceMock, '300m', '200')
205  );
206  }
207 
208  #[Test]
209  public function ‪renderOutputIsEscaped(): void
210  {
211  $vimeoHelper = $this->getAccessibleMock(VimeoHelper::class, ['getOnlineMediaId'], ['vimeo']);
212  $vimeoHelper->method('getOnlineMediaId')->willReturn('7331<script>danger</script>\'"random"quotes;');
213 
214  ‪$subject = $this->getAccessibleMock(VimeoRenderer::class, ['getOnlineMediaHelper', 'shouldIncludeFrameBorderAttribute']);
215  ‪$subject->method('shouldIncludeFrameBorderAttribute')->willReturn(false);
216  ‪$subject->method('getOnlineMediaHelper')->willReturn($vimeoHelper);
217 
218  $fileResourceMock = $this->createMock(File::class);
219 
220  self::assertSame(
221  '<iframe src="https://player.vimeo.com/video/7331&lt;script&gt;danger&lt;?h=script&gt;&apos;&quot;random&quot;quotes;&amp;dnt=1&amp;title=0&amp;byline=0&amp;portrait=0" allowfullscreen width="300" height="200" allow="fullscreen"></iframe>',
222  ‪$subject->‪render($fileResourceMock, '300m', '200')
223  );
224  }
225 
226  #[Test]
227  public function ‪renderOutputWithApiIsCorrect(): void
228  {
229  $fileResourceMock = $this->createMock(File::class);
230 
231  self::assertSame(
232  '<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>',
233  $this->subject->render($fileResourceMock, '300m', '200', ['api' => 1])
234  );
235  }
236 
237  #[Test]
239  {
240  $fileResourceMock = $this->createMock(File::class);
241 
242  self::assertSame(
243  '<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>',
244  $this->subject->render($fileResourceMock, '300m', '200', ['api' => 1, 'no-cookie' => 1])
245  );
246  }
247 
248  #[Test]
250  {
251  $fileResourceMock = $this->createMock(File::class);
252 
253  self::assertSame(
254  '<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>',
255  $this->subject->render($fileResourceMock, '300m', '200', ['api' => 1, 'no-cookie' => 0])
256  );
257  }
258 }
‪TYPO3\CMS\Core\Resource\Rendering\VimeoRenderer
Definition: VimeoRenderer.php:30
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\getPriorityReturnsCorrectValue
‪getPriorityReturnsCorrectValue()
Definition: VimeoRendererTest.php:48
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithCustomAllowIsCorrect
‪renderOutputWithCustomAllowIsCorrect()
Definition: VimeoRendererTest.php:169
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithAutoplayFromReferenceIsCorrect
‪renderOutputWithAutoplayFromReferenceIsCorrect()
Definition: VimeoRendererTest.php:110
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithAdditionalAttributes
‪renderOutputWithAdditionalAttributes()
Definition: VimeoRendererTest.php:136
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\$subject
‪VimeoRenderer &MockObject $subject
Definition: VimeoRendererTest.php:33
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithEnabledNoCookieIsCorrect
‪renderOutputWithEnabledNoCookieIsCorrect()
Definition: VimeoRendererTest.php:238
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithApiIsCorrect
‪renderOutputWithApiIsCorrect()
Definition: VimeoRendererTest.php:227
‪TYPO3\CMS\Core\Resource\FileReference
Definition: FileReference.php:37
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\canRenderReturnsTrueOnCorrectFile
‪canRenderReturnsTrueOnCorrectFile()
Definition: VimeoRendererTest.php:54
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering
Definition: AudioTagRendererTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithLoopIsCorrect
‪renderOutputWithLoopIsCorrect()
Definition: VimeoRendererTest.php:88
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithCombinationOfDataAndAdditionalAttributes
‪renderOutputWithCombinationOfDataAndAdditionalAttributes()
Definition: VimeoRendererTest.php:158
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputIsEscaped
‪renderOutputIsEscaped()
Definition: VimeoRendererTest.php:209
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\setUp
‪setUp()
Definition: VimeoRendererTest.php:35
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputIsCorrect
‪renderOutputIsCorrect()
Definition: VimeoRendererTest.php:77
‪TYPO3\CMS\Core\Resource\Rendering\VimeoRenderer\render
‪string render(FileInterface $file, $width, $height, array $options=[])
Definition: VimeoRenderer.php:88
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:26
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithDisabledNoCookieIsCorrect
‪renderOutputWithDisabledNoCookieIsCorrect()
Definition: VimeoRendererTest.php:249
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\canRenderReturnsFalseOnCorrectFile
‪canRenderReturnsFalseOnCorrectFile()
Definition: VimeoRendererTest.php:68
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest
Definition: VimeoRendererTest.php:32
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithDataAttributesForCustomization
‪renderOutputWithDataAttributesForCustomization()
Definition: VimeoRendererTest.php:147
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithPrivateVimeoCodeIsCorrect
‪renderOutputWithPrivateVimeoCodeIsCorrect()
Definition: VimeoRendererTest.php:191
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithAutoplayAndWithoutControlsIsCorrect
‪renderOutputWithAutoplayAndWithoutControlsIsCorrect()
Definition: VimeoRendererTest.php:125
‪TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\VimeoHelper
Definition: VimeoHelper.php:26
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithCustomAllowAndAutoplayIsCorrect
‪renderOutputWithCustomAllowAndAutoplayIsCorrect()
Definition: VimeoRendererTest.php:180
‪TYPO3\CMS\Core\Tests\Unit\Resource\Rendering\VimeoRendererTest\renderOutputWithAutoplayIsCorrect
‪renderOutputWithAutoplayIsCorrect()
Definition: VimeoRendererTest.php:99