1010use SimpleSAML \Module \oidc \Codebooks \RoutesEnum ;
1111use SimpleSAML \Module \oidc \ModuleConfig ;
1212use SimpleSAML \Module \oidc \Services \OpMetadataService ;
13+ use SimpleSAML \Module \oidc \Utils \ClaimTranslatorExtractor ;
14+ use SimpleSAML \OpenID \Codebooks \ClaimsEnum ;
1315
1416/**
1517 * @covers \SimpleSAML\Module\oidc\Services\OpMetadataService
1618 */
1719class OpMetadataServiceTest extends TestCase
1820{
1921 protected MockObject $ moduleConfigMock ;
22+ protected MockObject $ claimTranslatorExtractorMock ;
2023
2124 /**
2225 * @throws \Exception
@@ -46,14 +49,24 @@ public function setUp(): void
4649 $ signer = $ this ->createMock (Rsa::class);
4750 $ signer ->method ('algorithmId ' )->willReturn ('RS256 ' );
4851 $ this ->moduleConfigMock ->method ('getProtocolSigner ' )->willReturn ($ signer );
52+
53+ $ this ->claimTranslatorExtractorMock = $ this ->createMock (ClaimTranslatorExtractor::class);
4954 }
5055
5156 /**
5257 * @throws \Exception
5358 */
54- protected function prepareMockedInstance (): OpMetadataService
55- {
56- return new OpMetadataService ($ this ->moduleConfigMock );
59+ protected function sut (
60+ ?ModuleConfig $ moduleConfig = null ,
61+ ?ClaimTranslatorExtractor $ claimTranslatorExtractor = null ,
62+ ): OpMetadataService {
63+ $ moduleConfig = $ moduleConfig ?? $ this ->moduleConfigMock ;
64+ $ claimTranslatorExtractor = $ claimTranslatorExtractor ?? $ this ->claimTranslatorExtractorMock ;
65+
66+ return new OpMetadataService (
67+ $ moduleConfig ,
68+ $ claimTranslatorExtractor ,
69+ );
5770 }
5871
5972 /**
@@ -63,7 +76,7 @@ public function testItIsInitializable(): void
6376 {
6477 $ this ->assertInstanceOf (
6578 OpMetadataService::class,
66- $ this ->prepareMockedInstance (),
79+ $ this ->sut (),
6780 );
6881 }
6982
@@ -102,7 +115,23 @@ public function testItReturnsExpectedMetadata(): void
102115 'backchannel_logout_supported ' => true ,
103116 'backchannel_logout_session_supported ' => true ,
104117 ],
105- $ this ->prepareMockedInstance ()->getMetadata (),
118+ $ this ->sut ()->getMetadata (),
119+ );
120+ }
121+
122+ public function testCanShowClaimsSupportedClaim (): void
123+ {
124+ $ this ->moduleConfigMock ->method ('getProtocolDiscoveryShowClaimsSupported ' )->willReturn (true );
125+ $ this ->claimTranslatorExtractorMock ->method ('getSupportedClaims ' )->willReturn (['sample ' ]);
126+
127+ $ sut = $ this ->sut ();
128+ $ this ->assertArrayHasKey (
129+ ClaimsEnum::ClaimsSupported->value ,
130+ $ sut ->getMetadata (),
131+ );
132+
133+ $ this ->assertTrue (
134+ in_array ('sample ' , $ sut ->getMetadata ()[ClaimsEnum::ClaimsSupported->value ], true ),
106135 );
107136 }
108137}
0 commit comments