diff --git a/src/Bundle/DataCollector/JWECollector.php b/src/Bundle/DataCollector/JWECollector.php index 1ac34b5a..3e979857 100644 --- a/src/Bundle/DataCollector/JWECollector.php +++ b/src/Bundle/DataCollector/JWECollector.php @@ -169,7 +169,7 @@ private function collectSupportedJWEBuilders(array &$data): void 'content_encryption_algorithms' => $jweBuilder->getContentEncryptionAlgorithmManager() ->list(), 'compression_methods' => $jweBuilder->getCompressionMethodManager() - ->list(), + ?->list(), ]; } } @@ -187,7 +187,7 @@ private function collectSupportedJWEDecrypters(array &$data): void 'content_encryption_algorithms' => $jweDecrypter->getContentEncryptionAlgorithmManager() ->list(), 'compression_methods' => $jweDecrypter->getCompressionMethodManager() - ->list(), + ?->list(), ]; } } @@ -210,7 +210,7 @@ private function collectSupportedJWELoaders(array &$data): void ->list(), 'compression_methods' => $jweLoader->getJweDecrypter() ->getCompressionMethodManager() - ->list(), + ?->list(), ]; } } diff --git a/tests/Bundle/JoseFramework/Functional/Encryption/JWECollectorTest.php b/tests/Bundle/JoseFramework/Functional/Encryption/JWECollectorTest.php new file mode 100644 index 00000000..273cf142 --- /dev/null +++ b/tests/Bundle/JoseFramework/Functional/Encryption/JWECollectorTest.php @@ -0,0 +1,100 @@ +getContainer(); + static::assertInstanceOf(ContainerInterface::class, $container); + + $jweFactory = $container->get(JWEBuilderFactoryService::class); + static::assertInstanceOf(JWEBuilderFactoryService::class, $jweFactory); + + $jweBuilder = $jweFactory->create(['RSA1_5', 'A256GCM']); + + $jweCollector = new JWECollector(); + $jweCollector->addJWEBuilder('builder2', $jweBuilder); + + $data = []; + $jweCollector->collect($data, new Request(), new Response()); + + static::assertArrayHasKey('jwe', $data); + static::assertArrayHasKey('compression_methods', $data['jwe']); + static::assertSame([], $data['jwe']['compression_methods']); + static::assertArrayHasKey('jwe_builders', $data['jwe']); + static::assertArrayHasKey('builder2', $data['jwe']['jwe_builders']); + } + + + #[Test] + public function aJWEDecrypterCanBeCollectedWithoutACompressionMethodManager(): void + { + static::ensureKernelShutdown(); + $client = static::createClient(); + $container = $client->getContainer(); + static::assertInstanceOf(ContainerInterface::class, $container); + + $jweDecrypterFactory = $container->get(JWEDecrypterFactoryService::class); + static::assertInstanceOf(JWEDecrypterFactoryService::class, $jweDecrypterFactory); + + $jweDecrypter = $jweDecrypterFactory->create(['RSA1_5', 'A256GCM']); + + $jweCollector = new JWECollector(); + $jweCollector->addJWEDecrypter('decrypter2', $jweDecrypter); + + $data = []; + $jweCollector->collect($data, new Request(), new Response()); + + static::assertArrayHasKey('jwe', $data); + static::assertArrayHasKey('compression_methods', $data['jwe']); + static::assertSame([], $data['jwe']['compression_methods']); + static::assertArrayHasKey('jwe_decrypters', $data['jwe']); + static::assertArrayHasKey('decrypter2', $data['jwe']['jwe_decrypters']); + } + + #[Test] + public function aJWELoaderCanBeCollectedWithoutACompressionMethodManager(): void + { + static::ensureKernelShutdown(); + $client = static::createClient(); + $container = $client->getContainer(); + static::assertInstanceOf(ContainerInterface::class, $container); + + $jweLoaderFactory = $container->get(JWELoaderFactoryAlias::class); + static::assertInstanceOf(JWELoaderFactoryAlias::class, $jweLoaderFactory); + + $jweLoader = $jweLoaderFactory->create(['jwe_compact'], ['RSA1_5'], ['A256GCM']); + + $jweCollector = new JWECollector(); + $jweCollector->addJWELoader('loader2', $jweLoader); + + $data = []; + $jweCollector->collect($data, new Request(), new Response()); + + static::assertArrayHasKey('jwe', $data); + static::assertArrayHasKey('compression_methods', $data['jwe']); + static::assertSame([], $data['jwe']['compression_methods']); + static::assertArrayHasKey('jwe_loaders', $data['jwe']); + static::assertArrayHasKey('loader2', $data['jwe']['jwe_loaders']); + } +}