summaryrefslogtreecommitdiffstats
path: root/tests/settings/middleware
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2014-12-04 14:15:55 +0100
committerLukas Reschke <lukas@owncloud.com>2014-12-08 12:11:01 +0100
commitfe7d9a7ca07bb21905c6483dee49bf37dd131674 (patch)
treef37a25e518c0ce38530a452d63386a525f5121f3 /tests/settings/middleware
parente6908f8b890414451dfc32af4d76562016d75d0f (diff)
downloadnextcloud-server-fe7d9a7ca07bb21905c6483dee49bf37dd131674.tar.gz
nextcloud-server-fe7d9a7ca07bb21905c6483dee49bf37dd131674.zip
Add REST route for user & group management
First step of a somewhat testable user management. - I know, the JSON returns are in an ugly format but the JS expects it that way. So let's keep it that way until we have time to fix the JS in the future.
Diffstat (limited to 'tests/settings/middleware')
-rw-r--r--tests/settings/middleware/subadminmiddlewaretest.php91
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/settings/middleware/subadminmiddlewaretest.php b/tests/settings/middleware/subadminmiddlewaretest.php
new file mode 100644
index 00000000000..e5572cfba52
--- /dev/null
+++ b/tests/settings/middleware/subadminmiddlewaretest.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * @author Lukas Reschke
+ * @copyright 2014 Lukas Reschke lukas@owncloud.com
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Settings\Middleware;
+
+use OC\AppFramework\Utility\ControllerMethodReflector;
+use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http\TemplateResponse;
+
+/**
+ * Verifies whether an user has at least subadmin rights.
+ * To bypass use the `@NoSubadminRequired` annotation
+ *
+ * @package OC\Settings\Middleware
+ */
+class SubadminMiddlewareTest extends \Test\TestCase {
+ /** @var SubadminMiddleware */
+ private $subadminMiddlewareAsSubAdmin;
+ /** @var SubadminMiddleware */
+ private $subadminMiddleware;
+ /** @var ControllerMethodReflector */
+ private $reflector;
+ /** @var Controller */
+ private $controller;
+
+ protected function setUp() {
+ $this->reflector = $this->getMockBuilder('\OC\AppFramework\Utility\ControllerMethodReflector')
+ ->disableOriginalConstructor()->getMock();
+ $this->controller = $this->getMockBuilder('\OCP\AppFramework\Controller')
+ ->disableOriginalConstructor()->getMock();
+
+ $this->subadminMiddlewareAsSubAdmin = new SubadminMiddleware($this->reflector, true);
+ $this->subadminMiddleware = new SubadminMiddleware($this->reflector, false);
+ }
+
+ /**
+ * @expectedException \Exception
+ * @expectedExceptionMessage Logged in user must be a subadmin
+ */
+ public function testBeforeControllerAsUserWithExemption() {
+ $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 testAfterException() {
+ $expectedResponse = new TemplateResponse('core', '403', array(), 'guest');
+ $this->assertEquals($expectedResponse, $this->subadminMiddleware->afterException($this->controller, 'foo', new \Exception()));
+ }
+} \ No newline at end of file