1<?php 2// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project 3// 4// All Rights Reserved. See copyright.txt for details and a complete list of authors. 5// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. 6// $Id$ 7 8/** 9 * @group unit 10 * 11 */ 12 13class Perms_Reflection_QuickTest extends TikiTestCase 14{ 15 function testUnconfigured() 16 { 17 $quick = new Perms_Reflection_Quick; 18 19 $obtained = $quick->getPermissions( 20 new Perms_Reflection_PermissionSet, 21 [ 22 'Anonymous' => 'basic', 23 'Registered' => 'editor', 24 ] 25 ); 26 $this->assertEquals(new Perms_Reflection_PermissionSet, $obtained); 27 } 28 29 function testSimpleConfigurations() 30 { 31 $quick = new Perms_Reflection_Quick; 32 $quick->configure('tester', ['view', 'edit', 'comment']); 33 $quick->configure('basic', ['view']); 34 35 $obtained = $quick->getPermissions( 36 new Perms_Reflection_PermissionSet, 37 [ 38 'Anonymous' => 'basic', 39 'Registered' => 'editor', 40 'Tester' => 'tester', 41 ] 42 ); 43 44 $expect = new Perms_Reflection_PermissionSet; 45 $expect->add('Anonymous', 'view'); 46 $expect->add('Tester', 'view'); 47 $expect->add('Tester', 'edit'); 48 $expect->add('Tester', 'comment'); 49 50 $this->assertEquals($expect, $obtained); 51 } 52 53 function testInheritance() 54 { 55 $quick = new Perms_Reflection_Quick; 56 $quick->configure('basic', ['view']); 57 $quick->configure('registered', ['edit']); 58 $quick->configure('editors', ['remove']); 59 60 $obtained = $quick->getPermissions( 61 new Perms_Reflection_PermissionSet, 62 [ 63 'Anonymous' => 'basic', 64 'Registered' => 'registered', 65 'Editor' => 'editors', 66 ] 67 ); 68 69 $expect = new Perms_Reflection_PermissionSet; 70 $expect->add('Anonymous', 'view'); 71 $expect->add('Registered', 'view'); 72 $expect->add('Registered', 'edit'); 73 $expect->add('Editor', 'view'); 74 $expect->add('Editor', 'edit'); 75 $expect->add('Editor', 'remove'); 76 77 $this->assertEquals($expect, $obtained); 78 } 79 80 function testAssignNone() 81 { 82 $quick = new Perms_Reflection_Quick; 83 $current = new Perms_Reflection_PermissionSet; 84 $current->add('Anonymous', 'view'); 85 86 $obtained = $quick->getPermissions( 87 $current, 88 ['Anonymous' => 'none',] 89 ); 90 91 $expect = new Perms_Reflection_PermissionSet; 92 93 $this->assertEquals($expect, $obtained); 94 } 95 96 function testOnbtainUserdefined() 97 { 98 $quick = new Perms_Reflection_Quick; 99 $current = new Perms_Reflection_PermissionSet; 100 $current->add('Anonymous', 'view'); 101 102 $obtained = $quick->getPermissions( 103 $current, 104 ['Anonymous' => 'userdefined',] 105 ); 106 107 $expect = new Perms_Reflection_PermissionSet; 108 $expect->add('Anonymous', 'view'); 109 110 $this->assertEquals($expect, $obtained); 111 } 112 113 function testDefaultRetrieveGroups() 114 { 115 $quick = new Perms_Reflection_Quick; 116 117 $permissions = new Perms_Reflection_PermissionSet; 118 $permissions->add('Registered', 'view'); 119 120 $expect = [ 121 'Anonymous' => 'none', 122 'Registered' => 'userdefined', 123 ]; 124 125 $obtained = $quick->getAppliedPermissions($permissions, ['Anonymous', 'Registered']); 126 127 $this->assertEquals($expect, $obtained); 128 } 129 130 function testMatch() 131 { 132 $quick = new Perms_Reflection_Quick; 133 $quick->configure('basic', ['view']); 134 135 $permissions = new Perms_Reflection_PermissionSet; 136 $permissions->add('Registered', 'view'); 137 138 $expect = ['Registered' => 'basic']; 139 140 $obtained = $quick->getAppliedPermissions($permissions, ['Registered']); 141 142 $this->assertEquals($expect, $obtained); 143 } 144 145 function testNoMatchOnExtra() 146 { 147 $quick = new Perms_Reflection_Quick; 148 $quick->configure('basic', ['view']); 149 150 $permissions = new Perms_Reflection_PermissionSet; 151 $permissions->add('Registered', 'view'); 152 $permissions->add('Registered', 'edit'); 153 154 $expect = ['Registered' => 'userdefined']; 155 156 $obtained = $quick->getAppliedPermissions($permissions, ['Registered']); 157 158 $this->assertEquals($expect, $obtained); 159 } 160 161 function testNoMatchOnMissing() 162 { 163 $quick = new Perms_Reflection_Quick; 164 $quick->configure('basic', ['view', 'edit']); 165 166 $permissions = new Perms_Reflection_PermissionSet; 167 $permissions->add('Registered', 'view'); 168 169 $expect = ['Registered' => 'userdefined']; 170 171 $obtained = $quick->getAppliedPermissions($permissions, ['Registered']); 172 173 $this->assertEquals($expect, $obtained); 174 } 175 176 function testInheritenceAppiesInMatching() 177 { 178 $quick = new Perms_Reflection_Quick; 179 $quick->configure('basic', ['view']); 180 $quick->configure('registered', ['edit']); 181 182 $permissions = new Perms_Reflection_PermissionSet; 183 $permissions->add('Registered', 'view'); 184 $permissions->add('Registered', 'edit'); 185 186 $expect = ['Registered' => 'registered']; 187 188 $obtained = $quick->getAppliedPermissions($permissions, ['Registered']); 189 190 $this->assertEquals($expect, $obtained); 191 } 192 193 function testRegisterNoneIsIgnored() 194 { 195 $quick = new Perms_Reflection_Quick; 196 $quick->configure('none', ['view']); 197 198 $expect = new Perms_Reflection_Quick; 199 $this->assertEquals($expect, $quick); 200 } 201 202 function testRegisterUserDefinedIsIgnored() 203 { 204 $quick = new Perms_Reflection_Quick; 205 $quick->configure('userdefined', ['view']); 206 207 $expect = new Perms_Reflection_Quick; 208 $this->assertEquals($expect, $quick); 209 } 210} 211