2017-08-10 17:25:58 +03:00
|
|
|
<?php
|
2017-11-06 17:56:42 +03:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
*
|
2017-11-06 22:15:27 +03:00
|
|
|
* @author Morris Jobke <hey@morrisjobke.de>
|
2017-11-06 17:56:42 +03:00
|
|
|
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
|
|
|
*
|
|
|
|
* @license GNU AGPL version 3 or any later version
|
|
|
|
*
|
|
|
|
* This program is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Affero General Public License as
|
|
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
|
|
* License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU Affero General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Affero General Public License
|
2019-12-03 21:57:53 +03:00
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2017-11-06 17:56:42 +03:00
|
|
|
*
|
|
|
|
*/
|
2019-11-22 22:52:10 +03:00
|
|
|
|
2017-08-10 17:25:58 +03:00
|
|
|
namespace OCA\Files_Sharing\Tests\Middleware;
|
|
|
|
|
|
|
|
use OCA\Files_Sharing\Controller\ShareInfoController;
|
|
|
|
use OCA\Files_Sharing\Exceptions\S2SException;
|
|
|
|
use OCA\Files_Sharing\Middleware\ShareInfoMiddleware;
|
|
|
|
use OCP\AppFramework\Controller;
|
|
|
|
use OCP\AppFramework\Http;
|
|
|
|
use OCP\AppFramework\Http\JSONResponse;
|
|
|
|
use OCP\Share\IManager as ShareManager;
|
|
|
|
use Test\TestCase;
|
|
|
|
|
|
|
|
class ShareInfoMiddlewareTest extends TestCase {
|
|
|
|
|
2020-08-11 22:32:18 +03:00
|
|
|
/** @var ShareManager|\PHPUnit\Framework\MockObject\MockObject */
|
2017-08-10 17:25:58 +03:00
|
|
|
private $shareManager;
|
|
|
|
|
|
|
|
/** @var ShareInfoMiddleware */
|
|
|
|
private $middleware;
|
|
|
|
|
2019-11-27 17:27:18 +03:00
|
|
|
protected function setUp(): void {
|
2017-08-10 17:25:58 +03:00
|
|
|
parent::setUp();
|
|
|
|
|
|
|
|
$this->shareManager = $this->createMock(ShareManager::class);
|
|
|
|
$this->middleware = new ShareInfoMiddleware($this->shareManager);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testBeforeControllerNoShareInfo() {
|
|
|
|
$this->shareManager->expects($this->never())
|
|
|
|
->method($this->anything());
|
|
|
|
|
|
|
|
$this->middleware->beforeController($this->createMock(ShareInfoMiddlewareTestController::class), 'foo');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testBeforeControllerShareInfoNoS2s() {
|
|
|
|
$this->shareManager->expects($this->once())
|
|
|
|
->method('outgoingServer2ServerSharesAllowed')
|
|
|
|
->willReturn(false);
|
|
|
|
|
|
|
|
$this->expectException(S2SException::class);
|
|
|
|
$this->middleware->beforeController($this->createMock(ShareInfoController::class), 'foo');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testBeforeControllerShareInfo() {
|
|
|
|
$this->shareManager->expects($this->once())
|
|
|
|
->method('outgoingServer2ServerSharesAllowed')
|
|
|
|
->willReturn(true);
|
|
|
|
|
|
|
|
$this->middleware->beforeController($this->createMock(ShareInfoController::class), 'foo');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testAfterExceptionNoShareInfo() {
|
|
|
|
$exeption = new \Exception();
|
|
|
|
|
|
|
|
try {
|
|
|
|
$this->middleware->afterException($this->createMock(ShareInfoMiddlewareTestController::class), 'foo', $exeption);
|
|
|
|
$this->fail();
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
$this->assertSame($exeption, $e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function testAfterExceptionNoS2S() {
|
|
|
|
$exeption = new \Exception();
|
|
|
|
|
|
|
|
try {
|
|
|
|
$this->middleware->afterException($this->createMock(ShareInfoController::class), 'foo', $exeption);
|
|
|
|
$this->fail();
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
$this->assertSame($exeption, $e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testAfterExceptionS2S() {
|
|
|
|
$expected = new JSONResponse([], Http::STATUS_NOT_FOUND);
|
|
|
|
|
|
|
|
$this->assertEquals(
|
|
|
|
$expected,
|
|
|
|
$this->middleware->afterException($this->createMock(ShareInfoController::class), 'foo', new S2SException())
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testAfterControllerNoShareInfo() {
|
|
|
|
$response = $this->createMock(Http\Response::class);
|
|
|
|
|
|
|
|
$this->assertEquals(
|
|
|
|
$response,
|
|
|
|
$this->middleware->afterController($this->createMock(ShareInfoMiddlewareTestController::class), 'foo', $response)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testAfterControllerNoJSON() {
|
|
|
|
$response = $this->createMock(Http\Response::class);
|
|
|
|
|
|
|
|
$this->assertEquals(
|
|
|
|
$response,
|
|
|
|
$this->middleware->afterController($this->createMock(ShareInfoController::class), 'foo', $response)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testAfterControllerJSONok() {
|
|
|
|
$data = ['foo' => 'bar'];
|
|
|
|
$response = new JSONResponse($data);
|
|
|
|
|
|
|
|
$expected = new JSONResponse([
|
|
|
|
'data' => $data,
|
|
|
|
'status' => 'success',
|
|
|
|
]);
|
|
|
|
|
|
|
|
$this->assertEquals(
|
|
|
|
$expected,
|
|
|
|
$this->middleware->afterController($this->createMock(ShareInfoController::class), 'foo', $response)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testAfterControllerJSONerror() {
|
|
|
|
$data = ['foo' => 'bar'];
|
|
|
|
$response = new JSONResponse($data, Http::STATUS_FORBIDDEN);
|
|
|
|
|
|
|
|
$expected = new JSONResponse([
|
|
|
|
'data' => $data,
|
|
|
|
'status' => 'error',
|
|
|
|
], Http::STATUS_FORBIDDEN);
|
|
|
|
|
|
|
|
$this->assertEquals(
|
|
|
|
$expected,
|
|
|
|
$this->middleware->afterController($this->createMock(ShareInfoController::class), 'foo', $response)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class ShareInfoMiddlewareTestController extends Controller {
|
|
|
|
}
|