ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
UploadLimitResolverTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
23use PHPUnit\Framework\TestCase;
28
32class UploadLimitResolverTest extends TestCase
33{
36
37 protected function setUp(): void
38 {
39 $pseudo_upload_handler = $this->createMock(UploadHandler::class);
40 $pseudo_upload_handler->method('getFileIdentifierParameterName')->willReturn('');
41
42 $this->upload_handler_with_chunks = clone $pseudo_upload_handler;
43 $this->upload_handler_with_chunks->method('supportsChunkedUploads')->willReturn(true);
44
45 $this->upload_handler_without_chunks = clone $pseudo_upload_handler;
46 $this->upload_handler_without_chunks->method('supportsChunkedUploads')->willReturn(false);
47 }
48
49 public static function provideUploadLimitResolutionDataSet(): array
50 {
51 return [
52 [
53 'php_ini_value' => 10,
54 'custom_global_value' => null,
55 'local_value' => null,
56 'upload_handler_supports_chunks' => true,
57 'expected_result' => 10
58 ],
59 [
60 'php_ini_value' => 10,
61 'custom_global_value' => null,
62 'local_value' => 20,
63 'upload_handler_supports_chunks' => true,
64 'expected_result' => 20
65 ],
66 [
67 'php_ini_value' => 10,
68 'custom_global_value' => null,
69 'local_value' => 20,
70 'upload_handler_supports_chunks' => true,
71 'expected_result' => 20
72 ],
73 [
74 'php_ini_value' => 10,
75 'custom_global_value' => 15,
76 'local_value' => 20,
77 'upload_handler_supports_chunks' => true,
78 'expected_result' => 20
79 ],
80 [
81 'php_ini_value' => 10,
82 'custom_global_value' => 20,
83 'local_value' => 15,
84 'upload_handler_supports_chunks' => true,
85 'expected_result' => 15
86 ],
87 [
88 'php_ini_value' => 10,
89 'custom_global_value' => null,
90 'local_value' => 20,
91 'upload_handler_supports_chunks' => false,
92 'expected_result' => 10
93 ],
94 [
95 'php_ini_value' => 10,
96 'custom_global_value' => 20,
97 'local_value' => null,
98 'upload_handler_supports_chunks' => false,
99 'expected_result' => 10
100 ],
101 [
102 'php_ini_value' => 10,
103 'custom_global_value' => 20,
104 'local_value' => 5,
105 'upload_handler_supports_chunks' => false,
106 'expected_result' => 5
107 ],
108 ];
109 }
110
111 #[\PHPUnit\Framework\Attributes\DataProvider('provideUploadLimitResolutionDataSet')]
113 int $php_ini_value,
114 ?int $custom_global_value,
115 ?int $local_value,
116 bool $upload_handler_supports_chunks,
117 int $expected_result,
118 ): void {
120 $this->getPhpUploadLimitMock($php_ini_value),
121 $this->getGlobalUploadLimitMock($custom_global_value)
122 );
123
124 if ($upload_handler_supports_chunks) {
125 $upload_handler = $this->upload_handler_with_chunks;
126 } else {
127 $upload_handler = $this->upload_handler_without_chunks;
128 }
129
130 $actual_value = $resolver->getBestPossibleUploadLimitInBytes($upload_handler, $local_value);
131
132 $this->assertEquals($expected_result, $actual_value);
133 }
134
135 protected function getPhpUploadLimitMock(int $upload_limit): PhpUploadLimit
136 {
137 $mock = $this->createMock(PhpUploadLimit::class);
138 $mock->method('getPhpUploadLimitInBytes')->willReturn($upload_limit);
139 return $mock;
140 }
141
142 protected function getGlobalUploadLimitMock(?int $upload_limit): GlobalUploadLimit
143 {
144 $mock = $this->createMock(GlobalUploadLimit::class);
145 $mock->method('getGlobalUploadLimitInBytes')->willReturn($upload_limit);
146 return $mock;
147 }
148}
foreach($components as $component) $resolver
testUploadLimitResolution(int $php_ini_value, ?int $custom_global_value, ?int $local_value, bool $upload_handler_supports_chunks, int $expected_result,)