diff options
author | Lukas Reschke <lukas@statuscode.ch> | 2016-07-22 15:15:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-22 15:15:20 +0200 |
commit | 9dafc516a7b18345d869e7b08eae88ae0510fb39 (patch) | |
tree | 3f9c5669113f81cd2a8a04438df8242f01759443 | |
parent | af3950146504fe0a14ef38c24c549ffeda74acf6 (diff) | |
parent | 72b06d250de023d9b0f9bcb9ec93896e3b4c55d9 (diff) | |
download | nextcloud-server-9dafc516a7b18345d869e7b08eae88ae0510fb39.tar.gz nextcloud-server-9dafc516a7b18345d869e7b08eae88ae0510fb39.zip |
Merge pull request #524 from nextcloud/ocs_appframework_status_code
Set proper status code in OCS AppFramework Middleware
-rw-r--r-- | lib/private/AppFramework/Middleware/OCSMiddleware.php | 7 | ||||
-rw-r--r-- | tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php | 36 |
2 files changed, 41 insertions, 2 deletions
diff --git a/lib/private/AppFramework/Middleware/OCSMiddleware.php b/lib/private/AppFramework/Middleware/OCSMiddleware.php index 90355a39ef0..0d97aa6ed94 100644 --- a/lib/private/AppFramework/Middleware/OCSMiddleware.php +++ b/lib/private/AppFramework/Middleware/OCSMiddleware.php @@ -56,7 +56,12 @@ class OCSMiddleware extends Middleware { if ($code === 0) { $code = Http::STATUS_INTERNAL_SERVER_ERROR; } - return new OCSResponse($format, $code, $exception->getMessage()); + $response = new OCSResponse($format, $code, $exception->getMessage()); + + if ($this->request->getScriptName() === '/ocs/v2.php') { + $response->setStatus($code); + } + return $response; } throw $exception; diff --git a/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php b/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php index 66131aa4b25..5eff056eebc 100644 --- a/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php @@ -88,7 +88,10 @@ class OCSMiddlewareTest extends \Test\TestCase { * @param string $message * @param int $code */ - public function testAfterException($controller, $exception, $forward, $message = '', $code = 0) { + public function testAfterExceptionOCSv1($controller, $exception, $forward, $message = '', $code = 0) { + $this->request + ->method('getScriptName') + ->willReturn('/ocs/v1.php'); $OCSMiddleware = new OCSMiddleware($this->request); try { @@ -99,6 +102,37 @@ class OCSMiddlewareTest extends \Test\TestCase { $this->assertSame($message, $this->invokePrivate($result, 'message')); $this->assertSame($code, $this->invokePrivate($result, 'statuscode')); + $this->assertSame(200, $result->getStatus()); + } catch (\Exception $e) { + $this->assertTrue($forward); + $this->assertEquals($exception, $e); + } + } + + /** + * @dataProvider dataAfterException + * + * @param Controller $controller + * @param \Exception $exception + * @param bool $forward + * @param string $message + * @param int $code + */ + public function testAfterExceptionOCSv2($controller, $exception, $forward, $message = '', $code = 0) { + $this->request + ->method('getScriptName') + ->willReturn('/ocs/v2.php'); + $OCSMiddleware = new OCSMiddleware($this->request); + + try { + $result = $OCSMiddleware->afterException($controller, 'method', $exception); + $this->assertFalse($forward); + + $this->assertInstanceOf('OCP\AppFramework\Http\OCSResponse', $result); + + $this->assertSame($message, $this->invokePrivate($result, 'message')); + $this->assertSame($code, $this->invokePrivate($result, 'statuscode')); + $this->assertSame($code, $result->getStatus()); } catch (\Exception $e) { $this->assertTrue($forward); $this->assertEquals($exception, $e); |