public function WebformGroupFormAccessTest::testGroupFormAccess in Webform 8.5
Same name and namespace in other branches
- 6.x modules/webform_group/tests/src/Functional/WebformGroupFormAccessTest.php \Drupal\Tests\webform_group\Functional\WebformGroupFormAccessTest::testGroupFormAccess()
Tests webform group form access.
File
- modules/
webform_group/ tests/ src/ Functional/ WebformGroupFormAccessTest.php, line 17
Class
- WebformGroupFormAccessTest
- Tests webform group form access.
Namespace
Drupal\Tests\webform_group\FunctionalCode
public function testGroupFormAccess() {
// Webform.
$webform = Webform::load('contact');
// Default group.
$group = $this
->createGroup([
'type' => 'default',
]);
// Webform node.
$node = $this
->createWebformNode('contact');
$nid = $node
->id();
// Users.
$outsider_user = $this
->createUser();
$member_user = $this
->createUser();
$group
->addMember($member_user);
$custom_user = $this
->createUser();
$group
->addMember($custom_user, [
'group_roles' => [
'default-custom',
],
]);
$group
->save();
/**************************************************************************/
// Create access.
/**************************************************************************/
// Logout.
$this
->drupalLogout();
// Check that the form is displayed to anonymous user.
$this
->drupalGet('/node/' . $node
->id());
$this
->assertFieldByName('message');
// Login as an outsider user.
$this
->drupalLogin($outsider_user);
// Check that the form is displayed to outsider user.
$this
->drupalGet('/node/' . $node
->id());
$this
->assertFieldByName('message');
// Login as a member user.
$this
->drupalLogin($member_user);
// Check that the form is displayed to member user.
$this
->drupalGet('/node/' . $node
->id());
$this
->assertFieldByName('message');
// Add webform node to group.
$group
->addContent($node, 'group_node:webform');
$group
->save();
// Remove anonymous and authenticated user roles.
$access = $webform
->getAccessRules();
$access['create']['roles'] = [];
$access['create']['group_roles'] = [];
$webform
->setAccessRules($access);
$webform
->save();
// Logout.
$this
->drupalLogout();
// Check that the form is NOT displayed to anonymous user.
$this
->drupalGet('/node/' . $node
->id());
$this
->assertNoFieldByName('message');
// Login as an outsider user.
$this
->drupalLogin($outsider_user);
// Check that the form is NOT displayed to outsider user.
$this
->drupalGet('/node/' . $node
->id());
$this
->assertNoFieldByName('message');
// Allow outsider to access webform.
$access['create']['group_roles'][] = 'outsider';
$webform
->setAccessRules($access);
$webform
->save();
// Check that the form is displayed to outsider user.
$this
->drupalGet('/node/' . $node
->id());
$this
->assertFieldByName('message');
// Login as an member user.
$this
->drupalLogin($member_user);
// Check that the form is NOT displayed to member user.
$this
->drupalGet('/node/' . $node
->id());
$this
->assertNoFieldByName('message');
// Allow member to access webform.
$access['create']['group_roles'][] = 'member';
$webform
->setAccessRules($access);
$webform
->save();
// Check that the form is displayed to member user.
$this
->drupalGet('/node/' . $node
->id());
$this
->assertFieldByName('message');
/**************************************************************************/
// Update any access.
/**************************************************************************/
$this
->drupalLogout();
// Check that anonymous can't access the submission page.
$this
->drupalGet("/node/{$nid}/webform/results/submissions");
$this
->assertResponse(403);
// Login as an member user.
$this
->drupalLogin($member_user);
// Check that member can't access the submission page.
$this
->drupalGet("/node/{$nid}/webform/results/submissions");
$this
->assertResponse(403);
// Allow member to access submissions.
$access['view_any']['group_roles'][] = 'member';
$webform
->setAccessRules($access);
$webform
->save();
// Check that member can access the submission page.
$this
->drupalGet("/node/{$nid}/webform/results/submissions");
$this
->assertResponse(200);
}