2011-03-23 10:51:00 +01:00
|
|
|
<?php
|
2016-08-19 00:51:35 +02:00
|
|
|
|
2016-10-14 03:30:05 +02:00
|
|
|
namespace SilverStripe\Admin\Tests;
|
|
|
|
|
2016-08-19 00:51:35 +02:00
|
|
|
use SilverStripe\Core\Config\Config;
|
|
|
|
use SilverStripe\Dev\FunctionalTest;
|
2016-11-13 08:35:43 +01:00
|
|
|
use SilverStripe\Security\Group;
|
|
|
|
use SilverStripe\Security\Member;
|
|
|
|
use SilverStripe\Security\Permission;
|
2016-08-19 00:51:35 +02:00
|
|
|
|
2011-03-23 10:51:00 +01:00
|
|
|
class SecurityAdminTest extends FunctionalTest {
|
2011-03-29 06:54:08 +02:00
|
|
|
|
2013-03-21 19:48:54 +01:00
|
|
|
protected static $fixture_file = 'LeftAndMainTest.yml';
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2016-11-13 08:35:43 +01:00
|
|
|
protected $extraDataObjects = [
|
|
|
|
LeftAndMainTest\TestObject::class,
|
|
|
|
];
|
2012-03-06 01:23:02 +01:00
|
|
|
|
2012-03-09 00:54:02 +01:00
|
|
|
// TODO Fix export feature (moved from MemberTableField to GridFieldExportButton)
|
2012-09-19 12:07:39 +02:00
|
|
|
// public function testGroupExport() {
|
2012-03-06 01:23:02 +01:00
|
|
|
// $this->session()->inst_set('loggedInAs', $this->idFromFixture('Member', 'admin'));
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2012-03-06 01:23:02 +01:00
|
|
|
// /* First, open the applicable group */
|
|
|
|
// $response = $this->get('admin/security/show/' . $this->idFromFixture('Group','admin'));
|
|
|
|
// $inputs = $this->cssParser()->getBySelector('input#Form_EditForm_Title');
|
|
|
|
// $this->assertNotNull($inputs);
|
|
|
|
// $this->assertEquals('Administrators', (string)$inputs[0]['value']);
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2012-03-06 01:23:02 +01:00
|
|
|
// /* Then load the export page */
|
|
|
|
// $this->get('admin/security/EditForm/field/Members/export');
|
|
|
|
// $lines = preg_split('/\n/', $this->content());
|
2011-03-23 10:51:00 +01:00
|
|
|
|
2012-03-06 01:23:02 +01:00
|
|
|
// $this->assertEquals(count($lines), 3, "Export with members has one content row");
|
|
|
|
// $this->assertRegExp('/"","","admin@example.com"/', $lines[1], "Member values are correctly exported");
|
|
|
|
// }
|
2011-03-23 10:51:00 +01:00
|
|
|
|
2012-03-09 00:54:02 +01:00
|
|
|
// TODO Fix export feature (moved from MemberTableField to GridFieldExportButton)
|
2012-09-19 12:07:39 +02:00
|
|
|
// public function testEmptyGroupExport() {
|
2012-03-06 01:23:02 +01:00
|
|
|
// $this->session()->inst_set('loggedInAs', $this->idFromFixture('Member', 'admin'));
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2012-03-06 01:23:02 +01:00
|
|
|
// /* First, open the applicable group */
|
|
|
|
// $this->get('admin/security/show/' . $this->idFromFixture('Group','empty'));
|
|
|
|
// $inputs = $this->cssParser()->getBySelector('input#Form_EditForm_Title');
|
|
|
|
// $this->assertNotNull($inputs);
|
|
|
|
// $this->assertEquals('Empty Group', (string)$inputs[0]['value']);
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2012-03-06 01:23:02 +01:00
|
|
|
// /* Then load the export page */
|
|
|
|
// $this->get('admin/security/EditForm/field/Members/export');
|
|
|
|
// $lines = preg_split('/\n/', $this->content());
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2012-03-06 01:23:02 +01:00
|
|
|
// $this->assertEquals(count($lines), 2, "Empty export only has header fields and an empty row");
|
|
|
|
// $this->assertEquals($lines[1], '', "Empty export only has no content row");
|
|
|
|
// }
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2012-09-19 12:07:39 +02:00
|
|
|
public function testPermissionFieldRespectsHiddenPermissions() {
|
2016-11-13 08:35:43 +01:00
|
|
|
$this->session()->inst_set('loggedInAs', $this->idFromFixture(Member::class, 'admin'));
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2016-11-13 08:35:43 +01:00
|
|
|
$group = $this->objFromFixture(Group::class, 'admin');
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2016-11-13 08:35:43 +01:00
|
|
|
Config::inst()->update(Permission::class, 'hidden_permissions', array('CMS_ACCESS_ReportAdmin'));
|
2012-05-28 02:02:47 +02:00
|
|
|
$response = $this->get(sprintf('admin/security/EditForm/field/Groups/item/%d/edit', $group->ID));
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2011-03-23 10:51:00 +01:00
|
|
|
$this->assertContains(
|
2011-03-29 06:54:08 +02:00
|
|
|
'CMS_ACCESS_SecurityAdmin',
|
2011-03-23 10:51:00 +01:00
|
|
|
$response->getBody()
|
|
|
|
);
|
|
|
|
$this->assertNotContains(
|
|
|
|
'CMS_ACCESS_ReportAdmin',
|
|
|
|
$response->getBody()
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|