public function testGenericProvider()
{
$clientConfig = ['type' => 'generic', 'client_id' => 'abc', 'client_secret' => '123', 'redirect_route' => 'foo_bar_route', 'redirect_params' => [], 'provider_class' => 'Foo\\Bar\\Provider', 'client_class' => 'Foo\\Bar\\Client', 'provider_options' => ['foo' => true, 'bar' => 'baz', 'cool_stuff' => ['pizza', 'popcorn']]];
$this->configuration = new ContainerBuilder();
$loader = new KnpUOAuth2ClientExtension(false);
$config = ['clients' => ['custom_provider' => $clientConfig]];
$loader->load([$config], $this->configuration);
$providerDefinition = $this->configuration->getDefinition('knpu.oauth2.provider.custom_provider');
$this->assertEquals('Foo\\Bar\\Provider', $providerDefinition->getClass());
$this->assertEquals(['Foo\\Bar\\Provider', ['clientId' => 'abc', 'clientSecret' => '123', 'foo' => true, 'bar' => 'baz', 'cool_stuff' => ['pizza', 'popcorn']], 'foo_bar_route', []], $providerDefinition->getArguments());
// the custom class is used
$clientDefinition = $this->configuration->getDefinition('knpu.oauth2.client.custom_provider');
$this->assertEquals('Foo\\Bar\\Client', $clientDefinition->getClass());
}