‪TYPO3CMS  ‪main
VariableFrontendTest.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\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
26 
27 final class ‪VariableFrontendTest extends UnitTestCase
28 {
29  public static function ‪constructAcceptsValidIdentifiersDataProvider(): array
30  {
31  return [
32  ['x'],
33  ['someValue'],
34  ['123fivesixseveneight'],
35  ['some&'],
36  ['ab_cd%'],
37  [rawurlencode('resource://some/äöü$&% sadf')],
38  [str_repeat('x', 250)],
39  ];
40  }
41 
42  #[Test]
43  #[DataProvider('constructAcceptsValidIdentifiersDataProvider')]
45  {
46  new ‪VariableFrontend(‪$identifier, $this->createMock(BackendInterface::class));
47  }
48 
49  public static function ‪constructRejectsInvalidIdentifiersDataProvider(): array
50  {
51  return [
52  [''],
53  ['abc def'],
54  ['foo!'],
55  ['bar:'],
56  ['some/'],
57  ['bla*'],
58  ['one+'],
59  ['äöü'],
60  [str_repeat('x', 251)],
61  ['x$'],
62  ['\\a'],
63  ['b#'],
64  ];
65  }
66 
67  #[Test]
68  #[DataProvider('constructRejectsInvalidIdentifiersDataProvider')]
70  {
71  $this->expectException(\InvalidArgumentException::class);
72  $this->expectExceptionCode(1203584729);
73  new ‪VariableFrontend(‪$identifier, $this->createMock(BackendInterface::class));
74  }
75 
76  #[Test]
77  public function ‪flushCallsBackend(): void
78  {
79  $backend = $this->createMock(BackendInterface::class);
80  $backend->expects(self::once())->method('flush');
81  $cache = new ‪VariableFrontend('someCacheIdentifier', $backend);
82  $cache->flush();
83  }
84 
85  #[Test]
86  public function ‪flushByTagRejectsInvalidTags(): void
87  {
88  $this->expectException(\InvalidArgumentException::class);
89  $this->expectExceptionCode(1233057359);
90  $backend = $this->createMock(TaggableBackendInterface::class);
91  $backend->expects(self::never())->method('flushByTag');
92  $cache = new ‪VariableFrontend('someCacheIdentifier', $backend);
93  $cache->flushByTag('SomeInvalid\\Tag');
94  }
95 
96  #[Test]
98  {
99  $tag = 'someTag';
100  $backend = $this->createMock(TaggableBackendInterface::class);
101  $backend->expects(self::once())->method('flushByTag')->with($tag);
102  $cache = new ‪VariableFrontend('someCacheIdentifier', $backend);
103  $cache->flushByTag($tag);
104  }
105 
106  #[Test]
108  {
109  $tag = 'someTag';
110  $backend = $this->createMock(TaggableBackendInterface::class);
111  $backend->expects(self::once())->method('flushByTags')->with([$tag]);
112  $cache = new ‪VariableFrontend('someCacheIdentifier', $backend);
113  $cache->flushByTags([$tag]);
114  }
115 
116  #[Test]
117  public function ‪collectGarbageCallsBackend(): void
118  {
119  $backend = $this->createMock(BackendInterface::class);
120  $backend->expects(self::once())->method('collectGarbage');
121  $cache = new ‪VariableFrontend('someCacheIdentifier', $backend);
122  $cache->collectGarbage();
123  }
124 
126  {
127  return [
128  [''],
129  ['abc def'],
130  ['foo!'],
131  ['bar:'],
132  ['some/'],
133  ['bla*'],
134  ['one+'],
135  ['äöü'],
136  [str_repeat('x', 251)],
137  ['x$'],
138  ['\\a'],
139  ['b#'],
140  ];
141  }
142 
143  #[Test]
144  #[DataProvider('isValidEntryIdentifierReturnsFalseWithValidIdentifierDataProvider')]
146  {
147  $backend = $this->createMock(BackendInterface::class);
148  $cache = new ‪VariableFrontend('someCacheIdentifier', $backend);
149  self::assertFalse($cache->isValidEntryIdentifier(‪$identifier));
150  }
151 
153  {
154  return [
155  ['_'],
156  ['abcdef'],
157  ['foo'],
158  ['bar123'],
159  ['3some'],
160  ['_bl_a'],
161  ['some&'],
162  ['one%TWO'],
163  [str_repeat('x', 250)],
164  ];
165  }
166 
167  #[Test]
168  #[DataProvider('isValidEntryIdentifierReturnsTrueWithValidIdentifierDataProvider')]
170  {
171  $backend = $this->createMock(BackendInterface::class);
172  $cache = new ‪VariableFrontend('someCacheIdentifier', $backend);
173  self::assertTrue($cache->isValidEntryIdentifier(‪$identifier));
174  }
175 
177  {
178  return [
179  [''],
180  ['abc def'],
181  ['foo!'],
182  ['bar:'],
183  ['some/'],
184  ['bla*'],
185  ['one+'],
186  ['äöü'],
187  [str_repeat('x', 251)],
188  ['x$'],
189  ['\\a'],
190  ['b#'],
191  ];
192  }
193 
194  #[Test]
195  #[DataProvider('isValidTagReturnsFalseWithInvalidTagDataProvider')]
196  public function ‪isValidTagReturnsFalseWithInvalidTag(string $tag): void
197  {
198  $backend = $this->createMock(BackendInterface::class);
199  $cache = new ‪VariableFrontend('someCacheIdentifier', $backend);
200  self::assertFalse($cache->isValidTag($tag));
201  }
202 
203  public static function ‪isValidTagReturnsTrueWithValidTagDataProvider(): array
204  {
205  return [
206  ['abcdef'],
207  ['foo-bar'],
208  ['foo_baar'],
209  ['bar123'],
210  ['3some'],
211  ['file%Thing'],
212  ['some&'],
213  ['%x%'],
214  [str_repeat('x', 250)],
215  ];
216  }
217 
218  #[Test]
219  #[DataProvider('isValidTagReturnsTrueWithValidTagDataProvider')]
220  public function ‪isValidTagReturnsTrueWithValidTag(string $tag): void
221  {
222  $backend = $this->createMock(BackendInterface::class);
223  $cache = new ‪VariableFrontend('someCacheIdentifier', $backend);
224  self::assertTrue($cache->isValidTag($tag));
225  }
226 
227  #[Test]
228  public function ‪setChecksIfTheIdentifierIsValid(): void
229  {
230  $this->expectException(\InvalidArgumentException::class);
231  $this->expectExceptionCode(1233058264);
232  $cache = new ‪VariableFrontend('someCacheIdentifier', $this->createMock(BackendInterface::class));
233  $cache->set('invalid identifier', 'bar');
234  }
235 
236  #[Test]
238  {
239  $theString = 'Just some value';
240  $backend = $this->createMock(BackendInterface::class);
241  $backend->expects(self::once())->method('set')->with('VariableCacheTest', serialize($theString));
242  $cache = new ‪VariableFrontend('VariableFrontend', $backend);
243  $cache->set('VariableCacheTest', $theString);
244  }
245 
246  #[Test]
247  public function ‪setPassesSerializedArrayToBackend(): void
248  {
249  $theArray = ['Just some value', 'and another one.'];
250  $backend = $this->createMock(BackendInterface::class);
251  $backend->expects(self::once())->method('set')->with('VariableCacheTest', serialize($theArray));
252  $cache = new ‪VariableFrontend('VariableFrontend', $backend);
253  $cache->set('VariableCacheTest', $theArray);
254  }
255 
256  #[Test]
257  public function ‪setPassesLifetimeToBackend(): void
258  {
259  $theString = 'Just some value';
260  $theLifetime = 1234;
261  $backend = $this->createMock(BackendInterface::class);
262  $backend->expects(self::once())->method('set')->with('VariableCacheTest', serialize($theString), [], $theLifetime);
263  $cache = new ‪VariableFrontend('VariableFrontend', $backend);
264  $cache->set('VariableCacheTest', $theString, [], $theLifetime);
265  }
266 
267  #[Test]
268  public function ‪getFetchesStringValueFromBackend(): void
269  {
270  $backend = $this->createMock(BackendInterface::class);
271  $backend->expects(self::once())->method('get')->willReturn(serialize('Just some value'));
272  $cache = new ‪VariableFrontend('VariableFrontend', $backend);
273  self::assertEquals('Just some value', $cache->get('VariableCacheTest'));
274  }
275 
276  #[Test]
277  public function ‪getFetchesArrayValueFromBackend(): void
278  {
279  $theArray = ['Just some value', 'and another one.'];
280  $backend = $this->createMock(BackendInterface::class);
281  $backend->expects(self::once())->method('get')->willReturn(serialize($theArray));
282  $cache = new ‪VariableFrontend('VariableFrontend', $backend);
283  self::assertEquals($theArray, $cache->get('VariableCacheTest'));
284  }
285 
286  #[Test]
288  {
289  $backend = $this->createMock(BackendInterface::class);
290  $backend->expects(self::once())->method('get')->willReturn(serialize(false));
291  $cache = new ‪VariableFrontend('VariableFrontend', $backend);
292  self::assertFalse($cache->get('VariableCacheTest'));
293  }
294 
295  #[Test]
296  public function ‪hasReturnsResultFromBackend(): void
297  {
298  $backend = $this->createMock(BackendInterface::class);
299  $backend->expects(self::once())->method('has')->with(self::equalTo('VariableCacheTest'))->willReturn(true);
300  $cache = new ‪VariableFrontend('VariableFrontend', $backend);
301  self::assertTrue($cache->has('VariableCacheTest'));
302  }
303 
304  #[Test]
305  public function ‪removeCallsBackend(): void
306  {
307  $cacheIdentifier = 'someCacheIdentifier';
308  $backend = $this->createMock(BackendInterface::class);
309  $backend->expects(self::once())->method('remove')->with(self::equalTo($cacheIdentifier))->willReturn(true);
310  $cache = new ‪VariableFrontend('VariableFrontend', $backend);
311  self::assertTrue($cache->remove($cacheIdentifier));
312  }
313 }
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\getFetchesArrayValueFromBackend
‪getFetchesArrayValueFromBackend()
Definition: VariableFrontendTest.php:277
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\constructRejectsInvalidIdentifiers
‪constructRejectsInvalidIdentifiers(string $identifier)
Definition: VariableFrontendTest.php:69
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\isValidTagReturnsTrueWithValidTagDataProvider
‪static isValidTagReturnsTrueWithValidTagDataProvider()
Definition: VariableFrontendTest.php:203
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\isValidEntryIdentifierReturnsTrueWithValidIdentifier
‪isValidEntryIdentifierReturnsTrueWithValidIdentifier(string $identifier)
Definition: VariableFrontendTest.php:169
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\setPassesSerializedStringToBackend
‪setPassesSerializedStringToBackend()
Definition: VariableFrontendTest.php:237
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\flushByTagRejectsInvalidTags
‪flushByTagRejectsInvalidTags()
Definition: VariableFrontendTest.php:86
‪TYPO3\CMS\Core\Cache\Backend\TaggableBackendInterface
Definition: TaggableBackendInterface.php:22
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend
Definition: PhpFrontendTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\getFetchesFalseBooleanValueFromBackend
‪getFetchesFalseBooleanValueFromBackend()
Definition: VariableFrontendTest.php:287
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\constructRejectsInvalidIdentifiersDataProvider
‪static constructRejectsInvalidIdentifiersDataProvider()
Definition: VariableFrontendTest.php:49
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\flushByTagsCallsBackendIfItIsATaggableBackend
‪flushByTagsCallsBackendIfItIsATaggableBackend()
Definition: VariableFrontendTest.php:107
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\isValidEntryIdentifierReturnsTrueWithValidIdentifierDataProvider
‪static isValidEntryIdentifierReturnsTrueWithValidIdentifierDataProvider()
Definition: VariableFrontendTest.php:152
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\isValidTagReturnsTrueWithValidTag
‪isValidTagReturnsTrueWithValidTag(string $tag)
Definition: VariableFrontendTest.php:220
‪TYPO3\CMS\Core\Cache\Backend\BackendInterface
Definition: BackendInterface.php:25
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\removeCallsBackend
‪removeCallsBackend()
Definition: VariableFrontendTest.php:305
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\flushByTagCallsBackendIfItIsATaggableBackend
‪flushByTagCallsBackendIfItIsATaggableBackend()
Definition: VariableFrontendTest.php:97
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\constructAcceptsValidIdentifiers
‪constructAcceptsValidIdentifiers(string $identifier)
Definition: VariableFrontendTest.php:44
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\isValidTagReturnsFalseWithInvalidTagDataProvider
‪static isValidTagReturnsFalseWithInvalidTagDataProvider()
Definition: VariableFrontendTest.php:176
‪TYPO3\CMS\Core\Cache\Frontend\VariableFrontend
Definition: VariableFrontend.php:25
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\getFetchesStringValueFromBackend
‪getFetchesStringValueFromBackend()
Definition: VariableFrontendTest.php:268
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\setPassesSerializedArrayToBackend
‪setPassesSerializedArrayToBackend()
Definition: VariableFrontendTest.php:247
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\flushCallsBackend
‪flushCallsBackend()
Definition: VariableFrontendTest.php:77
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\isValidEntryIdentifierReturnsFalseWithValidIdentifierDataProvider
‪static isValidEntryIdentifierReturnsFalseWithValidIdentifierDataProvider()
Definition: VariableFrontendTest.php:125
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\isValidTagReturnsFalseWithInvalidTag
‪isValidTagReturnsFalseWithInvalidTag(string $tag)
Definition: VariableFrontendTest.php:196
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\collectGarbageCallsBackend
‪collectGarbageCallsBackend()
Definition: VariableFrontendTest.php:117
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\constructAcceptsValidIdentifiersDataProvider
‪static constructAcceptsValidIdentifiersDataProvider()
Definition: VariableFrontendTest.php:29
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\setChecksIfTheIdentifierIsValid
‪setChecksIfTheIdentifierIsValid()
Definition: VariableFrontendTest.php:228
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\isValidEntryIdentifierReturnsFalseWithValidIdentifier
‪isValidEntryIdentifierReturnsFalseWithValidIdentifier(string $identifier)
Definition: VariableFrontendTest.php:145
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\hasReturnsResultFromBackend
‪hasReturnsResultFromBackend()
Definition: VariableFrontendTest.php:296
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest\setPassesLifetimeToBackend
‪setPassesLifetimeToBackend()
Definition: VariableFrontendTest.php:257
‪TYPO3\CMS\Core\Tests\Unit\Cache\Frontend\VariableFrontendTest
Definition: VariableFrontendTest.php:28
‪TYPO3\CMS\Webhooks\Message\$identifier
‪identifier readonly string $identifier
Definition: FileAddedMessage.php:37