Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

@core @core_admin @core_webservice
Feature: Manage external services tokens
  In order to manage external service usage
  As an admin
  I need to be able to create, filter and delete tokens

  Background:
    Given the following "users" exist:
      | username  | password  | firstname     | lastname    |
      | user1     | user1     | Firstname1    | Lastname1   |
      | user2     | user2     | Firstname2    | Lastname2   |
      | user3     | user3     | Firstname3    | Lastname3   |
      | user4     | user4     | Firstname4    | Lastname4   |

  @javascript
  Scenario: Add a token to user identified by name and then delete that token
    Given I log in as "admin"
    And I am on site homepage
    And I navigate to "Server > Web services > Manage tokens" in site administration
    And I press "Create token"
    And I set the field "Name" to "Webservice1"
    And I set the field "User" to "Firstname1 Lastname1"
    And I set the field "Service" to "Moodle mobile web service"
    And I set the field "IP restriction" to "127.0.0.1"
    When I press "Save changes"
    Then the following should exist in the "generaltable" table:
      | Name        | User                 | Service                   | IP restriction | Last access |
      | Webservice1 | Firstname1 Lastname1 | Moodle mobile web service | 127.0.0.1      | Never       |

    # Verify the message and the "Copy to clipboard" button.
    And I should see "Copy the token now. It won't be shown again once you leave this page."
    And "Copy to clipboard" "button" should exist

    # New token can only read once.
    And I reload the page
    And I should not see "Copy the token now. It won't be shown again once you leave this page."
    And "Copy to clipboard" "button" should not exist

    # Delete token.
    And I change the window size to "large"
    And I press "Delete" action in the "Webservice1" report row
    And I should see "Do you really want to delete this web service token for Firstname1 Lastname1 on the service Moodle mobile web service?"
    And I press "Delete"
    And "Webservice1" "table_row" should not exist

  @javascript @skip_chrome_zerosize
  Scenario: Tokens can be filtered by name (case-insensitive), by user and by service
    Given the following "core_webservice > Service" exists:
      | name      | Site information              |
      | shortname | siteinfo                      |
      | enabled   | 1                             |
    And the following "core_webservice > Service function" exists:
      | service   | siteinfo                      |
      | functions | core_webservice_get_site_info |
    And the following "core_webservice > Tokens" exist:
      | user      | service                       | name           | validuntil       |
      | user2     | siteinfo                      | WEBservice1    | ## yesterday ##  |
      | user3     | moodle_mobile_app             | webservicE3    | ## +1 year ##    |
      | user4     | siteinfo                      | New service2   | ## +1 year ##    |
    When I log in as "admin"
    And I navigate to "Server > Web services > Manage tokens" in site administration

    # All created tokens are shown by default.
    And "Firstname1 Lastname1" "table_row" should not exist
    And I should see "Site information" in the "Firstname2 Lastname2" "table_row"
    And I should see "Moodle mobile web service" in the "Firstname3 Lastname3" "table_row"
    And I should see "Site information" in the "Firstname4 Lastname4" "table_row"

    # Filter tokens by by name.
    And I click on "Filters" "button"
    And I set the following fields in the "Name" "core_reportbuilder > Filter" to these values:
      | Name operator   | Contains    |
      | Name value      | webservice  |
    And I click on "Apply" "button" in the "[data-region='report-filters']" "css_element"
    And I should see "Site information" in the "Firstname2 Lastname2" "table_row"
    And I should see "Moodle mobile web service" in the "Firstname3 Lastname3" "table_row"
    And "Firstname4 Lastname4" "table_row" should not exist
    And I click on "Reset all" "button" in the "[data-region='report-filters']" "css_element"

    # Filter tokens by user.
    And I set the following fields in the "User" "core_reportbuilder > Filter" to these values:
      | User operator   | Contains            |
      | User value      | Firstname2          |
    And I click on "Apply" "button" in the "[data-region='report-filters']" "css_element"
    Then "Firstname3 Lastname3" "table_row" should not exist
    And "Firstname4 Lastname4" "table_row" should not exist
    And I should see "Site information" in the "Firstname2 Lastname2" "table_row"
    And I click on "Reset all" "button" in the "[data-region='report-filters']" "css_element"

    # Filter tokens by service.
    And I set the following fields in the "Service" "core_reportbuilder > Filter" to these values:
      | Service value     | Site information |
    And I click on "Apply" "button" in the "[data-region='report-filters']" "css_element"
    And I should see "Site information" in the "Firstname2 Lastname2" "table_row"
    And I should see "Site information" in the "Firstname4 Lastname4" "table_row"
    And "Firstname3 Lastname3" "table_row" should not exist
    And I click on "Reset all" "button" in the "[data-region='report-filters']" "css_element"

    # Filter tokens by valid date.
    And I set the following fields in the "Valid until" "core_reportbuilder > Filter" to these values:
      | Valid until operator | Last   |
      | Valid until value    | 2      |
      | Valid until unit     | day(s) |
    And I click on "Apply" "button" in the "[data-region='report-filters']" "css_element"
    Then "Firstname3 Lastname3" "table_row" should not exist
    And "Firstname4 Lastname4" "table_row" should not exist
    And I should see "Site information" in the "Firstname2 Lastname2" "table_row"

    # Reset the filters.
    And I click on "Reset all" "button" in the "[data-region='report-filters']" "css_element"
    And I should see "Site information" in the "Firstname2 Lastname2" "table_row"
    And I should see "Moodle mobile web service" in the "Firstname3 Lastname3" "table_row"
    And I should see "Site information" in the "Firstname4 Lastname4" "table_row"

  @javascript
  Scenario: Tokens table should display missing capabilities
    Given the following "core_webservice > Services" exist:
      | name            | shortname     | enabled |
      | Test Service 1  | testservice1  | 1       |
      | Test Service 2  | testservice2  | 1       |
    And the following "core_webservice > Service functions" exist:
      | service       | functions                           |
      | testservice1  | block_accessreview_get_module_data  |
      | testservice2  | core_block_fetch_addable_blocks     |
    And the following "core_webservice > Tokens" exist:
      | user      | service       | name        |
      | user1     | testservice1  | Token 01    |
      | user2     | testservice2  | Token 02    |
    When I log in as "admin"
    And I navigate to "Server > Web services > Manage tokens" in site administration
    # Check the missing capabilities.
    Then I should see "View the accessibility review" in the "Token 01" "table_row"
    And I should see "block/accessreview:view" in the "Token 01" "table_row"
    Then I should see "Manage blocks on a page" in the "Token 02" "table_row"
    And I should see "moodle/site:manageblocks" in the "Token 02" "table_row"