diff --git a/src/Controller/MessagesController.php b/src/Controller/MessagesController.php index b45e9d5..5be77d8 100644 --- a/src/Controller/MessagesController.php +++ b/src/Controller/MessagesController.php @@ -42,8 +42,8 @@ public function handle(Request $request): ?Response private function getProviderStates(Request $request): array { $providerStates = $request->toArray()['providerStates'] ?? []; - if (!is_array($providerStates) || empty($providerStates)) { - throw new BadRequestException("'providerStates' is missing or invalid in messages request."); + if (!is_array($providerStates)) { + throw new BadRequestException("'providerStates' is invalid in messages request."); } return array_map(function (array $providerState): ProviderState { diff --git a/tests/Application/Controller/MessagesControllerTest.php b/tests/Application/Controller/MessagesControllerTest.php index 552227c..2bf684b 100644 --- a/tests/Application/Controller/MessagesControllerTest.php +++ b/tests/Application/Controller/MessagesControllerTest.php @@ -2,7 +2,6 @@ namespace Tienvx\Bundle\PactProviderBundle\Tests\Application\Controller; -use PHPUnit\Framework\Attributes\TestWith; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class MessagesControllerTest extends WebTestCase @@ -29,17 +28,28 @@ public function testRequestBodyIsEmpty(): void $this->assertStringContainsString('Request body is empty.', $client->getResponse()->getContent()); } - #[TestWith([null])] - #[TestWith([[]])] - public function testMissingOrInvalidProviderStates(mixed $value): void + public function testInvalidProviderStates(): void { $client = static::createClient(); $client->request('POST', '/test-pact-messages', [], [], [], json_encode([ 'description' => 'has message', - 'providerStates' => $value, + 'providerStates' => 123, ])); $this->assertResponseStatusCodeSame(400); - $this->assertStringContainsString("'providerStates' is missing or invalid in messages request.", $client->getResponse()->getContent()); + $this->assertStringContainsString("'providerStates' is invalid in messages request.", $client->getResponse()->getContent()); + } + + public function testEmptyProviderStates(): void + { + $client = static::createClient(); + $client->request('POST', '/test-pact-messages', [], [], [], json_encode([ + 'description' => 'has message', + 'providerStates' => [], + ])); + $this->assertResponseStatusCodeSame(200); + $this->assertResponseHeaderSame('Content-Type', 'text/plain; charset=UTF-8'); + $this->assertResponseHeaderSame('Pact-Message-Metadata', 'eyJrZXkiOiJ2YWx1ZSIsImNvbnRlbnRUeXBlIjoidGV4dFwvcGxhaW4ifQ=='); + $this->assertStringContainsString('message content', $client->getResponse()->getContent()); } public function testMissingProviderStateName(): void