reflector = $this->getMockBuilder(ControllerMethodReflector::class) ->disableOriginalConstructor()->getMock(); $this->controller = $this->getMockBuilder(Controller::class) ->disableOriginalConstructor()->getMock(); $this->l10n = $this->createMock(IL10N::class); $this->subadminMiddlewareAsSubAdmin = new SubadminMiddleware($this->reflector, true, $this->l10n); $this->subadminMiddleware = new SubadminMiddleware($this->reflector, false, $this->l10n); } public function testBeforeControllerAsUserWithExemption() { $this->expectException(\OC\AppFramework\Middleware\Security\Exceptions\NotAdminException::class); $this->reflector ->expects($this->once()) ->method('hasAnnotation') ->with('NoSubadminRequired') ->will($this->returnValue(false)); $this->subadminMiddleware->beforeController($this->controller, 'foo'); } public function testBeforeControllerAsUserWithoutExemption() { $this->reflector ->expects($this->once()) ->method('hasAnnotation') ->with('NoSubadminRequired') ->will($this->returnValue(true)); $this->subadminMiddleware->beforeController($this->controller, 'foo'); } public function testBeforeControllerAsSubAdminWithoutExemption() { $this->reflector ->expects($this->once()) ->method('hasAnnotation') ->with('NoSubadminRequired') ->will($this->returnValue(false)); $this->subadminMiddlewareAsSubAdmin->beforeController($this->controller, 'foo'); } public function testBeforeControllerAsSubAdminWithExemption() { $this->reflector ->expects($this->once()) ->method('hasAnnotation') ->with('NoSubadminRequired') ->will($this->returnValue(true)); $this->subadminMiddlewareAsSubAdmin->beforeController($this->controller, 'foo'); } public function testAfterNotAdminException() { $expectedResponse = new TemplateResponse('core', '403', array(), 'guest'); $expectedResponse->setStatus(403); $this->assertEquals($expectedResponse, $this->subadminMiddleware->afterException($this->controller, 'foo', new NotAdminException(''))); } public function testAfterRegularException() { $this->expectException(\Exception::class); $expectedResponse = new TemplateResponse('core', '403', array(), 'guest'); $expectedResponse->setStatus(403); $this->subadminMiddleware->afterException($this->controller, 'foo', new \Exception()); } }