public function testCreateClient() { $container = ContainerLoader::buildTestContainer(); $command = new CreateClientCommand(); $command->setContainer($container); $client_id = 'Client-ID-' . rand(); $redirectUris = 'http://brentertainment.com'; $grantTypes = 'authorization_code,client_credentials'; $scope = 'scope1'; // ensure the scope exists $scopeStorage = $container->get('oauth2.storage.scope'); if (!$scopeStorage->scopeExists($scope)) { $scopeManager = $container->get('oauth2.scope_manager'); $scopeManager->createScope($scope, 'test scope'); } $input = new ArgvInput(array('command', $client_id, $redirectUris, $grantTypes, $scope)); $output = new BufferedOutput(); $statusCode = $command->run($input, $output); $this->assertEquals(0, $statusCode, $output->fetch()); // verify client details have been stored $storage = $container->get('oauth2.storage.client_credentials'); $client = $storage->getClientDetails($client_id); $this->assertNotNull($client); $this->assertEquals($redirectUris, $client['redirect_uri']); $this->assertEquals(explode(',', $grantTypes), $client['grant_types']); // verify client scope has been stored $clientScope = $storage->getClientScope($client_id); $this->assertEquals($scope, $clientScope); }
public function testCreate() { $container = ContainerLoader::buildTestContainer(); $em = $container->get('doctrine.orm.entity_manager'); $client = new Client(); $client->setClientId($token = 'test-client-' . rand()); $client->setClientSecret('very-secure'); $client->setRedirectUri(array('http://brentertainment.com')); $em->persist($client); $em->flush(); $public_key = new ClientPublicKey(); $public_key->setClient($client); // create and set the public key $res = openssl_pkey_new(); // Extract the public key from $res to $pubKey $pubKeyDetails = openssl_pkey_get_details($res); $pubKey = $pubKeyDetails['key']; $public_key->setPublicKey($pubKey); $em->persist($public_key); $em->flush(); // test direct access $stored = $em->find('OAuth2\\ServerBundle\\Entity\\ClientPublicKey', array('client_id' => $client->getClientId())); $this->assertNotNull($stored); $this->assertEquals($pubKey, $stored->getPublicKey()); }
public function testOpenIdConfig() { $openIdConfig = <<<EOF <?xml version="1.0"?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> <parameters> <parameter key="oauth2.server.config" type="collection"> <parameter key="use_openid_connect">true</parameter> <parameter key="issuer">oauth2-server-bundle</parameter> </parameter> </parameters> </container> EOF; file_put_contents($tmpFile = tempnam(sys_get_temp_dir(), 'openid-config'), $openIdConfig); $container = ContainerLoader::buildTestContainer(array(__DIR__ . '/../vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml', $tmpFile)); $config = $container->getParameter('oauth2.server.config'); $server = $container->get('oauth2.server'); $this->assertTrue($server->getConfig('use_openid_connect')); $this->assertNotNull($server->getStorage('public_key')); $clientId = 'test-client-' . rand(); $server->getStorage('public_key')->keys['public_key'] = file_get_contents(__DIR__ . '/../vendor/bshaffer/oauth2-server-php/test/config/keys/id_rsa.pub'); $server->getStorage('public_key')->keys['private_key'] = file_get_contents(__DIR__ . '/../vendor/bshaffer/oauth2-server-php/test/config/keys/id_rsa'); $server->getStorage('client_credentials')->setClientDetails($clientId, 'test-client-secret'); $request = new Request(array('client_id' => $clientId, 'redirect_uri' => 'http://brentertainment.com', 'response_type' => 'code', 'scope' => 'openid', 'state' => 'xyz')); $response = new Response(); $server->handleAuthorizeRequest($request, $response, true); $parts = parse_url($response->getHttpHeader('Location')); parse_str($parts['query'], $query); $code = $server->getStorage('authorization_code')->getAuthorizationCode($query['code']); $this->assertArrayHasKey('id_token', $code); }
public function testCreate() { $container = ContainerLoader::buildTestContainer(); $em = $container->get('doctrine.orm.entity_manager'); $scope = new Scope(); $scope->setScope($name = 'test-scope-' . rand()); $scope->setDescription('A Scope for Testing'); $em->persist($scope); $em->flush(); $stored = $em->find('OAuth2\\ServerBundle\\Entity\\Scope', array('scope' => $name)); $this->assertNotNull($stored); $this->assertEquals($name, $stored->getScope()); $this->assertEquals($scope->getDescription(), $stored->getDescription()); }
public function testCreate() { $container = ContainerLoader::buildTestContainer(); $em = $container->get('doctrine.orm.entity_manager'); $refresh_token = new RefreshToken(); $refresh_token->setToken($token = 'test-token-' . rand()); $refresh_token->setExpires(new \DateTime('+10 minutes')); // ten minutes from now $em->persist($refresh_token); $em->flush(); $stored = $em->find('OAuth2\\ServerBundle\\Entity\\RefreshToken', array('token' => $token)); $this->assertNotNull($stored); $this->assertEquals($token, $stored->getToken()); $this->assertEquals($refresh_token->getExpires(), $stored->getExpires()); }
public function testCreate() { $container = ContainerLoader::buildTestContainer(); $em = $container->get('doctrine.orm.entity_manager'); $client = new Client(); $client->setClientId($client_id = 'This Is My Client ID ' . rand()); $client->setClientSecret('very-secure'); $client->setRedirectUri(array('http://brentertainment.com')); $em->persist($client); $em->flush(); $stored = $em->find('OAuth2\\ServerBundle\\Entity\\Client', array('client_id' => $client_id)); $this->assertNotNull($stored); $this->assertEquals($client_id, $stored->getClientId()); $this->assertEquals($client->getClientSecret(), $stored->getClientSecret()); $this->assertEquals($client->getRedirectUri(), $stored->getRedirectUri()); }
public function testCreate() { $container = ContainerLoader::buildTestContainer(); $em = $container->get('doctrine.orm.entity_manager'); $user = new User(); $user->setUsername($name = 'test-user-' . rand()); $user->setPassword('very-secure'); $user->setSalt(sha1(time())); $em->persist($user); $em->flush(); $stored = $em->find('OAuth2\\ServerBundle\\Entity\\User', array('username' => $name)); $this->assertNotNull($stored); $this->assertEquals($name, $stored->getUsername()); $this->assertEquals($user->getPassword(), $stored->getPassword()); $this->assertEquals($user->getSalt(), $stored->getSalt()); }
public function testCreate() { $container = ContainerLoader::buildTestContainer(); $em = $container->get('doctrine.orm.entity_manager'); $authcode = new AuthorizationCode(); $authcode->setCode($code = 'test-code-' . rand()); $authcode->setExpires(new \DateTime('+10 minutes')); // ten minutes from now $authcode->setRedirectUri('http://brentertainment.com'); $em->persist($authcode); $em->flush(); $stored = $em->find('OAuth2\\ServerBundle\\Entity\\AuthorizationCode', array('code' => $code)); $this->assertNotNull($stored); $this->assertEquals($code, $stored->getCode()); $this->assertEquals($authcode->getExpires(), $stored->getExpires()); $this->assertEquals($authcode->getRedirectUri(), $stored->getRedirectUri()); }
public function testOpenIdConfig() { $container = ContainerLoader::buildTestContainer(array(__DIR__ . '/../../vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml')); $controller = new AuthorizeController(); $controller->setContainer($container); $clientId = 'test-client-' . rand(); $server = $container->get('oauth2.server'); $server->getStorage('client_credentials')->setClientDetails($clientId, 'test-client-secret', 'http://brentertainment.com'); $request = new Request(array('client_id' => $clientId, 'response_type' => 'code', 'scope' => 'openid', 'state' => 'xyz', 'foo' => 'bar', 'nonce' => '123')); $container->set('oauth2.request', $request); $params = $controller->validateAuthorizeAction(); $this->assertArrayHasKey('nonce', $params['qs'], 'optional included param'); $this->assertArrayNotHasKey('foo', $params['qs'], 'invalid included param'); $this->assertArrayNotHasKey('redirect_uri', $params['qs'], 'optional excluded param'); $loader = new \Twig_Loader_Filesystem(__DIR__ . '/../../Resources/views'); $twig = new \Twig_Environment($loader); $template = $twig->loadTemplate('Authorize/authorize.html.twig'); $html = $template->render($params); $this->assertContains(htmlentities(http_build_query($params['qs'])), $html); }
<?php use Doctrine\ORM\Tools\Console\ConsoleRunner; use OAuth2\ServerBundle\Tests\ContainerLoader; // autoloading, etc require_once __DIR__ . '/bootstrap.php'; // create "test" service container $container = ContainerLoader::buildTestContainer(); $entityManager = $container->get('doctrine.orm.entity_manager'); return ConsoleRunner::createHelperSet($entityManager);