1818use Symfony \Bundle \SecurityBundle \DependencyInjection \Security \Factory \AccessTokenFactory ;
1919use Symfony \Component \Config \Definition \Builder \ArrayNodeDefinition ;
2020use Symfony \Component \Config \Definition \Exception \InvalidConfigurationException ;
21+ use Symfony \Component \DependencyInjection \ChildDefinition ;
2122use Symfony \Component \DependencyInjection \ContainerBuilder ;
23+ use Symfony \Component \DependencyInjection \Reference ;
2224
2325class AccessTokenFactoryTest extends TestCase
2426{
@@ -76,7 +78,12 @@ public function testOidcUserInfoTokenHandlerConfigurationWithExistingClient()
7678 {
7779 $ container = new ContainerBuilder ();
7880 $ config = [
79- 'token_handler ' => ['oidc_user_info ' => ['client ' => 'oidc.client ' ]],
81+ 'token_handler ' => [
82+ 'oidc_user_info ' => [
83+ 'base_uri ' => 'https://www.example.com/realms/demo/protocol/openid-connect/userinfo ' ,
84+ 'client ' => 'oidc.client ' ,
85+ ],
86+ ],
8087 ];
8188
8289 $ factory = new AccessTokenFactory ($ this ->createTokenHandlerFactories ());
@@ -86,14 +93,24 @@ public function testOidcUserInfoTokenHandlerConfigurationWithExistingClient()
8693
8794 $ this ->assertTrue ($ container ->hasDefinition ('security.authenticator.access_token.firewall1 ' ));
8895 $ this ->assertTrue ($ container ->hasDefinition ('security.access_token_handler.firewall1 ' ));
89- $ this ->assertFalse ($ container ->hasDefinition ('http_client.security.access_token_handler.oidc_user_info ' ));
96+
97+ $ expected = [
98+ 'index_0 ' => (new ChildDefinition ('security.access_token_handler.oidc_user_info.http_client ' ))
99+ ->setFactory ([new Reference ('oidc.client ' ), 'withOptions ' ])
100+ ->replaceArgument (0 , ['base_uri ' => 'https://www.example.com/realms/demo/protocol/openid-connect/userinfo ' ]),
101+ 'index_2 ' => 'sub ' ,
102+ ];
103+ $ this ->assertEquals ($ expected , $ container ->getDefinition ('security.access_token_handler.firewall1 ' )->getArguments ());
90104 }
91105
92- public function testOidcUserInfoTokenHandlerConfigurationWithClientCreation ()
106+ /**
107+ * @dataProvider getOidcUserInfoConfiguration
108+ */
109+ public function testOidcUserInfoTokenHandlerConfigurationWithBaseUri (array |string $ configuration )
93110 {
94111 $ container = new ContainerBuilder ();
95112 $ config = [
96- 'token_handler ' => ['oidc_user_info ' => [ ' client ' => [ ' base_uri ' => ' https://www.example.com/realms/demo/protocol/openid-connect/userinfo ' ]] ],
113+ 'token_handler ' => ['oidc_user_info ' => $ configuration ],
97114 ];
98115
99116 $ factory = new AccessTokenFactory ($ this ->createTokenHandlerFactories ());
@@ -103,7 +120,19 @@ public function testOidcUserInfoTokenHandlerConfigurationWithClientCreation()
103120
104121 $ this ->assertTrue ($ container ->hasDefinition ('security.authenticator.access_token.firewall1 ' ));
105122 $ this ->assertTrue ($ container ->hasDefinition ('security.access_token_handler.firewall1 ' ));
106- $ this ->assertTrue ($ container ->hasDefinition ('http_client.security.access_token_handler.oidc_user_info ' ));
123+
124+ $ expected = [
125+ 'index_0 ' => (new ChildDefinition ('security.access_token_handler.oidc_user_info.http_client ' ))
126+ ->replaceArgument (0 , ['base_uri ' => 'https://www.example.com/realms/demo/protocol/openid-connect/userinfo ' ]),
127+ 'index_2 ' => 'sub ' ,
128+ ];
129+ $ this ->assertEquals ($ expected , $ container ->getDefinition ('security.access_token_handler.firewall1 ' )->getArguments ());
130+ }
131+
132+ public static function getOidcUserInfoConfiguration (): iterable
133+ {
134+ yield [['base_uri ' => 'https://www.example.com/realms/demo/protocol/openid-connect/userinfo ' ]];
135+ yield ['https://www.example.com/realms/demo/protocol/openid-connect/userinfo ' ];
107136 }
108137
109138 public function testMultipleTokenHandlersSet ()
@@ -114,7 +143,7 @@ public function testMultipleTokenHandlersSet()
114143 $ config = [
115144 'token_handler ' => [
116145 'id ' => 'in_memory_token_handler_service_id ' ,
117- 'oidc_user_info ' => [ ' client ' => ' oidc.client ' ] ,
146+ 'oidc_user_info ' => ' https://www.example.com/realms/demo/protocol/openid-connect/userinfo ' ,
118147 ],
119148 ];
120149
0 commit comments