Browse Source

Support subdir in the OCS v2 endpoint

We should check against the ending substring since people could
run their nextcloud in a subfolder.

* Added test
tags/v11.0RC2
Roeland Jago Douma 7 years ago
parent
commit
8bdd0adcee
No account linked to committer's email address

+ 1
- 1
lib/private/AppFramework/Middleware/OCSMiddleware.php View File

@@ -58,7 +58,7 @@ class OCSMiddleware extends Middleware {
}
$response = new OCSResponse($format, $code, $exception->getMessage());

if ($this->request->getScriptName() === '/ocs/v2.php') {
if (substr_compare($this->request->getScriptName(), '/ocs/v2.php', -strlen('/ocs/v2.php')) === 0) {
$response->setStatus($code);
}
return $response;

+ 30
- 0
tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php View File

@@ -139,4 +139,34 @@ class OCSMiddlewareTest extends \Test\TestCase {
}
}

/**
* @dataProvider dataAfterException
*
* @param Controller $controller
* @param \Exception $exception
* @param bool $forward
* @param string $message
* @param int $code
*/
public function testAfterExceptionOCSv2SubFolder($controller, $exception, $forward, $message = '', $code = 0) {
$this->request
->method('getScriptName')
->willReturn('/mysubfolder/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);
}
}

}

Loading…
Cancel
Save