Skip to content

Commit e9af890

Browse files
authored
fix(metadata): disable pagination maximum items per page (#7553)
1 parent f7e0e7c commit e9af890

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ private function registerCommonConfiguration(ContainerBuilder $container, array
309309
$container->setParameter('api_platform.collection.pagination.client_items_per_page', $config['defaults']['pagination_client_items_per_page'] ?? false);
310310
$container->setParameter('api_platform.collection.pagination.client_partial', $config['defaults']['pagination_client_partial'] ?? false);
311311
$container->setParameter('api_platform.collection.pagination.items_per_page', $config['defaults']['pagination_items_per_page'] ?? 30);
312-
$container->setParameter('api_platform.collection.pagination.maximum_items_per_page', $config['defaults']['pagination_maximum_items_per_page'] ?? null);
312+
$container->setParameter('api_platform.collection.pagination.maximum_items_per_page', \array_key_exists('pagination_maximum_items_per_page', $config['defaults']) ? $config['defaults']['pagination_maximum_items_per_page'] : 30);
313313
$container->setParameter('api_platform.collection.pagination.page_parameter_name', $config['defaults']['pagination_page_parameter_name'] ?? $config['collection']['pagination']['page_parameter_name']);
314314
$container->setParameter('api_platform.collection.pagination.enabled_parameter_name', $config['defaults']['pagination_enabled_parameter_name'] ?? $config['collection']['pagination']['enabled_parameter_name']);
315315
$container->setParameter('api_platform.collection.pagination.items_per_page_parameter_name', $config['defaults']['pagination_items_per_page_parameter_name'] ?? $config['collection']['pagination']['items_per_page_parameter_name']);

src/Symfony/Tests/Bundle/DependencyInjection/ApiPlatformExtensionTest.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,4 +300,41 @@ public function testItRegistersMetadataConfiguration(): void
300300
$this->assertContainerHasService('api_platform.metadata.resource_extractor.php_file');
301301
$this->assertSame([$emptyPhpFile], $this->container->getDefinition('api_platform.metadata.resource_extractor.php_file')->getArgument(0));
302302
}
303+
304+
public function testPaginationMaximumItemsPerPageIsNotSet(): void
305+
{
306+
$config = self::DEFAULT_CONFIG;
307+
(new ApiPlatformExtension())->load($config, $this->container);
308+
309+
$this->assertTrue($this->container->hasParameter('api_platform.collection.pagination.maximum_items_per_page'));
310+
$this->assertSame(30, $this->container->getParameter('api_platform.collection.pagination.maximum_items_per_page'));
311+
}
312+
313+
public function testPaginationMaximumItemsPerPageIsSetWithNull(): void
314+
{
315+
$config = self::DEFAULT_CONFIG;
316+
$config['api_platform']['defaults']['pagination_maximum_items_per_page'] = null;
317+
(new ApiPlatformExtension())->load($config, $this->container);
318+
319+
$this->assertTrue($this->container->hasParameter('api_platform.collection.pagination.maximum_items_per_page'));
320+
$this->assertNull($this->container->getParameter('api_platform.collection.pagination.maximum_items_per_page'));
321+
}
322+
323+
public function testPaginationMaximumItemsPerPageIsSetWithExplicitValue(): void
324+
{
325+
$config = self::DEFAULT_CONFIG;
326+
$config['api_platform']['defaults']['pagination_maximum_items_per_page'] = 22;
327+
(new ApiPlatformExtension())->load($config, $this->container);
328+
329+
$this->assertSame(22, $this->container->getParameter('api_platform.collection.pagination.maximum_items_per_page'));
330+
}
331+
332+
public function testPaginationMaximumItemsPerPageIsSetWithZero(): void
333+
{
334+
$config = self::DEFAULT_CONFIG;
335+
$config['api_platform']['defaults']['pagination_maximum_items_per_page'] = 0;
336+
(new ApiPlatformExtension())->load($config, $this->container);
337+
338+
$this->assertSame(0, $this->container->getParameter('api_platform.collection.pagination.maximum_items_per_page'));
339+
}
303340
}

0 commit comments

Comments
 (0)