Skip to content

Commit d7ba8ef

Browse files
PeterMeadPeter Mead
and
Peter Mead
authored
Fix call function on null (#596)
* Add failing tests for JWECollector without compression * Fix call function on null error --------- Co-authored-by: Peter Mead <[email protected]>
1 parent 1e9f8bf commit d7ba8ef

File tree

2 files changed

+103
-3
lines changed

2 files changed

+103
-3
lines changed

src/Bundle/DataCollector/JWECollector.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ private function collectSupportedJWEBuilders(array &$data): void
169169
'content_encryption_algorithms' => $jweBuilder->getContentEncryptionAlgorithmManager()
170170
->list(),
171171
'compression_methods' => $jweBuilder->getCompressionMethodManager()
172-
->list(),
172+
?->list(),
173173
];
174174
}
175175
}
@@ -187,7 +187,7 @@ private function collectSupportedJWEDecrypters(array &$data): void
187187
'content_encryption_algorithms' => $jweDecrypter->getContentEncryptionAlgorithmManager()
188188
->list(),
189189
'compression_methods' => $jweDecrypter->getCompressionMethodManager()
190-
->list(),
190+
?->list(),
191191
];
192192
}
193193
}
@@ -210,7 +210,7 @@ private function collectSupportedJWELoaders(array &$data): void
210210
->list(),
211211
'compression_methods' => $jweLoader->getJweDecrypter()
212212
->getCompressionMethodManager()
213-
->list(),
213+
?->list(),
214214
];
215215
}
216216
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Jose\Tests\Bundle\JoseFramework\Functional\Encryption;
6+
7+
use PHPUnit\Framework\Attributes\Test;
8+
use Symfony\Component\HttpFoundation\Request;
9+
use Symfony\Component\HttpFoundation\Response;
10+
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
11+
use Jose\Bundle\JoseFramework\DataCollector\JWECollector;
12+
use Symfony\Component\DependencyInjection\ContainerInterface;
13+
use Jose\Bundle\JoseFramework\Services\JWELoaderFactory as JWELoaderFactoryAlias;
14+
use Jose\Bundle\JoseFramework\Services\JWEBuilderFactory as JWEBuilderFactoryService;
15+
use Jose\Bundle\JoseFramework\Services\JWEDecrypterFactory as JWEDecrypterFactoryService;
16+
17+
/**
18+
* @internal
19+
*/
20+
final class JWECollectorTest extends WebTestCase
21+
{
22+
#[Test]
23+
public function aJWEBuilderCanBeCollectedWithoutACompressionMethodManager(): void
24+
{
25+
static::ensureKernelShutdown();
26+
$client = static::createClient();
27+
$container = $client->getContainer();
28+
static::assertInstanceOf(ContainerInterface::class, $container);
29+
30+
$jweFactory = $container->get(JWEBuilderFactoryService::class);
31+
static::assertInstanceOf(JWEBuilderFactoryService::class, $jweFactory);
32+
33+
$jweBuilder = $jweFactory->create(['RSA1_5', 'A256GCM']);
34+
35+
$jweCollector = new JWECollector();
36+
$jweCollector->addJWEBuilder('builder2', $jweBuilder);
37+
38+
$data = [];
39+
$jweCollector->collect($data, new Request(), new Response());
40+
41+
static::assertArrayHasKey('jwe', $data);
42+
static::assertArrayHasKey('compression_methods', $data['jwe']);
43+
static::assertSame([], $data['jwe']['compression_methods']);
44+
static::assertArrayHasKey('jwe_builders', $data['jwe']);
45+
static::assertArrayHasKey('builder2', $data['jwe']['jwe_builders']);
46+
}
47+
48+
49+
#[Test]
50+
public function aJWEDecrypterCanBeCollectedWithoutACompressionMethodManager(): void
51+
{
52+
static::ensureKernelShutdown();
53+
$client = static::createClient();
54+
$container = $client->getContainer();
55+
static::assertInstanceOf(ContainerInterface::class, $container);
56+
57+
$jweDecrypterFactory = $container->get(JWEDecrypterFactoryService::class);
58+
static::assertInstanceOf(JWEDecrypterFactoryService::class, $jweDecrypterFactory);
59+
60+
$jweDecrypter = $jweDecrypterFactory->create(['RSA1_5', 'A256GCM']);
61+
62+
$jweCollector = new JWECollector();
63+
$jweCollector->addJWEDecrypter('decrypter2', $jweDecrypter);
64+
65+
$data = [];
66+
$jweCollector->collect($data, new Request(), new Response());
67+
68+
static::assertArrayHasKey('jwe', $data);
69+
static::assertArrayHasKey('compression_methods', $data['jwe']);
70+
static::assertSame([], $data['jwe']['compression_methods']);
71+
static::assertArrayHasKey('jwe_decrypters', $data['jwe']);
72+
static::assertArrayHasKey('decrypter2', $data['jwe']['jwe_decrypters']);
73+
}
74+
75+
#[Test]
76+
public function aJWELoaderCanBeCollectedWithoutACompressionMethodManager(): void
77+
{
78+
static::ensureKernelShutdown();
79+
$client = static::createClient();
80+
$container = $client->getContainer();
81+
static::assertInstanceOf(ContainerInterface::class, $container);
82+
83+
$jweLoaderFactory = $container->get(JWELoaderFactoryAlias::class);
84+
static::assertInstanceOf(JWELoaderFactoryAlias::class, $jweLoaderFactory);
85+
86+
$jweLoader = $jweLoaderFactory->create(['jwe_compact'], ['RSA1_5'], ['A256GCM']);
87+
88+
$jweCollector = new JWECollector();
89+
$jweCollector->addJWELoader('loader2', $jweLoader);
90+
91+
$data = [];
92+
$jweCollector->collect($data, new Request(), new Response());
93+
94+
static::assertArrayHasKey('jwe', $data);
95+
static::assertArrayHasKey('compression_methods', $data['jwe']);
96+
static::assertSame([], $data['jwe']['compression_methods']);
97+
static::assertArrayHasKey('jwe_loaders', $data['jwe']);
98+
static::assertArrayHasKey('loader2', $data['jwe']['jwe_loaders']);
99+
}
100+
}

0 commit comments

Comments
 (0)