MDL-73339 mnet_hosts: Add block only if main feature is enabled

The Network servers block should be added only if the MNet
authentication is enabled.
This commit is contained in:
Sara Arjona
2021-12-30 13:17:49 +01:00
parent 8246271f7c
commit b90bc54f4b
4 changed files with 136 additions and 0 deletions
+10
View File
@@ -153,4 +153,14 @@ class block_mnet_hosts extends block_list {
return $this->content;
}
/**
* This block shouldn't be added to a page if the mnet authentication method is disabled.
*
* @param moodle_page $page
* @return bool
*/
public function can_block_be_added(moodle_page $page): bool {
return is_enabled_auth('mnet');
}
}
@@ -0,0 +1,21 @@
@block @block_mnet_hosts @javascript @addablocklink
Feature: Add the network servers block when main feature is enabled
In order to add the Network servers block to my course
As a teacher
It should be added only if the MNet authentication is enabled.
Scenario: The network servers block can be added when mnet authentication is enabled
Given I log in as "admin"
And I navigate to "Plugins > Authentication > Manage authentication" in site administration
And I click on "Enable" "icon" in the "MNet authentication" "table_row"
And I am on site homepage
And I turn editing mode on
When I click on "Add a block" "link"
Then I should see "Network servers"
Scenario: The network servers block cannot be added when mnet authentication is disabled
Given I log in as "admin"
And I am on site homepage
And I turn editing mode on
When I click on "Add a block" "link"
Then I should not see "Network servers"
@@ -0,0 +1,41 @@
@block @block_mnet_hosts @javascript
Feature: Add the network servers block when main feature is disabled
In order to add the Network servers block to my course
As a teacher
It should be added only if the MNet authentication is enabled.
Scenario: The network servers block is displayed even when mnet authentication is disabled
Given I log in as "admin"
And I navigate to "Plugins > Authentication > Manage authentication" in site administration
And I click on "Enable" "icon" in the "MNet authentication" "table_row"
And I am on site homepage
And I turn editing mode on
And I add the "Network servers" block
When I navigate to "Plugins > Authentication > Manage authentication" in site administration
And I click on "Disable" "icon" in the "MNet authentication" "table_row"
And I am on site homepage
And I turn editing mode on
Then I should see "Network servers"
Scenario: The network servers block can be removed even when mnet authentication is disabled
Given I log in as "admin"
And I navigate to "Plugins > Authentication > Manage authentication" in site administration
And I click on "Enable" "icon" in the "MNet authentication" "table_row"
And I am on site homepage
And I turn editing mode on
And I add the "Network servers" block
And I turn editing mode on
And I open the "Network servers" blocks action menu
And I click on "Delete Network servers block" "link" in the "Network servers" "block"
And "Delete block?" "dialogue" should exist
And I click on "Cancel" "button" in the "Delete block?" "dialogue"
And I should see "Network servers"
And I navigate to "Plugins > Authentication > Manage authentication" in site administration
And I click on "Disable" "icon" in the "MNet authentication" "table_row"
And I am on site homepage
And I turn editing mode on
And I open the "Network servers" blocks action menu
And I click on "Delete Network servers block" "link" in the "Network servers" "block"
And "Delete block?" "dialogue" should exist
And I click on "Delete" "button" in the "Delete block?" "dialogue"
Then I should not see "Network servers"
@@ -0,0 +1,64 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace block_mnet_hosts\tests;
use advanced_testcase;
use block_mnet_hosts;
use context_course;
/**
* PHPUnit block_mnet_hosts tests
*
* @package block_mnet_hosts
* @category test
* @copyright 2021 Sara Arjona ([email protected])
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @coversDefaultClass \block_mnet_hosts
*/
class mnet_hosts_test extends advanced_testcase {
public static function setUpBeforeClass(): void {
require_once(__DIR__ . '/../../moodleblock.class.php');
require_once(__DIR__ . '/../block_mnet_hosts.php');
}
/**
* Test the behaviour of can_block_be_added() method.
*
* @covers ::can_block_be_added
*/
public function test_can_block_be_added(): void {
$this->resetAfterTest();
$this->setAdminUser();
// Create a course and prepare the page where the block will be added.
$course = $this->getDataGenerator()->create_course();
$page = new \moodle_page();
$page->set_context(context_course::instance($course->id));
$page->set_pagelayout('course');
$block = new block_mnet_hosts();
$pluginclass = \core_plugin_manager::resolve_plugininfo_class('auth');
// If mnet authentication is enabled, the method should return true.
$pluginclass::enable_plugin('mnet', 1);
$this->assertTrue($block->can_block_be_added($page));
// However, if the mnet authentication is disabled, the method should return false.
$pluginclass::enable_plugin('mnet', 0);
$this->assertFalse($block->can_block_be_added($page));
}
}