diff --git a/_test/tests/inc/template_tpl_get_action.php b/_test/tests/inc/template_tpl_get_action.php new file mode 100644 index 0000000000000000000000000000000000000000..b18fe552d25893d06cf6764060d92616ebccc539 --- /dev/null +++ b/_test/tests/inc/template_tpl_get_action.php @@ -0,0 +1,483 @@ +<?php + +class template_tpl_get_action_test extends DokuWikiTest { + + public function setUp() { + parent::setUp(); + global $ID; + $ID = 'start'; // run all tests on the start page + + } + + public function test_edit_edit() { + global $ACT; + global $INFO; + global $REV; + + $ACT = 'show'; + $REV = ''; + $INFO['writable'] = true; + $INFO['exists'] = true; + $INFO['draft'] = ''; + + $expect = array( + 'accesskey' => 'e', + 'type' => 'edit', + 'id' => 'start', + 'method' => 'post', + 'params' => array( + 'do' => 'edit', + 'rev' => '', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('edit')); + } + + public function test_edit_edit_rev() { + global $ACT; + global $INFO; + global $REV; + + $ACT = 'show'; + $REV = '1234'; + $INFO['writable'] = true; + $INFO['exists'] = true; + $INFO['draft'] = ''; + + $expect = array( + 'accesskey' => 'e', + 'type' => 'edit', + 'id' => 'start', + 'method' => 'post', + 'params' => array( + 'do' => 'edit', + 'rev' => '1234', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('edit')); + } + + public function test_edit_create() { + global $ACT; + global $INFO; + global $REV; + + $ACT = 'show'; + $REV = ''; + $INFO['writable'] = true; + $INFO['exists'] = false; + $INFO['draft'] = ''; + + $expect = array( + 'accesskey' => 'e', + 'type' => 'create', + 'id' => 'start', + 'method' => 'post', + 'params' => array( + 'do' => 'edit', + 'rev' => '', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('edit')); + } + + public function test_edit_draft() { + global $ACT; + global $INFO; + global $REV; + + $ACT = 'show'; + $REV = ''; + $INFO['writable'] = true; + $INFO['exists'] = true; + $INFO['draft'] = 'foobar'; + + $expect = array( + 'accesskey' => 'e', + 'type' => 'draft', + 'id' => 'start', + 'method' => 'post', + 'params' => array( + 'do' => 'draft', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('edit')); + } + + public function test_edit_show() { + global $ACT; + global $INFO; + global $REV; + + $ACT = 'edit'; + $REV = ''; + $INFO['writable'] = true; + $INFO['exists'] = true; + $INFO['draft'] = ''; + + $expect = array( + 'accesskey' => 'v', + 'type' => 'show', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => '', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('edit')); + } + + public function test_revisions() { + $expect = array( + 'accesskey' => 'o', + 'type' => 'revs', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'revisions', + ), + 'nofollow' => true, + 'replacement' => '', + ); + + $this->assertEquals($expect, tpl_get_action('history')); + $this->assertEquals($expect, tpl_get_action('revisions')); + } + + public function test_recent() { + $expect = array( + 'accesskey' => 'r', + 'type' => 'recent', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'recent', + ), + 'nofollow' => true, + 'replacement' => '', + + ); + $this->assertEquals($expect, tpl_get_action('recent')); + } + + public function test_login() { + $expect = array( + 'accesskey' => null, + 'type' => 'login', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'login', + 'sectok' => '', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('login')); + + $_SERVER['REMOTE_USER'] = 'someone'; // logged in user + + $expect = array( + 'accesskey' => null, + 'type' => 'logout', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'logout', + 'sectok' => getSecurityToken(), + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('login')); + } + + public function test_profile() { + $expect = false; + $this->assertEquals($expect, tpl_get_action('profile')); + + $_SERVER['REMOTE_USER'] = 'someone'; // logged in user + + $expect = array( + 'accesskey' => null, + 'type' => 'profile', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'profile', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('profile')); + } + + public function test_index() { + $expect = array( + 'accesskey' => 'x', + 'type' => 'index', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'index', + ), + 'nofollow' => false, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('index')); + + global $ID; + $ID = 'wiki:syntax'; // change to different page + + $expect = array( + 'accesskey' => 'x', + 'type' => 'index', + 'id' => 'wiki:syntax', + 'method' => 'get', + 'params' => array( + 'do' => 'index', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('index')); + } + + public function test_admin() { + $expect = false; + $this->assertEquals($expect, tpl_get_action('admin')); + + // logged in super user + global $INFO; + $_SERVER['REMOTE_USER'] = 'testuser'; + $INFO['ismanager'] = true; + + $expect = array( + 'accesskey' => null, + 'type' => 'admin', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'admin', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('admin')); + } + + public function test_top() { + $expect = array( + 'accesskey' => 't', + 'type' => 'top', + 'id' => '#dokuwiki__top', + 'method' => 'get', + 'params' => array( + 'do' => '', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('top')); + } + + public function test_back() { + $expect = false; + $this->assertEquals($expect, tpl_get_action('back')); + + global $ID; + $ID = 'wiki:syntax'; + + $expect = array( + 'accesskey' => 'b', + 'type' => 'back', + 'id' => 'wiki:start', + 'method' => 'get', + 'params' => array( + 'do' => '', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('back')); + } + + public function test_backlink() { + $expect = array( + 'accesskey' => null, + 'type' => 'backlink', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'backlink', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('backlink')); + } + + public function test_subscribe() { + $expect = false; + $this->assertEquals($expect, tpl_get_action('subscribe')); + $this->assertEquals($expect, tpl_get_action('subscription')); + + $_SERVER['REMOTE_USER'] = 'someone'; // logged in user + + $expect = false; + $this->assertEquals($expect, tpl_get_action('subscribe')); + $this->assertEquals($expect, tpl_get_action('subscription')); + + // enable subscriptions + global $conf; + $conf['subscribers'] = true; + + $expect = array( + 'accesskey' => null, + 'type' => 'subscribe', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'subscribe', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('subscribe')); + $this->assertEquals($expect, tpl_get_action('subscription')); + } + + public function test_register() { + $expect = array( + 'accesskey' => null, + 'type' => 'register', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'register', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('register')); + + $_SERVER['REMOTE_USER'] = 'somebody'; // logged in user + + $expect = false; + $this->assertEquals($expect, tpl_get_action('register')); + } + + public function test_resendpwd() { + $expect = array( + 'accesskey' => null, + 'type' => 'resendpwd', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'resendpwd', + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('resendpwd')); + + $_SERVER['REMOTE_USER'] = 'somebody'; // logged in user + + $expect = false; + $this->assertEquals($expect, tpl_get_action('resendpwd')); + } + + public function test_revert() { + $expect = false; + $this->assertEquals($expect, tpl_get_action('revert')); + + global $REV; + global $INFO; + $REV = '1234'; + $INFO['writable'] = true; + $INFO['ismanager'] = true; + + $expect = array( + 'accesskey' => null, + 'type' => 'revert', + 'id' => 'start', + 'method' => 'get', // FIXME should this be post? + 'params' => array( + 'do' => 'revert', + 'rev' => '1234', + 'sectok' => '' // FIXME is this correct? + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('revert')); + } + + public function test_media() { + global $ID; + $ID = 'wiki:syntax'; + + $expect = array( + 'accesskey' => null, + 'type' => 'media', + 'id' => 'wiki:syntax', + 'method' => 'get', + 'params' => array( + 'do' => 'media', + 'ns' => 'wiki' + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('media')); + } + + public function test_mediaManager() { + global $IMG; + $IMG = 'wiki:dokuwiki.png'; + + $expect = array( + 'accesskey' => null, + 'type' => 'mediaManager', + 'id' => 'start', + 'method' => 'get', + 'params' => array( + 'do' => 'media', + 'ns' => 'wiki', + 'image' => 'wiki:dokuwiki.png' + ), + 'nofollow' => true, + 'replacement' => '', + ); + $this->assertEquals($expect, tpl_get_action('mediaManager')); + } + + public function test_img_backto() { + $expect = array( + 'accesskey' => 'b', + 'type' => 'img_backto', + 'id' => 'start', + 'method' => 'get', + 'params' => array(), + 'nofollow' => true, + 'replacement' => 'start', + ); + $this->assertEquals($expect, tpl_get_action('img_backto')); + } + + public function test_unknown() { + $expect = '[unknown %s type]'; + $this->assertEquals($expect, tpl_get_action('unknown')); + } + +}