X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2FWallabag%2FApiBundle%2FController%2FDeveloperControllerTest.php;h=2caeccf5f0fc8bc9275fa79e972c0a4ca7f3e6d2;hb=f808b01692a835673f328d7221ba8c212caa9b61;hp=d37cbbf9b04d360b464c83b5dbb54b821f103fe2;hpb=9fe87bc2e20fa95573287a61ef9798cc15648187;p=github%2Fwallabag%2Fwallabag.git diff --git a/tests/Wallabag/ApiBundle/Controller/DeveloperControllerTest.php b/tests/Wallabag/ApiBundle/Controller/DeveloperControllerTest.php index d37cbbf9..2caeccf5 100644 --- a/tests/Wallabag/ApiBundle/Controller/DeveloperControllerTest.php +++ b/tests/Wallabag/ApiBundle/Controller/DeveloperControllerTest.php @@ -15,7 +15,7 @@ class DeveloperControllerTest extends WallabagCoreTestCase $nbClients = $em->getRepository('WallabagApiBundle:Client')->findAll(); $crawler = $client->request('GET', '/developer/client/create'); - $this->assertEquals(200, $client->getResponse()->getStatusCode()); + $this->assertSame(200, $client->getResponse()->getStatusCode()); $form = $crawler->filter('button[type=submit]')->form(); @@ -25,7 +25,7 @@ class DeveloperControllerTest extends WallabagCoreTestCase $crawler = $client->submit($form, $data); - $this->assertEquals(200, $client->getResponse()->getStatusCode()); + $this->assertSame(200, $client->getResponse()->getStatusCode()); $newNbClients = $em->getRepository('WallabagApiBundle:Client')->findAll(); $this->assertGreaterThan(count($nbClients), count($newNbClients)); @@ -34,7 +34,7 @@ class DeveloperControllerTest extends WallabagCoreTestCase $this->assertContains('My app', $alert[0]); } - public function testCreateToken() + public function testCreateTokenFromPasswords() { $client = $this->getClient(); $apiClient = $this->createApiClientForUser('admin'); @@ -47,7 +47,7 @@ class DeveloperControllerTest extends WallabagCoreTestCase 'password' => 'mypassword', ]); - $this->assertEquals(200, $client->getResponse()->getStatusCode()); + $this->assertSame(200, $client->getResponse()->getStatusCode()); $data = json_decode($client->getResponse()->getContent(), true); $this->assertArrayHasKey('access_token', $data); @@ -56,6 +56,26 @@ class DeveloperControllerTest extends WallabagCoreTestCase $this->assertArrayHasKey('refresh_token', $data); } + public function testCreateTokenFromClientCredentialsOnly() + { + $client = $this->getClient(); + $apiClient = $this->createApiClientForUser('admin', ['client_credentials']); + + $client->request('POST', '/oauth/v2/token', [ + 'grant_type' => 'client_credentials', + 'client_id' => $apiClient->getPublicId(), + 'client_secret' => $apiClient->getSecret(), + ]); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + + $data = json_decode($client->getResponse()->getContent(), true); + $this->assertArrayHasKey('access_token', $data); + $this->assertArrayHasKey('expires_in', $data); + $this->assertArrayHasKey('token_type', $data); + // Client Credentials created-clients have no refresh tokens + } + public function testListingClient() { $this->logInAs('admin'); @@ -64,8 +84,8 @@ class DeveloperControllerTest extends WallabagCoreTestCase $nbClients = $em->getRepository('WallabagApiBundle:Client')->findAll(); $crawler = $client->request('GET', '/developer'); - $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->assertEquals(count($nbClients), $crawler->filter('ul[class=collapsible] li')->count()); + $this->assertSame(200, $client->getResponse()->getStatusCode()); + $this->assertSame(count($nbClients), $crawler->filter('ul[class=collapsible] li')->count()); } public function testDeveloperHowto() @@ -74,7 +94,7 @@ class DeveloperControllerTest extends WallabagCoreTestCase $client = $this->getClient(); $crawler = $client->request('GET', '/developer/howto/first-app'); - $this->assertEquals(200, $client->getResponse()->getStatusCode()); + $this->assertSame(200, $client->getResponse()->getStatusCode()); } public function testRemoveClient() @@ -89,8 +109,8 @@ class DeveloperControllerTest extends WallabagCoreTestCase $this->assertContains('no_client', $client->getResponse()->getContent()); $this->logInAs('bob'); - $client->request('GET', '/developer/client/delete/'.$adminApiClient->getId()); - $this->assertEquals(403, $client->getResponse()->getStatusCode()); + $client->request('GET', '/developer/client/delete/' . $adminApiClient->getId()); + $this->assertSame(403, $client->getResponse()->getStatusCode()); // Try to remove the admin's client with the good user $this->logInAs('admin'); @@ -103,7 +123,7 @@ class DeveloperControllerTest extends WallabagCoreTestCase ; $client->click($link); - $this->assertEquals(302, $client->getResponse()->getStatusCode()); + $this->assertSame(302, $client->getResponse()->getStatusCode()); $this->assertNull( $em->getRepository('WallabagApiBundle:Client')->find($adminApiClient->getId()), @@ -113,18 +133,19 @@ class DeveloperControllerTest extends WallabagCoreTestCase /** * @param string $username + * @param array $grantTypes * * @return Client */ - private function createApiClientForUser($username) + private function createApiClientForUser($username, $grantTypes = ['password']) { $client = $this->getClient(); $em = $client->getContainer()->get('doctrine.orm.entity_manager'); $userManager = $client->getContainer()->get('fos_user.user_manager'); - $user = $userManager->findUserBy(array('username' => $username)); + $user = $userManager->findUserBy(['username' => $username]); $apiClient = new Client($user); $apiClient->setName('My app'); - $apiClient->setAllowedGrantTypes(['password']); + $apiClient->setAllowedGrantTypes($grantTypes); $em->persist($apiClient); $em->flush();