Blame view

framework/tests/security/PermissionRoleTest.php 1.63 KB
0084d336   Administrator   Importers CRUD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  <?php
  /**
   * @package framework
   * @subpackage tests
   */
  class PermissionRoleTest extends FunctionalTest {
  	protected static $fixture_file = 'PermissionRoleTest.yml';
  	
  	public function testDelete() {
  		$role = $this->objFromFixture('PermissionRole', 'role');
  		
  		$role->delete();
  		
  		$this->assertEquals(0, DataObject::get('PermissionRole', "\"ID\"={$role->ID}")->count(),
  			'Role is removed');
  		$this->assertEquals(0, DataObject::get('PermissionRoleCode',"\"RoleID\"={$role->ID}")->count(),
  			'Permissions removed along with the role');
  	}
  
  	public function testValidatesPrivilegedPermissions() {
  		$nonAdminCode = new PermissionRoleCode(array('Code' => 'CMS_ACCESS_CMSMain'));
  		$nonAdminValidateMethod = new ReflectionMethod($nonAdminCode, 'validate');
  		$nonAdminValidateMethod->setAccessible(true);
  
  		$adminCode = new PermissionRoleCode(array('Code' => 'ADMIN'));
  		$adminValidateMethod = new ReflectionMethod($adminCode, 'validate');
  		$adminValidateMethod->setAccessible(true);
  
  		$this->logInWithPermission('APPLY_ROLES');
  		$result = $nonAdminValidateMethod->invoke($nonAdminCode);
  		$this->assertTrue(
  			$result->valid(),
  			'Members with only APPLY_ROLES can create non-privileged permission role codes'
  		);
  
  		$this->logInWithPermission('APPLY_ROLES');
  		$result = $adminValidateMethod->invoke($adminCode);
  		$this->assertFalse(
  			$result->valid(),
  			'Members with only APPLY_ROLES can\'t create privileged permission role codes'
  		);
  
  		$this->logInWithPermission('ADMIN');
  		$result = $adminValidateMethod->invoke($adminCode);
  		$this->assertTrue(
  			$result->valid(),
  			'Members with ADMIN can create privileged permission role codes'
  		);
  	}
  }