protected function OgMenuAccessTest::setUp in Organic Groups Menu (OG Menu) 8
Overrides KernelTestBase::setUp
File
- tests/
src/ Kernel/ OgMenuAccessTest.php, line 74
Class
- OgMenuAccessTest
- Tests access to operations on OG Menu instances.
Namespace
Drupal\Tests\og_menu\KernelCode
protected function setUp() {
parent::setUp();
$this
->installConfig([
'og',
]);
$this
->installEntitySchema('entity_test');
$this
->installEntitySchema('og_membership');
$this
->installEntitySchema('ogmenu');
$this
->installEntitySchema('ogmenu_instance');
$this
->installEntitySchema('user');
$this
->installSchema('system', 'sequences');
// Create a first user. This will be UID 1 who has super powers.
$this->users['uid1'] = User::create([
'name' => $this
->randomString(),
]);
$this->users['uid1']
->save();
// Create an 'OG administrator' user who has the global
// 'administer organic groups' permission.
// This user should be able to access everything related to any group.
/** @var RoleInterface $og_menu_admin_role */
$admin_role = Role::create([
'id' => $this
->randomMachineName(),
'label' => $this
->randomString(),
]);
$admin_role
->grantPermission('administer organic groups')
->save();
$this->users['ogadmin'] = User::create([
'name' => $this
->randomString(),
'roles' => [
$admin_role
->id(),
],
]);
$this->users['ogadmin']
->save();
// Create an 'OG Menu administrator' user who will get the global
// permissions to manage any OG menu.
/** @var RoleInterface $og_menu_admin_role */
$og_menu_admin_role = Role::create([
'id' => $this
->randomMachineName(),
'label' => $this
->randomString(),
]);
$og_menu_admin_role
->grantPermission('administer group')
->grantPermission('administer og menu')
->save();
$this->users['ogmenuadmin'] = User::create([
'name' => $this
->randomString(),
'roles' => [
$og_menu_admin_role
->id(),
],
]);
$this->users['ogmenuadmin']
->save();
// Create a 'group administrator' user who is a normal authenticated user
// but has the administrator role within a particular group. By default this
// user should be able to access everything related to their own group.
$this->users['groupadmin'] = User::create([
'name' => $this
->randomString(),
]);
$this->users['groupadmin']
->save();
// Create a 'group member' user who is a normal authenticated user and a
// member of a particular group. This user should only be able to access
// operations for which permission has been explicitly granted.
$this->users['groupmember'] = User::create([
'name' => $this
->randomString(),
]);
$this->users['groupmember']
->save();
// Create an 'authenticated' user who does not have any special permissions.
$this->users['authenticated'] = User::create([
'name' => $this
->randomString(),
]);
$this->users['authenticated']
->save();
// Create a test group. We use the 'entity test' entity which is a bit
// easier to set up since it has fake bundles.
$this->groupBundle = mb_strtolower($this
->randomMachineName());
Og::groupTypeManager()
->addGroup('entity_test', $this->groupBundle);
// Create a group and associate with the group administrator. This user will
// be subscribed to the group and inherit the administrator role
// automatically.
$this->group = EntityTest::create([
'type' => $this->groupBundle,
'name' => $this
->randomString(),
'user_id' => $this->users['groupadmin']
->id(),
]);
$this->group
->save();
// Subscribe the group member to the group.
/** @var OgMembership $membership */
$membership = OgMembership::create([
'type' => OgMembershipInterface::TYPE_DEFAULT,
]);
$membership
->setOwner($this->users['groupmember'])
->setGroup($this->group)
->save();
// Add an OG Menu.
$this->ogMenu = OgMenu::create([
'label' => $this
->randomString(),
'id' => $this
->randomMachineName(),
]);
$this->ogMenu
->save();
// Add an OG Menu Instance.
$this->ogMenuInstance = OgMenuInstance::create([
'id' => $this
->randomMachineName(),
'type' => $this->ogMenu
->id(),
OgGroupAudienceHelperInterface::DEFAULT_FIELD => $this->group
->id(),
]);
$this->ogMenuInstance
->save();
}