Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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 <peter.mead@staysafeapp.com>
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‎

Lines changed: 3 additions & 3 deletions
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
}
Lines changed: 100 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /