moodle/user/tests/behat/contact_site_support.feature
Michael Hawkins e3b3ba90c8 MDL-74643 core_user: New admin setting for site support availability
This allows admins to configure whether contact site support is
available to everyone, authenticated users, or nobody.

The behat testing checks linked and direct access for each setting,
as well as adding testing that the support page override works as
expected.
2022-10-31 18:58:06 +08:00

107 lines
5.6 KiB
Gherkin

@core @core_user
Feature: Contact site support method and availability can be customised
In order to effectively support people using my Moodle site
As an admin
I need to be able to configure the site support method and who has access to it
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| user1 | User | One | user1@example.com |
Scenario: Contact site support can be made available to all site visitors
Given the following config values are set as admin:
| supportavailability | 2 |
# Confirm unauthenticated visitor has access to the contact form.
When I am on site homepage
Then I should see "Contact site support" in the "page-footer" "region"
And I click on "Contact site support" "link" in the "page-footer" "region"
And I should see "Contact site support" in the "page-header" "region"
# Confirm someone logged in as guest has access to the contact form.
And I log in as "guest"
And I should see "Contact site support" in the "page-footer" "region"
And I click on "Contact site support" "link" in the "page-footer" "region"
And I should see "Contact site support" in the "page-header" "region"
And I log out
# Confirm logged in user has access to the contact form.
And I log in as "user1"
And I should see "Contact site support" in the "page-footer" "region"
And I click on "Contact site support" "link" in the "page-footer" "region"
And I should see "Contact site support" in the "page-header" "region"
Scenario: Contact site support can be limited to authenticated users
Given the following config values are set as admin:
| supportavailability | 1 |
# Confirm unauthenticated visitor cannot see the option or directly access the page.
When I am on site homepage
Then I should not see "Contact site support" in the "page-footer" "region"
And I am on the "user > Contact Site Support" page
And I should see "Acceptance test site" in the "page-header" "region"
And I should not see "Contact site support" in the "page-header" "region"
# Confirm someone logged in as guest cannot see the option or directly access the page.
And I log in as "guest"
And I should not see "Contact site support" in the "page-footer" "region"
And I am on the "user > Contact Site Support" page
And I should see "Acceptance test site" in the "page-header" "region"
And I should not see "Contact site support" in the "page-header" "region"
And I log out
# Confirm logged in user has access to the contact form.
And I log in as "user1"
And I should see "Contact site support" in the "page-footer" "region"
And I click on "Contact site support" "link" in the "page-footer" "region"
And I should see "Contact site support" in the "page-header" "region"
Scenario: Contact site support can be disabled
Given the following config values are set as admin:
| supportavailability | 0 |
| defaulthomepage | home |
# Confirm unauthenticated visitor cannot see the option.
When I am on site homepage
Then I should not see "Contact site support" in the "page-footer" "region"
# Confirm someone logged in as guest cannot see the option.
And I log in as "guest"
And I should not see "Contact site support" in the "page-footer" "region"
And I log out
# Confirm logged in user cannot see the option.
And I log in as "user1"
And I should not see "Contact site support" in the "page-footer" "region"
And I log out
# Confirm admin cannot see the option.
And I log in as "admin"
And I should not see "Contact site support" in the "page-footer" "region"
# Confirm visiting the contact form directly without permission redirects to the homepage.
And I am on the "user > Contact Site Support" page
And I should see "Acceptance test site" in the "page-header" "region"
And I should not see "Contact site support" in the "page-header" "region"
@javascript
Scenario: Contact site support link opens a custom support page URL if set
Given the following config values are set as admin:
| supportavailability | 1 |
| supportpage | user/profile.php |
When I log in as "user1"
And I am on site homepage
And I click on "Contact site support" "link" in the "page-footer" "region"
And I switch to the browser tab opened by the app
Then I should see "User One" in the "page-header" "region"
And I should not see "Contact site support" in the "page-header" "region"
And I close the browser tab opened by the app
Scenario: Visiting the contact site support page directly will redirect to the custom support page if set
Given the following config values are set as admin:
| supportavailability | 2 |
| supportpage | profile.php |
When I log in as "user1"
And I am on the "user > Contact Site Support" page
Then I should see "User One" in the "page-header" "region"
And I should not see "Contact site support" in the "page-header" "region"
Scenario: Visiting the contact site support page still redirects to homepage if access to support is disabled
Given the following config values are set as admin:
| supportavailability | 0 |
| supportpage | profile.php |
| defaulthomepage | home |
When I log in as "user1"
And I am on the "user > Contact Site Support" page
Then I should see "Acceptance test site" in the "page-header" "region"
And I should not see "Contact site support" in the "page-header" "region"