diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2016-09-05 21:00:53 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2016-09-06 11:57:39 +0200 |
commit | 3c55fe6bab73dabfb92e95e26f205fbb7b5781ec (patch) | |
tree | 4ee9ae8be1e3046cb98b0bd92e800853fdd5eaa8 /tests/lib/AppFramework | |
parent | 314afcecf9080c78f485039852e30efee2e112c6 (diff) | |
download | nextcloud-server-3c55fe6bab73dabfb92e95e26f205fbb7b5781ec.tar.gz nextcloud-server-3c55fe6bab73dabfb92e95e26f205fbb7b5781ec.zip |
Split OCS version handling
This cleans up a bit the OCSController/Middleware. Since the 2 versions
of OCS differ a bit. Moved a lot of stuff internal since it is of no
concern to the outside.
Diffstat (limited to 'tests/lib/AppFramework')
-rw-r--r-- | tests/lib/AppFramework/Controller/OCSControllerTest.php | 63 | ||||
-rw-r--r-- | tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php | 50 |
2 files changed, 85 insertions, 28 deletions
diff --git a/tests/lib/AppFramework/Controller/OCSControllerTest.php b/tests/lib/AppFramework/Controller/OCSControllerTest.php index 9c9214181a4..c1f8e4a6574 100644 --- a/tests/lib/AppFramework/Controller/OCSControllerTest.php +++ b/tests/lib/AppFramework/Controller/OCSControllerTest.php @@ -27,6 +27,8 @@ namespace Test\AppFramework\Controller; use OC\AppFramework\Http\Request; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCSController; +use OCP\IConfig; +use OCP\Security\ISecureRandom; class ChildOCSController extends OCSController {} @@ -40,10 +42,10 @@ class OCSControllerTest extends \Test\TestCase { 'HTTP_ORIGIN' => 'test', ], ], - $this->getMockBuilder('\OCP\Security\ISecureRandom') + $this->getMockBuilder(ISecureRandom::class) ->disableOriginalConstructor() ->getMock(), - $this->getMockBuilder('\OCP\IConfig') + $this->getMockBuilder(IConfig::class) ->disableOriginalConstructor() ->getMock() ); @@ -65,13 +67,15 @@ class OCSControllerTest extends \Test\TestCase { public function testXML() { $controller = new ChildOCSController('app', new Request( [], - $this->getMockBuilder('\OCP\Security\ISecureRandom') + $this->getMockBuilder(ISecureRandom::class) ->disableOriginalConstructor() ->getMock(), - $this->getMockBuilder('\OCP\IConfig') + $this->getMockBuilder(IConfig::class) ->disableOriginalConstructor() ->getMock() )); + $controller->setOCSVersion(1); + $expected = "<?xml version=\"1.0\"?>\n" . "<ocs>\n" . " <meta>\n" . @@ -95,13 +99,14 @@ class OCSControllerTest extends \Test\TestCase { public function testJSON() { $controller = new ChildOCSController('app', new Request( [], - $this->getMockBuilder('\OCP\Security\ISecureRandom') + $this->getMockBuilder(ISecureRandom::class) ->disableOriginalConstructor() ->getMock(), - $this->getMockBuilder('\OCP\IConfig') + $this->getMockBuilder(IConfig::class) ->disableOriginalConstructor() ->getMock() )); + $controller->setOCSVersion(1); $expected = '{"ocs":{"meta":{"status":"ok","statuscode":100,"message":"OK",' . '"totalitems":"","itemsperpage":""},"data":{"test":"hi"}}}'; $params = new DataResponse(['test' => 'hi']); @@ -110,5 +115,51 @@ class OCSControllerTest extends \Test\TestCase { $this->assertEquals($expected, $out); } + public function testXMLV2() { + $controller = new ChildOCSController('app', new Request( + [], + $this->getMockBuilder(ISecureRandom::class) + ->disableOriginalConstructor() + ->getMock(), + $this->getMockBuilder(IConfig::class) + ->disableOriginalConstructor() + ->getMock() + )); + $controller->setOCSVersion(2); + + $expected = "<?xml version=\"1.0\"?>\n" . + "<ocs>\n" . + " <meta>\n" . + " <status>ok</status>\n" . + " <statuscode>200</statuscode>\n" . + " <message>OK</message>\n" . + " </meta>\n" . + " <data>\n" . + " <test>hi</test>\n" . + " </data>\n" . + "</ocs>\n"; + + $params = new DataResponse(['test' => 'hi']); + + $out = $controller->buildResponse($params, 'xml')->render(); + $this->assertEquals($expected, $out); + } + + public function testJSONV2() { + $controller = new ChildOCSController('app', new Request( + [], + $this->getMockBuilder(ISecureRandom::class) + ->disableOriginalConstructor() + ->getMock(), + $this->getMockBuilder(IConfig::class) + ->disableOriginalConstructor() + ->getMock() + )); + $controller->setOCSVersion(2); + $expected = '{"ocs":{"meta":{"status":"ok","statuscode":200,"message":"OK"},"data":{"test":"hi"}}}'; + $params = new DataResponse(['test' => 'hi']); + $out = $controller->buildResponse($params, 'json')->render(); + $this->assertEquals($expected, $out); + } } diff --git a/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php b/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php index b2295fdc26d..5b88872d905 100644 --- a/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php @@ -21,12 +21,16 @@ */ namespace Test\AppFramework\Middleware; +use OC\AppFramework\OCS\BaseResponse; +use OC\AppFramework\OCS\V1Response; +use OC\AppFramework\OCS\V2Response; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\OCS\OCSBadRequestException; use OCP\AppFramework\OCS\OCSException; use OCP\AppFramework\OCS\OCSForbiddenException; use OCP\AppFramework\OCS\OCSNotFoundException; +use OCP\AppFramework\OCSController; use OCP\IRequest; use OC\AppFramework\Middleware\OCSMiddleware; @@ -41,16 +45,15 @@ class OCSMiddlewareTest extends \Test\TestCase { protected function setUp() { parent::setUp(); - $this->request = $this->getMockBuilder('OCP\IRequest') + $this->request = $this->getMockBuilder(IRequest::class) ->getMock(); - } public function dataAfterException() { - $OCSController = $this->getMockBuilder('OCP\AppFramework\OCSController') + $OCSController = $this->getMockBuilder(OCSController::class) ->disableOriginalConstructor() ->getMock(); - $controller = $this->getMockBuilder('OCP\AppFramework\Controller') + $controller = $this->getMockBuilder(Controller::class) ->disableOriginalConstructor() ->getMock(); @@ -93,25 +96,26 @@ class OCSMiddlewareTest extends \Test\TestCase { ->method('getScriptName') ->willReturn('/ocs/v1.php'); $OCSMiddleware = new OCSMiddleware($this->request); + $OCSMiddleware->beforeController($controller, 'method'); try { $result = $OCSMiddleware->afterException($controller, 'method', $exception); $this->assertFalse($forward); - $this->assertInstanceOf('OCP\AppFramework\Http\OCSResponse', $result); + $this->assertInstanceOf(V1Response::class, $result); - $this->assertSame($message, $this->invokePrivate($result, 'message')); + $this->assertSame($message, $this->invokePrivate($result, 'statusMessage')); if ($exception->getCode() === 0) { - $this->assertSame(\OCP\API::RESPOND_UNKNOWN_ERROR, $this->invokePrivate($result, 'statuscode')); + $this->assertSame(\OCP\API::RESPOND_UNKNOWN_ERROR, $result->getOCSStatus()); } else { - $this->assertSame($code, $this->invokePrivate($result, 'statuscode')); + $this->assertSame($code, $result->getOCSStatus()); } if ($exception instanceof OCSForbiddenException) { $this->assertSame(Http::STATUS_UNAUTHORIZED, $result->getStatus()); } else { - $this->assertSame(200, $result->getStatus()); + $this->assertSame(Http::STATUS_OK, $result->getStatus()); } } catch (\Exception $e) { $this->assertTrue($forward); @@ -133,18 +137,19 @@ class OCSMiddlewareTest extends \Test\TestCase { ->method('getScriptName') ->willReturn('/ocs/v2.php'); $OCSMiddleware = new OCSMiddleware($this->request); + $OCSMiddleware->beforeController($controller, 'method'); try { $result = $OCSMiddleware->afterException($controller, 'method', $exception); $this->assertFalse($forward); - $this->assertInstanceOf('OCP\AppFramework\Http\OCSResponse', $result); + $this->assertInstanceOf(V2Response::class, $result); - $this->assertSame($message, $this->invokePrivate($result, 'message')); + $this->assertSame($message, $this->invokePrivate($result, 'statusMessage')); if ($exception->getCode() === 0) { - $this->assertSame(\OCP\API::RESPOND_UNKNOWN_ERROR, $this->invokePrivate($result, 'statuscode')); + $this->assertSame(\OCP\API::RESPOND_UNKNOWN_ERROR, $result->getOCSStatus()); } else { - $this->assertSame($code, $this->invokePrivate($result, 'statuscode')); + $this->assertSame($code, $result->getOCSStatus()); } $this->assertSame($code, $result->getStatus()); } catch (\Exception $e) { @@ -167,18 +172,19 @@ class OCSMiddlewareTest extends \Test\TestCase { ->method('getScriptName') ->willReturn('/mysubfolder/ocs/v2.php'); $OCSMiddleware = new OCSMiddleware($this->request); + $OCSMiddleware->beforeController($controller, 'method'); try { $result = $OCSMiddleware->afterException($controller, 'method', $exception); $this->assertFalse($forward); - $this->assertInstanceOf('OCP\AppFramework\Http\OCSResponse', $result); + $this->assertInstanceOf(V2Response::class, $result); - $this->assertSame($message, $this->invokePrivate($result, 'message')); + $this->assertSame($message, $this->invokePrivate($result, 'statusMessage')); if ($exception->getCode() === 0) { - $this->assertSame(\OCP\API::RESPOND_UNKNOWN_ERROR, $this->invokePrivate($result, 'statuscode')); + $this->assertSame(\OCP\API::RESPOND_UNKNOWN_ERROR, $result->getOCSStatus()); } else { - $this->assertSame($code, $this->invokePrivate($result, 'statuscode')); + $this->assertSame($code, $result->getOCSStatus()); } $this->assertSame($code, $result->getStatus()); } catch (\Exception $e) { @@ -188,10 +194,10 @@ class OCSMiddlewareTest extends \Test\TestCase { } public function dataAfterController() { - $OCSController = $this->getMockBuilder('OCP\AppFramework\OCSController') + $OCSController = $this->getMockBuilder(OCSController::class) ->disableOriginalConstructor() ->getMock(); - $controller = $this->getMockBuilder('OCP\AppFramework\Controller') + $controller = $this->getMockBuilder(Controller::class) ->disableOriginalConstructor() ->getMock(); @@ -225,10 +231,10 @@ class OCSMiddlewareTest extends \Test\TestCase { if ($converted === false) { $this->assertSame($response, $newResponse); } else { - $this->assertInstanceOf('\OCP\AppFramework\Http\OCSResponse', $newResponse); + $this->assertInstanceOf(BaseResponse::class, $newResponse); /** @var Http\OCSResponse $newResponse */ - $this->assertSame($response->getData()['message'], $this->invokePrivate($newResponse, 'message')); - $this->assertSame(\OCP\API::RESPOND_UNAUTHORISED, $this->invokePrivate($newResponse, 'statuscode')); + $this->assertSame($response->getData()['message'], $this->invokePrivate($newResponse, 'statusMessage')); + $this->assertSame(\OCP\API::RESPOND_UNAUTHORISED, $newResponse->getOCSStatus()); $this->assertSame(Http::STATUS_UNAUTHORIZED, $newResponse->getStatus()); } } |