[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
1 <?php 2 3 use dokuwiki\Remote\Api; 4 5 /** 6 * Class remoteapicore_test 7 */ 8 class remoteapicore_aclcheck_test extends DokuWikiTest { 9 10 protected $userinfo; 11 protected $oldAuthAcl; 12 /** @var Api */ 13 protected $remote; 14 15 protected $pluginsEnabled = array('auth_plugin_authplain'); 16 17 protected function reloadUsers() { 18 global $auth; 19 20 /* auth caches data loaded from file, but recreated object forces reload */ 21 $auth = new auth_plugin_authplain(); 22 } 23 24 public function setUp() : void { 25 global $config_cascade; 26 global $conf; 27 global $USERINFO; 28 global $AUTH_ACL; 29 30 parent::setUp(); 31 32 $name = $config_cascade['plainauth.users']['default']; 33 copy($name, $name . ".orig"); 34 $this->reloadUsers(); 35 36 $this->oldAuthAcl = $AUTH_ACL; 37 $this->userinfo = $USERINFO; 38 39 $conf['remote'] = 1; 40 $conf['remoteuser'] = '@user'; 41 $conf['useacl'] = 0; 42 43 $this->remote = new Api(); 44 45 } 46 47 public function tearDown() : void { 48 global $USERINFO; 49 global $AUTH_ACL; 50 global $config_cascade; 51 52 parent::tearDown(); 53 54 $USERINFO = $this->userinfo; 55 $AUTH_ACL = $this->oldAuthAcl; 56 57 $name = $config_cascade['plainauth.users']['default']; 58 copy($name . ".orig", $name); 59 } 60 61 public function test_checkacl() { 62 global $conf; 63 global $AUTH_ACL, $USERINFO; 64 /** @var auth_plugin_authplain $auth */ 65 global $auth; 66 67 $conf['useacl'] = 1; 68 $_SERVER['REMOTE_USER'] = 'john'; 69 $USERINFO['grps'] = array('user'); 70 $AUTH_ACL = array( 71 '* @ALL 0', //none 72 '* @user 2', //edit 73 '* @more 4', //create 74 'nice_page user2 8' //upload 75 ); 76 77 $params = array('nice_page'); 78 $this->assertEquals(AUTH_EDIT, $this->remote->call('wiki.aclCheck', $params)); 79 80 $auth->createUser("user1", "54321", "a User", "you@example.com"); 81 $auth->createUser("user2", "543210", "You", "he@example.com"); 82 $auth->createUser("mwuser", "12345", "Wiki User", "me@example.com", array('more')); //not in default group 83 84 $params = array( 85 'nice_page', 86 'user1' 87 ); 88 $this->assertEquals(AUTH_EDIT, $this->remote->call('wiki.aclCheck', $params)); 89 90 $params = array( 91 'nice_page', 92 'mwuser' // member of group 'more' 93 ); 94 $this->assertEquals(AUTH_CREATE, $this->remote->call('wiki.aclCheck', $params)); 95 96 $params = array( 97 'nice_page', 98 'mwuser', 99 array() //groups not retrieved 100 ); 101 $this->assertEquals(AUTH_NONE, $this->remote->call('wiki.aclCheck', $params)); 102 103 $params = array( 104 'nice_page', 105 'notexistinguser', 106 array('more') 107 ); 108 $this->assertEquals(AUTH_CREATE, $this->remote->call('wiki.aclCheck', $params)); 109 110 $params = array( 111 'nice_page', 112 'user2' 113 ); 114 $this->assertEquals(AUTH_UPLOAD, $this->remote->call('wiki.aclCheck', $params)); 115 116 $params = array( 117 'nice_page', 118 'user2', 119 array() //groups not retrieved 120 ); 121 $this->assertEquals(AUTH_UPLOAD, $this->remote->call('wiki.aclCheck', $params)); 122 123 $params = array( 124 'unknown_page', 125 'user2' 126 ); 127 $this->assertEquals(AUTH_EDIT, $this->remote->call('wiki.aclCheck', $params)); 128 129 $params = array( 130 'unknown_page', 131 'user2', 132 array() //groups not retrieved 133 ); 134 $this->assertEquals(AUTH_NONE, $this->remote->call('wiki.aclCheck', $params)); 135 136 $params = array( 137 'nice_page', 138 'testuser' // superuser set via conf 139 ); 140 $this->assertEquals(AUTH_ADMIN, $this->remote->call('wiki.aclCheck', $params)); 141 } 142 143 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body