diff --git a/tests/Alchemy/Tests/Phrasea/Model/Manipulator/ApiApplicationManipulatorTest.php b/tests/Alchemy/Tests/Phrasea/Model/Manipulator/ApiApplicationManipulatorTest.php new file mode 100644 index 0000000000..167d6577e5 --- /dev/null +++ b/tests/Alchemy/Tests/Phrasea/Model/Manipulator/ApiApplicationManipulatorTest.php @@ -0,0 +1,148 @@ +findAll()); + $application = $manipulator->create( + 'desktop-app', + ApiApplication::DESKTOP_TYPE, + 'Desktop application description', + 'http://desktop-app-url.net' + ); + $this->assertGreaterThan($nbApps, count(self::$DI['app']['repo.api-applications']->findAll())); + $this->assertNotNull($application->getClientId()); + $this->assertNotNull($application->getClientSecret()); + $this->assertNotNull($application->getNonce()); + $this->assertEquals('desktop-app', $application->getName()); + $this->assertEquals(ApiApplication::DESKTOP_TYPE, $application->getType()); + $this->assertEquals('http://desktop-app-url.net', $application->getWebsite()); + $this->assertEquals(ApiApplication::NATIVE_APP_REDIRECT_URI, $application->getRedirectUri()); + } + + public function testCreateWebApplication() + { + $manipulator = new ApiApplicationManipulator(self::$DI['app']['EM'], self::$DI['app']['repo.api-applications'], self::$DI['app']['random.medium']); + $nbApps = count(self::$DI['app']['repo.api-applications']->findAll()); + $application = $manipulator->create( + 'web-app', + ApiApplication::WEB_TYPE, + 'Desktop application description', + 'http://web-app-url.net', + self::$DI['user'], + 'http://web-app-url.net/callback' + ); + + $this->assertGreaterThan($nbApps, count(self::$DI['app']['repo.api-applications']->findAll())); + $this->assertNotNull($application->getClientId()); + $this->assertNotNull($application->getClientSecret()); + $this->assertNotNull($application->getNonce()); + $this->assertEquals('web-app', $application->getName()); + $this->assertEquals(ApiApplication::WEB_TYPE, $application->getType()); + $this->assertEquals('http://web-app-url.net', $application->getWebsite()); + $this->assertEquals('http://web-app-url.net/callback', $application->getRedirectUri()); + } + + public function testDelete() + { + $manipulator = new ApiApplicationManipulator(self::$DI['app']['EM'], self::$DI['app']['repo.api-applications'], self::$DI['app']['random.medium']); + $application = $manipulator->create( + 'desktop-app', + ApiApplication::DESKTOP_TYPE, + 'Desktop application description', + 'http://desktop-app-url.net' + ); + $countBefore = count(self::$DI['app']['repo.api-applications']->findAll()); + /** + * @todo Link accounts and tokens to application and tests if everything is deleted + */ + $manipulator->delete($application); + $this->assertGreaterThan(count(self::$DI['app']['repo.api-applications']->findAll()), $countBefore); + } + + public function testUpdate() + { + $manipulator = new ApiApplicationManipulator(self::$DI['app']['EM'], self::$DI['app']['repo.api-applications'], self::$DI['app']['random.medium']); + $application = $manipulator->create( + 'desktop-app', + ApiApplication::DESKTOP_TYPE, + 'Desktop application description', + 'http://desktop-app-url.net' + ); + $application->setName('new-desktop-app'); + $manipulator->update($application); + $application = self::$DI['app']['repo.api-applications']->find($application->getId()); + $this->assertEquals('new-desktop-app', $application->getName()); + } + + public function testSetType() + { + $manipulator = new ApiApplicationManipulator(self::$DI['app']['EM'], self::$DI['app']['repo.api-applications'], self::$DI['app']['random.medium']); + $application = $manipulator->create( + 'desktop-app', + ApiApplication::DESKTOP_TYPE, + 'Desktop application description', + 'http://desktop-app-url.net' + ); + try { + $manipulator->setType($application, 'invalid-type'); + $this->fail('Invalid argument exception should be raised'); + } catch (InvalidArgumentException $e) { + + } + } + + public function testSetRedirectUri() + { + $manipulator = new ApiApplicationManipulator(self::$DI['app']['EM'], self::$DI['app']['repo.api-applications'], self::$DI['app']['random.medium']); + $application = $manipulator->create( + 'desktop-app', + ApiApplication::DESKTOP_TYPE, + 'Desktop application description', + 'http://desktop-app-url.net' + ); + + $manipulator->setRedirectUri($application, 'invalid-url.com'); + $this->assertEquals(ApiApplication::NATIVE_APP_REDIRECT_URI, $application->getRedirectUri()); + + $application = $manipulator->create( + 'web-app', + ApiApplication::WEB_TYPE, + 'Desktop application description', + 'http://web-app-url.net', + self::$DI['user'], + 'http://web-app-url.net/callback' + ); + try { + $manipulator->setWebsiteUrl($application, 'invalid-url.com'); + $this->fail('Invalid argument exception should be raised'); + } catch (InvalidArgumentException $e) { + + } + } + + public function testSetWebsiteUrl() + { + $manipulator = new ApiApplicationManipulator(self::$DI['app']['EM'], self::$DI['app']['repo.api-applications'], self::$DI['app']['random.medium']); + $application = $manipulator->create( + 'desktop-app', + ApiApplication::DESKTOP_TYPE, + 'Desktop application description', + 'http://desktop-app-url.net' + ); + try { + $manipulator->setWebsiteUrl($application, 'invalid-url.com'); + $this->fail('Invalid argument exception should be raised'); + } catch (InvalidArgumentException $e) { + + } + } +}