• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

api-platform / core / 20545070147

27 Dec 2025 10:15PM UTC coverage: 28.855% (+3.7%) from 25.192%
20545070147

push

github

soyuka
ci: upgrade to phpunit 12

Remove soyuka/phpunit fork from all composer.json files and upgrade to
PHPUnit 12.2. Update CI workflow to install PHPUnit before other steps
and configure MongoDB conditional execution. Migrate tests from Prophecy
to PHPUnit native mocking in FieldsBuilderTest and Symfony event listener
tests. Remove unused dataprovider and fix warnings.

0 of 84 new or added lines in 8 files covered. (0.0%)

534 existing lines in 34 files now uncovered.

16760 of 58083 relevant lines covered (28.86%)

78.25 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/src/Symfony/EventListener/DeserializeListener.php
1
<?php
2

3
/*
4
 * This file is part of the API Platform project.
5
 *
6
 * (c) Kévin Dunglas <dunglas@gmail.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11

12
declare(strict_types=1);
13

14
namespace ApiPlatform\Symfony\EventListener;
15

16
use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface;
17
use ApiPlatform\State\ProviderInterface;
18
use ApiPlatform\State\SerializerContextBuilderInterface;
19
use ApiPlatform\State\Util\OperationRequestInitiatorTrait;
20
use ApiPlatform\State\Util\RequestAttributesExtractor;
21
use Symfony\Component\HttpKernel\Event\RequestEvent;
22
use Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException;
23

24
/**
25
 * Updates the entity retrieved by the data provider with data contained in the request body.
26
 *
27
 * @author Kévin Dunglas <dunglas@gmail.com>
28
 */
29
final class DeserializeListener
30
{
31
    use OperationRequestInitiatorTrait;
32

33
    public const OPERATION_ATTRIBUTE_KEY = 'deserialize';
34

35
    /**
36
     * @param ProviderInterface<object> $provider
37
     */
38
    public function __construct(
39
        private ProviderInterface $provider,
40
        ?ResourceMetadataCollectionFactoryInterface $resourceMetadataFactory = null,
41
    ) {
UNCOV
42
        $this->resourceMetadataCollectionFactory = $resourceMetadataFactory;
378✔
43
    }
44

45
    /**
46
     * Deserializes the data sent in the requested format.
47
     *
48
     * @throws UnsupportedMediaTypeHttpException
49
     */
50
    public function onKernelRequest(RequestEvent $event): void
51
    {
UNCOV
52
        $request = $event->getRequest();
378✔
UNCOV
53
        $method = $request->getMethod();
378✔
UNCOV
54
        $operation = $this->initializeOperation($request);
378✔
55

56
        if (
UNCOV
57
            !($attributes = RequestAttributesExtractor::extractAttributes($request))
378✔
UNCOV
58
            || !$attributes['receive']
378✔
UNCOV
59
            || !$operation
378✔
60
        ) {
UNCOV
61
            return;
52✔
62
        }
63

UNCOV
64
        if (null === $operation->canDeserialize()) {
330✔
UNCOV
65
            $operation = $operation->withDeserialize(\in_array($method, ['POST', 'PUT', 'PATCH'], true));
330✔
66
        }
67

UNCOV
68
        $denormalizationContext = $operation->getDenormalizationContext() ?? [];
330✔
UNCOV
69
        if ($operation->canDeserialize() && !isset($denormalizationContext[SerializerContextBuilderInterface::ASSIGN_OBJECT_TO_POPULATE])) {
330✔
UNCOV
70
            $method = $operation->getMethod();
22✔
UNCOV
71
            $assignObjectToPopulate = 'POST' === $method
22✔
UNCOV
72
                || 'PATCH' === $method
22✔
UNCOV
73
                || ('PUT' === $method && !($operation->getExtraProperties()['standard_put'] ?? true));
22✔
74

UNCOV
75
            $operation = $operation->withDenormalizationContext($denormalizationContext + [SerializerContextBuilderInterface::ASSIGN_OBJECT_TO_POPULATE => $assignObjectToPopulate]);
22✔
76
        }
77

UNCOV
78
        if (!$operation->canDeserialize()) {
330✔
UNCOV
79
            return;
317✔
80
        }
81

UNCOV
82
        $this->provider->provide($operation, $request->attributes->get('_api_uri_variables') ?? [], [
22✔
UNCOV
83
            'request' => $request,
22✔
UNCOV
84
            'uri_variables' => $request->attributes->get('_api_uri_variables') ?? [],
22✔
UNCOV
85
            'resource_class' => $operation->getClass(),
22✔
UNCOV
86
        ]);
22✔
87
    }
88
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc