summaryrefslogtreecommitdiffstats
path: root/tests/unit/controller/UtilityApiControllerTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/controller/UtilityApiControllerTest.php')
-rw-r--r--tests/unit/controller/UtilityApiControllerTest.php132
1 files changed, 132 insertions, 0 deletions
diff --git a/tests/unit/controller/UtilityApiControllerTest.php b/tests/unit/controller/UtilityApiControllerTest.php
new file mode 100644
index 000000000..26403830f
--- /dev/null
+++ b/tests/unit/controller/UtilityApiControllerTest.php
@@ -0,0 +1,132 @@
+<?php
+/**
+ * ownCloud - News
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later. See the COPYING file.
+ *
+ * @author Alessandro Cosentino <cosenal@gmail.com>
+ * @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @copyright Alessandro Cosentino 2012
+ * @copyright Bernhard Posselt 2012, 2014
+ */
+
+namespace OCA\News\Controller;
+
+use \OCP\IRequest;
+
+use \OCA\News\Utility\ControllerTestUtility;
+
+require_once(__DIR__ . "/../../classloader.php");
+
+
+class ApiControllerTest extends ControllerTestUtility {
+
+ private $settings;
+ private $request;
+ private $newsAPI;
+ private $updater;
+ private $appName;
+
+ protected function setUp() {
+ $this->appName = 'news';
+ $this->settings = $this->getMockBuilder(
+ '\OCP\IConfig')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->request = $this->getMockBuilder(
+ '\OCP\IRequest')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->updater = $this->getMockBuilder(
+ '\OCA\News\Utility\Updater')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->newsAPI = new ApiController($this->appName, $this->request,
+ $this->updater, $this->settings);
+ }
+
+
+ private function assertDefaultAnnotations($methodName){
+ $annotations = array('NoAdminRequired', 'NoCSRFRequired', 'API');
+ $this->assertAnnotations($this->newsAPI, $methodName, $annotations);
+ }
+
+ public function testVersionAnnotations(){
+ $this->assertDefaultAnnotations('version');
+ }
+
+ public function testBeforeUpdateAnnotations(){
+ $annotations = array('NoCSRFRequired');
+ $this->assertAnnotations($this->newsAPI, 'beforeUpdate', $annotations);
+ }
+
+ public function testAfterUpdateAnnotations(){
+ $annotations = array('NoCSRFRequired');
+ $this->assertAnnotations($this->newsAPI, 'afterUpdate', $annotations);
+ }
+
+ public function testGetVersion(){
+ $this->settings->expects($this->once())
+ ->method('getAppValue')
+ ->with($this->equalTo($this->appName),
+ $this->equalTo('installed_version'))
+ ->will($this->returnValue('1.0'));
+
+ $response = $this->newsAPI->version();
+ $data = $response->getData();
+ $version = $data['version'];
+
+ $this->assertEquals('1.0', $version);
+ }
+
+
+ public function testBeforeUpdate(){
+ $this->updater->expects($this->once())
+ ->method('beforeUpdate');
+ $this->newsAPI->beforeUpdate();
+ }
+
+
+ public function testAfterUpdate(){
+ $this->updater->expects($this->once())
+ ->method('afterUpdate');
+ $this->newsAPI->afterUpdate();
+ }
+
+
+ public function testCorsAnnotations(){
+ $annotations = array('NoAdminRequired', 'NoCSRFRequired', 'PublicPage');
+ $this->assertAnnotations($this->newsAPI, 'cors', $annotations);
+ }
+
+
+ public function testCors() {
+ $this->request = $this->getRequest(array('server' => array()));
+ $this->newsAPI = new ApiController($this->appName, $this->request,
+ $this->updater, $this->settings);
+ $response = $this->newsAPI->cors();
+
+ $headers = $response->getHeaders();
+
+ $this->assertEquals('*', $headers['Access-Control-Allow-Origin']);
+ $this->assertEquals('PUT, POST, GET, DELETE', $headers['Access-Control-Allow-Methods']);
+ $this->assertEquals('false', $headers['Access-Control-Allow-Credentials']);
+ $this->assertEquals('Authorization, Content-Type', $headers['Access-Control-Allow-Headers']);
+ $this->assertEquals('1728000', $headers['Access-Control-Max-Age']);
+ }
+
+
+ public function testCorsUsesOriginIfGiven() {
+ $this->request = $this->getRequest(array('server' => array('HTTP_ORIGIN' => 'test')));
+ $this->newsAPI = new ApiController($this->appName, $this->request,
+ $this->updater, $this->settings);
+ $response = $this->newsAPI->cors();
+
+ $headers = $response->getHeaders();
+
+ $this->assertEquals('test', $headers['Access-Control-Allow-Origin']);
+ }
+
+
+}