From 1f370c97ed482a2217b49c949e93436d07f83157 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Tue, 9 Aug 2016 10:03:16 +0200 Subject: [PATCH] OCSController requires DataResponse The OCS Controller requires a DataResponse object to be returned. This means that all error handling will have to be done via exceptions thrown and handling in the middleware. --- lib/public/AppFramework/OCSController.php | 15 ++--- .../Controller/OCSControllerTest.php | 57 ++----------------- 2 files changed, 9 insertions(+), 63 deletions(-) diff --git a/lib/public/AppFramework/OCSController.php b/lib/public/AppFramework/OCSController.php index bd50f0a4017..6036fc6a5a8 100644 --- a/lib/public/AppFramework/OCSController.php +++ b/lib/public/AppFramework/OCSController.php @@ -88,26 +88,19 @@ abstract class OCSController extends ApiController { /** * Unwrap data and build ocs response * @param string $format json or xml - * @param array|DataResponse $data the data which should be transformed + * @param DataResponse $data the data which should be transformed * @since 8.1.0 + * @return OCSResponse */ - private function buildOCSResponse($format, $data) { - if ($data instanceof DataResponse) { - $data = $data->getData(); - } - + private function buildOCSResponse($format, DataResponse $data) { $params = [ 'statuscode' => 100, 'message' => 'OK', - 'data' => [], + 'data' => $data->getData(), 'itemscount' => '', 'itemsperpage' => '' ]; - foreach ($data as $key => $value) { - $params[$key] = $value; - } - return new OCSResponse( $format, $params['statuscode'], $params['message'], $params['data'], diff --git a/tests/lib/AppFramework/Controller/OCSControllerTest.php b/tests/lib/AppFramework/Controller/OCSControllerTest.php index 7dcbd189cd5..9c9214181a4 100644 --- a/tests/lib/AppFramework/Controller/OCSControllerTest.php +++ b/tests/lib/AppFramework/Controller/OCSControllerTest.php @@ -75,8 +75,8 @@ class OCSControllerTest extends \Test\TestCase { $expected = "\n" . "\n" . " \n" . - " failure\n" . - " 400\n" . + " ok\n" . + " 100\n" . " OK\n" . " \n" . " \n" . @@ -86,54 +86,12 @@ class OCSControllerTest extends \Test\TestCase { " \n" . "\n"; - $params = [ - 'data' => [ - 'test' => 'hi' - ], - 'statuscode' => 400 - ]; + $params = new DataResponse(['test' => 'hi']); $out = $controller->buildResponse($params, 'xml')->render(); $this->assertEquals($expected, $out); } - - public function testXMLDataResponse() { - $controller = new ChildOCSController('app', new Request( - [], - $this->getMockBuilder('\OCP\Security\ISecureRandom') - ->disableOriginalConstructor() - ->getMock(), - $this->getMockBuilder('\OCP\IConfig') - ->disableOriginalConstructor() - ->getMock() - )); - $expected = "\n" . - "\n" . - " \n" . - " failure\n" . - " 400\n" . - " OK\n" . - " \n" . - " \n" . - " \n" . - " \n" . - " hi\n" . - " \n" . - "\n"; - - $params = new DataResponse([ - 'data' => [ - 'test' => 'hi' - ], - 'statuscode' => 400 - ]); - - $out = $controller->buildResponse($params, 'xml')->render(); - $this->assertEquals($expected, $out); - } - - public function testJSON() { $controller = new ChildOCSController('app', new Request( [], @@ -144,14 +102,9 @@ class OCSControllerTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock() )); - $expected = '{"ocs":{"meta":{"status":"failure","statuscode":400,"message":"OK",' . + $expected = '{"ocs":{"meta":{"status":"ok","statuscode":100,"message":"OK",' . '"totalitems":"","itemsperpage":""},"data":{"test":"hi"}}}'; - $params = [ - 'data' => [ - 'test' => 'hi' - ], - 'statuscode' => 400 - ]; + $params = new DataResponse(['test' => 'hi']); $out = $controller->buildResponse($params, 'json')->render(); $this->assertEquals($expected, $out); -- 2.39.5