From 457ad80ad7c53870fc033997bfbf36e3904f9c4e Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Wed, 23 Nov 2011 20:25:58 +0100 Subject: introduced remote api class --- _test/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '_test') diff --git a/_test/index.php b/_test/index.php index f59c44cf4..64ece4762 100644 --- a/_test/index.php +++ b/_test/index.php @@ -11,7 +11,7 @@ if(@file_exists(DOKU_CONF.'local.php')){ require_once(DOKU_CONF.'local.php'); } $conf['lang'] = 'en'; define('TEST_ROOT', dirname(__FILE__)); define('TMPL_FILESCHEME_PATH', TEST_ROOT . '/filescheme/'); -error_reporting(E_ALL); +error_reporting(E_ALL & ~E_DEPRECATED); set_time_limit(600); ini_set('memory_limit','128M'); -- cgit v1.2.3 From f61380cb67f8216ae4c75922511ff5a07fd21ca0 Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Mon, 28 Nov 2011 19:06:16 +0100 Subject: introduced first remote test cases --- _test/cases/inc/remote.test.php | 77 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 _test/cases/inc/remote.test.php (limited to '_test') diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php new file mode 100644 index 000000000..aa7a8cd1b --- /dev/null +++ b/_test/cases/inc/remote.test.php @@ -0,0 +1,77 @@ + array( + 'args' => array(), + 'return' => 'void' + ), + 'method2' => array( + 'args' => array('string', 'int', 'bool'), + 'return' => array('string'), + ) + ); + } +} + + +class remote_test extends UnitTestCase { + + var $originalConf; + + var $remote; + + function setUp() { + global $plugin_controller; + global $conf; + parent::setUp(); + $pluginManager = new MockDoku_Plugin_Controller(); + $pluginManager->setReturnValue('getList', array('testplugin')); + $pluginManager->setReturnValue('load', new remote_plugin_testplugin()); + $plugin_controller = $pluginManager; + + $this->originalConf = $conf; + + $this->remote = new RemoteAPI(); + } + + function tearDown() { + global $conf; + $conf = $this->originalConf; + } + + function test_pluginMethods() { + $methods = $this->remote->getPluginMethods(); + $this->assertEqual(array_keys($methods), array('plugin.testplugin.method1', 'plugin.testplugin.method2')); + } + + function test_hasAccessSuccess() { + global $conf; + $conf['remote'] = 1; + $this->assertTrue($this->remote->hasAccess()); + } + + function test_hasAccessFail() { + global $conf; + $conf['remote'] = 0; + $this->assertFalse($this->remote->hasAccess()); + } + + function test_forceAccessSuccess() { + global $conf; + $conf['remote'] = 1; + $this->remote->forceAccess(); // no exception should occur + } + + function test_forceAccessFail() { + global $conf; + $conf['remote'] = 0; + $this->expectException('RemoteException'); + $this->remote->forceAccess(); + } +} -- cgit v1.2.3 From 4815d222f25c9a31949297223c98cfca7151ae8d Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Thu, 8 Dec 2011 19:57:18 +0100 Subject: RemoteAPI can now handle remote calls. --- _test/cases/inc/remote.test.php | 102 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) (limited to '_test') diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php index aa7a8cd1b..b33d8039f 100644 --- a/_test/cases/inc/remote.test.php +++ b/_test/cases/inc/remote.test.php @@ -1,9 +1,74 @@ array( + 'args' => array(), + 'return' => 'string', + 'doc' => 'Test method', + 'name' => 'stringTestMethod', + ), 'wiki.intTestMethod' => array( + 'args' => array(), + 'return' => 'int', + 'doc' => 'Test method', + 'name' => 'intTestMethod', + ), 'wiki.floatTestMethod' => array( + 'args' => array(), + 'return' => 'float', + 'doc' => 'Test method', + 'name' => 'floatTestMethod', + ), 'wiki.dateTestMethod' => array( + 'args' => array(), + 'return' => 'date', + 'doc' => 'Test method', + 'name' => 'dateTestMethod', + ), 'wiki.fileTestMethod' => array( + 'args' => array(), + 'return' => 'file', + 'doc' => 'Test method', + 'name' => 'fileTestMethod', + ), 'wiki.voidTestMethod' => array( + 'args' => array(), + 'return' => 'void', + 'doc' => 'Test method', + 'name' => 'voidTestMethod', + ), 'wiki.oneStringArgMethod' => array( + 'args' => array('string'), + 'return' => 'string', + 'doc' => 'Test method', + 'name' => 'oneStringArgMethod', + ), 'wiki.twoArgMethod' => array( + 'args' => array('string', 'int'), + 'return' => 'array', + 'doc' => 'Test method', + 'name' => 'twoArgMethod', + ), 'wiki.twoArgWithDefaultArg' => array( + 'args' => array('string', 'string'), + 'return' => 'string', + 'doc' => 'Test method', + 'name' => 'twoArgWithDefaultArg', + ), + ); + } + function stringTestMethod() { return 'success'; } + function intTestMethod() { return 42; } + function floatTestMethod() { return 3.14159265; } + function dateTestMethod() { return 2623452346; } + function fileTestMethod() { return 'file content'; } + function voidTestMethod() { return null; } + function oneStringArgMethod($arg) {return $arg; } + function twoArgMethod($string, $int) { return array($string, $int); } + function twoArgWithDefaultArg($string1, $string2 = 'default') { return array($string1, $string2); } + +} + class remote_plugin_testplugin extends DokuWiki_Remote_Plugin { function _getMethods() { return array( @@ -74,4 +139,41 @@ class remote_test extends UnitTestCase { $this->expectException('RemoteException'); $this->remote->forceAccess(); } + + function test_generalCoreFunctionWithoutArguments() { + global $conf; + $conf['remote'] = 1; + $remoteApi = new RemoteApi(); + $remoteApi->getCoreMethods(new RemoteAPICoreTest()); + + $this->assertEqual($remoteApi->call('wiki.stringTestMethod'), 'success'); + $this->assertEqual($remoteApi->call('wiki.intTestMethod'), 42); + $this->assertEqual($remoteApi->call('wiki.floatTestMethod'), 3.14159265); + $this->assertEqual($remoteApi->call('wiki.dateTestMethod'), 2623452346); + $this->assertEqual($remoteApi->call('wiki.fileTestMethod'), 'file content'); + $this->assertEqual($remoteApi->call('wiki.voidTestMethod'), null); + } + + function test_generalCoreFunctionOnArgumentMismatch() { + global $conf; + $conf['remote'] = 1; + $remoteApi = new RemoteApi(); + $remoteApi->getCoreMethods(new RemoteAPICoreTest()); + + $this->expectException('RemoteException'); + $remoteApi->call('wiki.voidTestMethod', array('something')); + } + + function test_generalCoreFunctionWithArguments() { + global $conf; + $conf['remote'] = 1; + + $remoteApi = new RemoteApi(); + $remoteApi->getCoreMethods(new RemoteAPICoreTest()); + + $this->assertEqual($remoteApi->call('wiki.oneStringArgMethod', array('string')), 'string'); + $this->assertEqual($remoteApi->call('wiki.twoArgMethod', array('string', 1)), array('string' , 1)); + $this->assertEqual($remoteApi->call('wiki.twoArgWithDefaultArg', array('string')), array('string', 'default')); + $this->assertEqual($remoteApi->call('wiki.twoArgWithDefaultArg', array('string', 'another')), array('string', 'another')); + } } -- cgit v1.2.3 From 647919c9a61d928502b0b45063cc60702d0d310e Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Thu, 8 Dec 2011 20:33:30 +0100 Subject: added remote plugin calls. --- _test/cases/inc/remote.test.php | 43 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) (limited to '_test') diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php index b33d8039f..f0e7b3d27 100644 --- a/_test/cases/inc/remote.test.php +++ b/_test/cases/inc/remote.test.php @@ -75,13 +75,24 @@ class remote_plugin_testplugin extends DokuWiki_Remote_Plugin { 'method1' => array( 'args' => array(), 'return' => 'void' - ), - 'method2' => array( + ), 'methodString' => array( + 'args' => array(), + 'return' => 'string' + ), 'method2' => array( + 'args' => array('string', 'int'), + 'return' => 'array', + 'name' => 'method2', + ), 'method2ext' => array( 'args' => array('string', 'int', 'bool'), - 'return' => array('string'), + 'return' => 'array', + 'name' => 'method2', ) ); } + + function method1() { return null; } + function methodString() { return 'success'; } + function method2($str, $int, $bool = false) { return array($str, $int, $bool); } } @@ -112,7 +123,11 @@ class remote_test extends UnitTestCase { function test_pluginMethods() { $methods = $this->remote->getPluginMethods(); - $this->assertEqual(array_keys($methods), array('plugin.testplugin.method1', 'plugin.testplugin.method2')); + $actual = array_keys($methods); + sort($actual); + $expect = array('plugin.testplugin.method1', 'plugin.testplugin.method2', 'plugin.testplugin.methodString', 'plugin.testplugin.method2ext'); + sort($expect); + $this->assertEqual($expect,$actual); } function test_hasAccessSuccess() { @@ -176,4 +191,24 @@ class remote_test extends UnitTestCase { $this->assertEqual($remoteApi->call('wiki.twoArgWithDefaultArg', array('string')), array('string', 'default')); $this->assertEqual($remoteApi->call('wiki.twoArgWithDefaultArg', array('string', 'another')), array('string', 'another')); } + + function test_pluginCallMethods() { + global $conf; + $conf['remote'] = 1; + + $remoteApi = new RemoteApi(); + $this->assertEqual($remoteApi->call('plugin.testplugin.method1'), null); + $this->assertEqual($remoteApi->call('plugin.testplugin.method2', array('string', 7)), array('string', 7, false)); + $this->assertEqual($remoteApi->call('plugin.testplugin.method2ext', array('string', 7, true)), array('string', 7, true)); + $this->assertEqual($remoteApi->call('plugin.testplugin.methodString'), 'success'); + } + + function test_notExistingCall() { + global $conf; + $conf['remote'] = 1; + + $remoteApi = new RemoteApi(); + $this->expectException('RemoteException'); + $remoteApi->call('dose not exist'); + } } -- cgit v1.2.3 From 795114e73f18f06c2b32b433e150cad81da6581f Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Sat, 10 Dec 2011 14:05:33 +0100 Subject: changed return types --- _test/cases/inc/remote.test.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to '_test') diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php index f0e7b3d27..23186344b 100644 --- a/_test/cases/inc/remote.test.php +++ b/_test/cases/inc/remote.test.php @@ -60,8 +60,8 @@ class RemoteAPICoreTest { function stringTestMethod() { return 'success'; } function intTestMethod() { return 42; } function floatTestMethod() { return 3.14159265; } - function dateTestMethod() { return 2623452346; } - function fileTestMethod() { return 'file content'; } + function dateTestMethod() { return new RemoteDate(2623452346); } + function fileTestMethod() { return new RemoteFile('file content'); } function voidTestMethod() { return null; } function oneStringArgMethod($arg) {return $arg; } function twoArgMethod($string, $int) { return array($string, $int); } @@ -164,8 +164,8 @@ class remote_test extends UnitTestCase { $this->assertEqual($remoteApi->call('wiki.stringTestMethod'), 'success'); $this->assertEqual($remoteApi->call('wiki.intTestMethod'), 42); $this->assertEqual($remoteApi->call('wiki.floatTestMethod'), 3.14159265); - $this->assertEqual($remoteApi->call('wiki.dateTestMethod'), 2623452346); - $this->assertEqual($remoteApi->call('wiki.fileTestMethod'), 'file content'); + $this->assertEqual($remoteApi->call('wiki.dateTestMethod'), new RemoteDate(2623452346)); + $this->assertEqual($remoteApi->call('wiki.fileTestMethod'), new RemoteFile('file content')); $this->assertEqual($remoteApi->call('wiki.voidTestMethod'), null); } -- cgit v1.2.3 From a317247b19c498f4292480110cf0e0a1ce9780e8 Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Sun, 8 Jan 2012 14:54:53 +0100 Subject: updated remote hasAccess function --- _test/cases/inc/remote.test.php | 46 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) (limited to '_test') diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php index 23186344b..b6a683f45 100644 --- a/_test/cases/inc/remote.test.php +++ b/_test/cases/inc/remote.test.php @@ -99,12 +99,15 @@ class remote_plugin_testplugin extends DokuWiki_Remote_Plugin { class remote_test extends UnitTestCase { var $originalConf; + var $userinfo; var $remote; function setUp() { global $plugin_controller; global $conf; + global $USERINFO; + parent::setUp(); $pluginManager = new MockDoku_Plugin_Controller(); $pluginManager->setReturnValue('getList', array('testplugin')); @@ -112,13 +115,19 @@ class remote_test extends UnitTestCase { $plugin_controller = $pluginManager; $this->originalConf = $conf; + $conf['remote'] = 1; + $conf['useacl'] = 0; + $this->userinfo = $USERINFO; $this->remote = new RemoteAPI(); } function tearDown() { global $conf; + global $USERINFO; $conf = $this->originalConf; + $USERINFO = $this->userinfo; + } function test_pluginMethods() { @@ -131,8 +140,6 @@ class remote_test extends UnitTestCase { } function test_hasAccessSuccess() { - global $conf; - $conf['remote'] = 1; $this->assertTrue($this->remote->hasAccess()); } @@ -142,6 +149,41 @@ class remote_test extends UnitTestCase { $this->assertFalse($this->remote->hasAccess()); } + function test_hasAccessFailAcl() { + global $conf; + $conf['useacl'] = 1; + $this->assertFalse($this->remote->hasAccess()); + } + + function test_hasAccessSuccessAclEmptyRemoteUser() { + global $conf; + $conf['useacl'] = 1; + $conf['remoteuser'] = ''; + + $this->assertTrue($this->remote->hasAccess()); + } + + function test_hasAccessSuccessAcl() { + global $conf; + global $USERINFO; + $conf['useacl'] = 1; + $conf['remoteuser'] = '@grp,@grp2'; + $USERINFO['grps'] = array('grp'); + + $this->assertTrue($this->remote->hasAccess()); + } + + function test_hasAccessFailAcl2() { + global $conf; + global $USERINFO; + $conf['useacl'] = 1; + $conf['remoteuser'] = '@grp'; + $USERINFO['grps'] = array('grp1'); + + $this->assertFalse($this->remote->hasAccess()); + } + + function test_forceAccessSuccess() { global $conf; $conf['remote'] = 1; -- cgit v1.2.3 From 4beb39ea51a46409ab3abd4a1b880bf5d3d5dc4a Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Sun, 8 Jan 2012 15:31:46 +0100 Subject: enforce acl on remote method call --- _test/cases/inc/remote.test.php | 52 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) (limited to '_test') diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php index b6a683f45..07ca9d0e8 100644 --- a/_test/cases/inc/remote.test.php +++ b/_test/cases/inc/remote.test.php @@ -54,7 +54,13 @@ class RemoteAPICoreTest { 'return' => 'string', 'doc' => 'Test method', 'name' => 'twoArgWithDefaultArg', - ), + ), 'wiki.publicCall' => array( + 'args' => array(), + 'return' => 'boolean', + 'doc' => 'testing for public access', + 'name' => 'publicCall', + 'public' => 1 + ) ); } function stringTestMethod() { return 'success'; } @@ -66,6 +72,7 @@ class RemoteAPICoreTest { function oneStringArgMethod($arg) {return $arg; } function twoArgMethod($string, $int) { return array($string, $int); } function twoArgWithDefaultArg($string1, $string2 = 'default') { return array($string1, $string2); } + function publicCall() {return true;} } @@ -86,6 +93,12 @@ class remote_plugin_testplugin extends DokuWiki_Remote_Plugin { 'args' => array('string', 'int', 'bool'), 'return' => 'array', 'name' => 'method2', + ), 'publicCall' => array( + 'args' => array(), + 'return' => 'boolean', + 'doc' => 'testing for public access', + 'name' => 'publicCall', + 'public' => 1 ) ); } @@ -93,6 +106,8 @@ class remote_plugin_testplugin extends DokuWiki_Remote_Plugin { function method1() { return null; } function methodString() { return 'success'; } function method2($str, $int, $bool = false) { return array($str, $int, $bool); } + function publicCall() {return true;} + } @@ -134,7 +149,7 @@ class remote_test extends UnitTestCase { $methods = $this->remote->getPluginMethods(); $actual = array_keys($methods); sort($actual); - $expect = array('plugin.testplugin.method1', 'plugin.testplugin.method2', 'plugin.testplugin.methodString', 'plugin.testplugin.method2ext'); + $expect = array('plugin.testplugin.method1', 'plugin.testplugin.method2', 'plugin.testplugin.methodString', 'plugin.testplugin.method2ext', 'plugin.testplugin.publicCall'); sort($expect); $this->assertEqual($expect,$actual); } @@ -253,4 +268,37 @@ class remote_test extends UnitTestCase { $this->expectException('RemoteException'); $remoteApi->call('dose not exist'); } + + function test_publicCallCore() { + global $conf; + $conf['useacl'] = 1; + $remoteApi = new RemoteApi(); + $remoteApi->getCoreMethods(new RemoteAPICoreTest()); + $this->assertTrue($remoteApi->call('wiki.publicCall')); + } + + function test_publicCallPlugin() { + global $conf; + $conf['useacl'] = 1; + $remoteApi = new RemoteApi(); + $this->assertTrue($remoteApi->call('plugin.testplugin.publicCall')); + } + + function test_publicCallCoreDeny() { + global $conf; + $conf['useacl'] = 1; + $remoteApi = new RemoteApi(); + $remoteApi->getCoreMethods(new RemoteAPICoreTest()); + $this->expectException('RemoteAccessDenied'); + $remoteApi->call('wiki.stringTestMethod'); + } + + function test_publicCallPluginDeny() { + global $conf; + $conf['useacl'] = 1; + $remoteApi = new RemoteApi(); + $this->expectException('RemoteAccessDenied'); + $remoteApi->call('plugin.testplugin.methodString'); + } + } -- cgit v1.2.3 From 6e8160489a60f00eb756682b574be72693c7878b Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Sun, 8 Jan 2012 19:29:39 +0100 Subject: adjusted test cases --- _test/cases/inc/remote.test.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to '_test') diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php index 07ca9d0e8..c4f0cd2c2 100644 --- a/_test/cases/inc/remote.test.php +++ b/_test/cases/inc/remote.test.php @@ -66,8 +66,8 @@ class RemoteAPICoreTest { function stringTestMethod() { return 'success'; } function intTestMethod() { return 42; } function floatTestMethod() { return 3.14159265; } - function dateTestMethod() { return new RemoteDate(2623452346); } - function fileTestMethod() { return new RemoteFile('file content'); } + function dateTestMethod() { return 2623452346; } + function fileTestMethod() { return 'file content'; } function voidTestMethod() { return null; } function oneStringArgMethod($arg) {return $arg; } function twoArgMethod($string, $int) { return array($string, $int); } @@ -131,6 +131,7 @@ class remote_test extends UnitTestCase { $this->originalConf = $conf; $conf['remote'] = 1; + $conf['remoteuser'] = '!!not set!!'; $conf['useacl'] = 0; $this->userinfo = $USERINFO; @@ -221,8 +222,8 @@ class remote_test extends UnitTestCase { $this->assertEqual($remoteApi->call('wiki.stringTestMethod'), 'success'); $this->assertEqual($remoteApi->call('wiki.intTestMethod'), 42); $this->assertEqual($remoteApi->call('wiki.floatTestMethod'), 3.14159265); - $this->assertEqual($remoteApi->call('wiki.dateTestMethod'), new RemoteDate(2623452346)); - $this->assertEqual($remoteApi->call('wiki.fileTestMethod'), new RemoteFile('file content')); + $this->assertEqual($remoteApi->call('wiki.dateTestMethod'), 2623452346); + $this->assertEqual($remoteApi->call('wiki.fileTestMethod'), 'file content'); $this->assertEqual($remoteApi->call('wiki.voidTestMethod'), null); } -- cgit v1.2.3 From e61127e4af913a252fbe5c8f427501268501895c Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Sun, 8 Jan 2012 19:31:10 +0100 Subject: refactored RemoteAccessDenied to RemoteAccessDeniedException --- _test/cases/inc/remote.test.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to '_test') diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php index c4f0cd2c2..f5da3c06d 100644 --- a/_test/cases/inc/remote.test.php +++ b/_test/cases/inc/remote.test.php @@ -290,7 +290,7 @@ class remote_test extends UnitTestCase { $conf['useacl'] = 1; $remoteApi = new RemoteApi(); $remoteApi->getCoreMethods(new RemoteAPICoreTest()); - $this->expectException('RemoteAccessDenied'); + $this->expectException('RemoteAccessDeniedException'); $remoteApi->call('wiki.stringTestMethod'); } @@ -298,7 +298,7 @@ class remote_test extends UnitTestCase { global $conf; $conf['useacl'] = 1; $remoteApi = new RemoteApi(); - $this->expectException('RemoteAccessDenied'); + $this->expectException('RemoteAccessDeniedException'); $remoteApi->call('plugin.testplugin.methodString'); } -- cgit v1.2.3 From 995dc0ce9ce4e23e9f15e7088aa1219ab72835cb Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Sun, 22 Jan 2012 11:58:01 +0100 Subject: fixed testcase --- _test/cases/inc/remote.test.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to '_test') diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php index f5da3c06d..186f8e65a 100644 --- a/_test/cases/inc/remote.test.php +++ b/_test/cases/inc/remote.test.php @@ -2,9 +2,14 @@ require_once DOKU_INC . 'inc/init.php'; require_once DOKU_INC . 'inc/RemoteAPICore.php'; +require_once DOKU_INC . 'inc/auth/basic.class.php'; Mock::generate('Doku_Plugin_Controller'); +class MockAuth extends auth_basic { + function isCaseSensitive() { return true; } +} + class RemoteAPICoreTest { function __getRemoteInfo() { @@ -122,6 +127,7 @@ class remote_test extends UnitTestCase { global $plugin_controller; global $conf; global $USERINFO; + global $auth; parent::setUp(); $pluginManager = new MockDoku_Plugin_Controller(); @@ -136,6 +142,8 @@ class remote_test extends UnitTestCase { $this->userinfo = $USERINFO; $this->remote = new RemoteAPI(); + + $auth = new MockAuth(); } function tearDown() { @@ -185,7 +193,6 @@ class remote_test extends UnitTestCase { $conf['useacl'] = 1; $conf['remoteuser'] = '@grp,@grp2'; $USERINFO['grps'] = array('grp'); - $this->assertTrue($this->remote->hasAccess()); } -- cgit v1.2.3 From 7c35ac36c1dea2d6f26d8184dcbf1fe5afae59ac Mon Sep 17 00:00:00 2001 From: Dominik Eckelmann Date: Wed, 21 Mar 2012 13:15:18 +0100 Subject: added RPC_CALL_ADD event. This event enables plugins to register custom method names. --- _test/cases/inc/remote.test.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to '_test') diff --git a/_test/cases/inc/remote.test.php b/_test/cases/inc/remote.test.php index 186f8e65a..f03d13ce1 100644 --- a/_test/cases/inc/remote.test.php +++ b/_test/cases/inc/remote.test.php @@ -309,4 +309,16 @@ class remote_test extends UnitTestCase { $remoteApi->call('plugin.testplugin.methodString'); } + function test_pluginCallCustomPath() { + global $EVENT_HANDLER; + $EVENT_HANDLER->register_hook('RPC_CALL_ADD', 'BEFORE', &$this, 'pluginCallCustomPathRegister'); + + $remoteApi = new RemoteAPI(); + $result = $remoteApi->call('custom.path'); + $this->assertEqual($result, 'success'); + } + + function pluginCallCustomPathRegister(&$event, $param) { + $event->data['custom.path'] = array('testplugin', 'methodString'); + } } -- cgit v1.2.3