MDL-78509 tool_mfa: Improve PHPUnit for factor_cohort and factor_role

This commit is contained in:
Huong Nguyen
2023-08-29 10:39:58 +07:00
parent 83522d40d8
commit 33d04612cd
4 changed files with 41 additions and 20 deletions
@@ -136,12 +136,12 @@ class factor extends object_factor_base {
}
/**
* Get array of the selected cohorts.
* Get cohorts information by given ids.
*
* @param array $selectedcohorts
* @param array $selectedcohorts List of cohort ids.
* @return array
*/
public function get_cohorts(array $selectedcohorts) : array {
public function get_cohorts(array $selectedcohorts): array {
global $DB;
[$insql, $inparams] = $DB->get_in_or_equal($selectedcohorts);
@@ -47,6 +47,7 @@ class factor_test extends \advanced_testcase {
$selectedcohorts = get_config('factor_cohort', 'cohorts');
$selectedcohorts = $cohortfactor->get_cohorts(explode(',', $selectedcohorts));
$this->assertArrayHasKey($cohort->id, $selectedcohorts);
$this->assertStringContainsString(
implode(', ', $selectedcohorts),
$cohortfactor->get_summary_condition()
+9 -11
View File
@@ -154,29 +154,27 @@ class factor extends object_factor_base {
}
/**
* Get array of the selected role name.
* Get roles information by given ids.
*
* @param array $selectedroles
* @param array $selectedroles List of role ids.
* @return array
*/
public function get_roles(array $selectedroles) : array {
public function get_roles(array $selectedroles): array {
global $DB;
$roles = [];
// Checks for admin role and gets its role name.
if (($key = array_search('admin', $selectedroles)) !== false) {
if (in_array('admin', $selectedroles)) {
$roles[] = get_string('administrator');
unset($selectedroles[$key]);
}
$integerroles = array_map('intval', $selectedroles);
// Gets role name for all non admin roles.
if (count($selectedroles) > 0) {
[$insql, $inparams] = $DB->get_in_or_equal($selectedroles);
if (!empty($integerroles)) {
[$insql, $inparams] = $DB->get_in_or_equal($integerroles);
$otherroles = $DB->get_records_select('role', 'id ' . $insql, $inparams);
foreach ($otherroles as $role) {
$roles[] = role_get_name($role);
}
$otherrolenames = role_fix_names($otherroles, null, ROLENAME_ALIAS, true);
$roles = array_merge($roles, $otherrolenames);
}
return $roles;
@@ -37,58 +37,80 @@ class factor_test extends \advanced_testcase {
$this->resetAfterTest();
$managerrole = $DB->get_record('role', ['shortname' => 'manager']);
$teacherrole = $DB->get_record('role', ['shortname' => 'teacher']);
$studentrole = $DB->get_record('role', ['shortname' => 'student']);
$adminrolename = get_string('administrator');
$managerrolename = role_get_name($managerrole);
$teacherrolename = role_get_name($teacherrole);
$studentrolename = role_get_name($studentrole);
set_config('enabled', 1, 'factor_role');
$rolefactor = \tool_mfa\plugininfo\factor::get_factor('role');
// Admin is disabled by default in this factor.
$selectedroles = get_config('factor_role', 'roles');
$selectedroles = $rolefactor->get_roles(explode(',', $selectedroles));
$this->assertContains($adminrolename, $selectedroles);
$this->assertNotContains($managerrolename, $selectedroles);
$this->assertNotContains($teacherrolename, $selectedroles);
$this->assertNotContains($studentrolename, $selectedroles);
$this->assertStringContainsString(
implode(', ', $selectedroles),
$rolefactor->get_summary_condition()
);
// Disabled role factor for managers.
$managerrole = $DB->get_record('role', ['shortname' => 'manager']);
set_config('roles', $managerrole->id, 'factor_role');
$selectedroles = get_config('factor_role', 'roles');
$selectedroles = $rolefactor->get_roles(explode(',', $selectedroles));
$this->assertNotContains($adminrolename, $selectedroles);
$this->assertContains($managerrolename, $selectedroles);
$this->assertNotContains($teacherrolename, $selectedroles);
$this->assertNotContains($studentrolename, $selectedroles);
$this->assertStringContainsString(
implode(', ', $selectedroles),
$rolefactor->get_summary_condition()
);
// Disabled role factor for teachers.
$teacherrole = $DB->get_record('role', ['shortname' => 'teacher']);
set_config('roles', $teacherrole->id, 'factor_role');
$selectedroles = get_config('factor_role', 'roles');
$selectedroles = $rolefactor->get_roles(explode(',', $selectedroles));
$this->assertNotContains($adminrolename, $selectedroles);
$this->assertNotContains($managerrolename, $selectedroles);
$this->assertContains($teacherrolename, $selectedroles);
$this->assertNotContains($studentrolename, $selectedroles);
$this->assertStringContainsString(
implode(', ', $selectedroles),
$rolefactor->get_summary_condition()
);
// Disabled role factor for students.
$studentrole = $DB->get_record('role', ['shortname' => 'student']);
set_config('roles', $studentrole->id, 'factor_role');
$selectedroles = get_config('factor_role', 'roles');
$selectedroles = $rolefactor->get_roles(explode(',', $selectedroles));
$this->assertNotContains($adminrolename, $selectedroles);
$this->assertNotContains($managerrolename, $selectedroles);
$this->assertNotContains($teacherrolename, $selectedroles);
$this->assertContains($studentrolename, $selectedroles);
$this->assertStringContainsString(
implode(', ', $selectedroles),
$rolefactor->get_summary_condition()
);
// Disabled role factor for admins, managers, teachers and students.
$managerrole = $DB->get_record('role', ['shortname' => 'manager']);
$teacherrole = $DB->get_record('role', ['shortname' => 'teacher']);
$studentrole = $DB->get_record('role', ['shortname' => 'student']);
set_config('roles', "admin,$managerrole->id,$teacherrole->id,$studentrole->id", 'factor_role');
$selectedroles = get_config('factor_role', 'roles');
$selectedroles = $rolefactor->get_roles(explode(',', $selectedroles));
$this->assertContains($adminrolename, $selectedroles);
$this->assertContains($managerrolename, $selectedroles);
$this->assertContains($teacherrolename, $selectedroles);
$this->assertContains($studentrolename, $selectedroles);
$this->assertStringContainsString(
implode(', ', $selectedroles),
$rolefactor->get_summary_condition()