|
9 | 9 | class JWKTest extends TestCase |
10 | 10 | { |
11 | 11 | private static $keys; |
12 | | - private static $privKey1; |
13 | | - private static $privKey2; |
| 12 | + |
| 13 | + public static function setUpBeforeClass(): void |
| 14 | + { |
| 15 | + $jwkSet = json_decode( |
| 16 | + file_get_contents(__DIR__ . '/data/rsa-jwkset.json'), |
| 17 | + true |
| 18 | + ); |
| 19 | + self::$keys = JWK::parseKeySet($jwkSet); |
| 20 | + } |
14 | 21 |
|
15 | 22 | public function testMissingKty() |
16 | 23 | { |
@@ -84,16 +91,33 @@ public function testParseKeyWithEmptyDValue() |
84 | 91 | $this->assertTrue(\is_array($keys)); |
85 | 92 | } |
86 | 93 |
|
87 | | - public function testParseJwkKeySet() |
| 94 | + /** @dataProvider provideParseJwkKeySet */ |
| 95 | + public function testParseJwkKeySet($jwkFile, $keyId, $pubkeyFile) |
88 | 96 | { |
89 | 97 | $jwkSet = json_decode( |
90 | | - file_get_contents(__DIR__ . '/data/rsa-jwkset.json'), |
| 98 | + file_get_contents(__DIR__ . '/data/' . $jwkFile), |
91 | 99 | true |
92 | 100 | ); |
93 | 101 | $keys = JWK::parseKeySet($jwkSet); |
94 | 102 | $this->assertTrue(\is_array($keys)); |
95 | | - $this->assertArrayHasKey('jwk1', $keys); |
96 | | - self::$keys = $keys; |
| 103 | + $this->assertArrayHasKey($keyId, $keys); |
| 104 | + |
| 105 | + // verify public key |
| 106 | + $keyMaterial = $keys[$keyId]->getKeyMaterial(); |
| 107 | + $publicKey = openssl_pkey_get_details($keyMaterial)['key']; |
| 108 | + |
| 109 | + $this->assertEquals( |
| 110 | + file_get_contents(__DIR__ . '/data/' . $pubkeyFile), |
| 111 | + $publicKey |
| 112 | + ); |
| 113 | + } |
| 114 | + |
| 115 | + public function provideParseJwkKeySet() |
| 116 | + { |
| 117 | + return [ |
| 118 | + ['rsa-jwkset.json', 'jwk1', 'rsa1-public.pub'], |
| 119 | + ['rsa-jwkset-2.json', 'jwk2', 'rsa-jwk2-public.pub'], |
| 120 | + ]; |
97 | 121 | } |
98 | 122 |
|
99 | 123 | public function testParseJwkKey_empty() |
|
0 commit comments