| Línea 26... |
Línea 26... |
| 26 |
* @package quizaccess_seb
|
26 |
* @package quizaccess_seb
|
| 27 |
* @author Andrew Madden <andrewmadden@catalyst-au.net>
|
27 |
* @author Andrew Madden <andrewmadden@catalyst-au.net>
|
| 28 |
* @copyright 2020 Catalyst IT
|
28 |
* @copyright 2020 Catalyst IT
|
| 29 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
29 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
| 30 |
*/
|
30 |
*/
|
| 31 |
class settings_provider_test extends \advanced_testcase {
|
31 |
final class settings_provider_test extends \advanced_testcase {
|
| 32 |
use \quizaccess_seb_test_helper_trait;
|
32 |
use \quizaccess_seb_test_helper_trait;
|
| Línea 33... |
Línea 33... |
| 33 |
|
33 |
|
| 34 |
/**
|
34 |
/**
|
| 35 |
* Mocked quiz form instance.
|
35 |
* Mocked quiz form instance.
|
| Línea 91... |
Línea 91... |
| 91 |
/**
|
91 |
/**
|
| 92 |
* Capability data for testing.
|
92 |
* Capability data for testing.
|
| 93 |
*
|
93 |
*
|
| 94 |
* @return array
|
94 |
* @return array
|
| 95 |
*/
|
95 |
*/
|
| 96 |
public function settings_capability_data_provider() {
|
96 |
public static function settings_capability_data_provider(): array {
|
| 97 |
$data = [];
|
97 |
$data = [];
|
| Línea 98... |
Línea 98... |
| 98 |
|
98 |
|
| 99 |
// Build first level SEB config settings. Any of this setting let us use SEB manual config.
|
99 |
// Build first level SEB config settings. Any of this setting let us use SEB manual config.
|
| 100 |
foreach (settings_provider::get_seb_settings_map()[settings_provider::USE_SEB_CONFIG_MANUALLY] as $name => $children) {
|
100 |
foreach (settings_provider::get_seb_settings_map()[settings_provider::USE_SEB_CONFIG_MANUALLY] as $name => $children) {
|
| Línea 175... |
Línea 175... |
| 175 |
* Test hideif rules.
|
175 |
* Test hideif rules.
|
| 176 |
*/
|
176 |
*/
|
| 177 |
public function test_hideifs(): void {
|
177 |
public function test_hideifs(): void {
|
| 178 |
$settinghideifs = settings_provider::get_quiz_hideifs();
|
178 |
$settinghideifs = settings_provider::get_quiz_hideifs();
|
| Línea 179... |
Línea 179... |
| 179 |
|
179 |
|
| Línea 180... |
Línea 180... |
| 180 |
$this->assertCount(23, $settinghideifs);
|
180 |
$this->assertCount(25, $settinghideifs);
|
| 181 |
|
181 |
|
| 182 |
$this->assertArrayHasKey('seb_templateid', $settinghideifs);
|
182 |
$this->assertArrayHasKey('seb_templateid', $settinghideifs);
|
| 183 |
$this->assertCount(1, $settinghideifs['seb_templateid']);
|
183 |
$this->assertCount(1, $settinghideifs['seb_templateid']);
|
| Línea 360... |
Línea 360... |
| 360 |
'seb_requiresafeexambrowser',
|
360 |
'seb_requiresafeexambrowser',
|
| 361 |
'noteq',
|
361 |
'noteq',
|
| 362 |
settings_provider::USE_SEB_CONFIG_MANUALLY
|
362 |
settings_provider::USE_SEB_CONFIG_MANUALLY
|
| 363 |
);
|
363 |
);
|
| Línea -... |
Línea 364... |
| - |
|
364 |
|
| - |
|
365 |
$this->assertArrayHasKey('seb_allowcapturecamera', $settinghideifs);
|
| - |
|
366 |
$this->assertCount(1, $settinghideifs['seb_allowcapturecamera']);
|
| - |
|
367 |
$this->assert_hide_if(
|
| - |
|
368 |
$settinghideifs['seb_allowcapturecamera'][0],
|
| - |
|
369 |
'seb_allowcapturecamera',
|
| - |
|
370 |
'seb_requiresafeexambrowser',
|
| - |
|
371 |
'noteq',
|
| - |
|
372 |
settings_provider::USE_SEB_CONFIG_MANUALLY
|
| - |
|
373 |
);
|
| - |
|
374 |
|
| - |
|
375 |
$this->assertArrayHasKey('seb_allowcapturemicrophone', $settinghideifs);
|
| - |
|
376 |
$this->assertCount(1, $settinghideifs['seb_allowcapturemicrophone']);
|
| - |
|
377 |
$this->assert_hide_if(
|
| - |
|
378 |
$settinghideifs['seb_allowcapturemicrophone'][0],
|
| - |
|
379 |
'seb_allowcapturemicrophone',
|
| - |
|
380 |
'seb_requiresafeexambrowser',
|
| - |
|
381 |
'noteq',
|
| - |
|
382 |
settings_provider::USE_SEB_CONFIG_MANUALLY
|
| - |
|
383 |
);
|
| 364 |
|
384 |
|
| 365 |
$this->assertArrayHasKey('seb_muteonstartup', $settinghideifs);
|
385 |
$this->assertArrayHasKey('seb_muteonstartup', $settinghideifs);
|
| 366 |
$this->assertCount(2, $settinghideifs['seb_muteonstartup']);
|
386 |
$this->assertCount(2, $settinghideifs['seb_muteonstartup']);
|
| 367 |
$this->assert_hide_if(
|
387 |
$this->assert_hide_if(
|
| 368 |
$settinghideifs['seb_muteonstartup'][0],
|
388 |
$settinghideifs['seb_muteonstartup'][0],
|
| Línea 620... |
Línea 640... |
| 620 |
}
|
640 |
}
|
| Línea 621... |
Línea 641... |
| 621 |
|
641 |
|
| 622 |
/**
|
642 |
/**
|
| 623 |
* Test SEB usage options.
|
643 |
* Test SEB usage options.
|
| 624 |
*
|
644 |
*
|
| 625 |
* @param string $settingcapability Setting capability to check manual option against.
|
645 |
* @param string $settingcapability Setting capability to check options against.
|
| 626 |
*
|
646 |
*
|
| 627 |
* @dataProvider settings_capability_data_provider
|
647 |
* @dataProvider settings_capability_data_provider
|
| 628 |
*/
|
648 |
*/
|
| 629 |
public function test_get_requiresafeexambrowser_options($settingcapability): void {
|
649 |
public function test_get_requiresafeexambrowser_options($settingcapability): void {
|
| Línea 654... |
Línea 674... |
| 654 |
// A new user does not have the capability to use the file manager and template.
|
674 |
// A new user does not have the capability to use the file manager and template.
|
| 655 |
$this->set_up_user_and_role();
|
675 |
$this->set_up_user_and_role();
|
| Línea 656... |
Línea 676... |
| 656 |
|
676 |
|
| Línea 657... |
Línea 677... |
| 657 |
$options = settings_provider::get_requiresafeexambrowser_options($this->context);
|
677 |
$options = settings_provider::get_requiresafeexambrowser_options($this->context);
|
| 658 |
|
678 |
|
| 659 |
$this->assertCount(2, $options);
|
679 |
$this->assertCount(1, $options);
|
| 660 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_CONFIG_MANUALLY, $options));
|
680 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_CONFIG_MANUALLY, $options));
|
| 661 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_TEMPLATE, $options));
|
681 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_TEMPLATE, $options));
|
| 662 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_UPLOAD_CONFIG, $options));
|
682 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_UPLOAD_CONFIG, $options));
|
| Línea 663... |
Línea 683... |
| 663 |
$this->assertTrue(array_key_exists(settings_provider::USE_SEB_CLIENT_CONFIG, $options));
|
683 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_CLIENT_CONFIG, $options));
|
| 664 |
$this->assertTrue(array_key_exists(settings_provider::USE_SEB_NO, $options));
|
684 |
$this->assertTrue(array_key_exists(settings_provider::USE_SEB_NO, $options));
|
| - |
|
685 |
|
| - |
|
686 |
assign_capability($settingcapability, CAP_ALLOW, $this->roleid, $this->context->id);
|
| - |
|
687 |
$options = settings_provider::get_requiresafeexambrowser_options($this->context);
|
| - |
|
688 |
$this->assertCount(1, $options);
|
| - |
|
689 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_CONFIG_MANUALLY, $options));
|
| - |
|
690 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_TEMPLATE, $options));
|
| - |
|
691 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_UPLOAD_CONFIG, $options));
|
| - |
|
692 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_CLIENT_CONFIG, $options));
|
| - |
|
693 |
$this->assertTrue(array_key_exists(settings_provider::USE_SEB_NO, $options));
|
| - |
|
694 |
|
| - |
|
695 |
assign_capability('quizaccess/seb:manage_seb_configuremanually', CAP_ALLOW, $this->roleid, $this->context->id);
|
| - |
|
696 |
$options = settings_provider::get_requiresafeexambrowser_options($this->context);
|
| - |
|
697 |
$this->assertCount(2, $options);
|
| - |
|
698 |
$this->assertTrue(array_key_exists(settings_provider::USE_SEB_CONFIG_MANUALLY, $options));
|
| - |
|
699 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_TEMPLATE, $options));
|
| - |
|
700 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_UPLOAD_CONFIG, $options));
|
| - |
|
701 |
$this->assertFalse(array_key_exists(settings_provider::USE_SEB_CLIENT_CONFIG, $options));
|
| - |
|
702 |
$this->assertTrue(array_key_exists(settings_provider::USE_SEB_NO, $options));
|
| 665 |
|
703 |
|
| 666 |
assign_capability($settingcapability, CAP_ALLOW, $this->roleid, $this->context->id);
|
704 |
assign_capability('quizaccess/seb:manage_seb_usesebclientconfig', CAP_ALLOW, $this->roleid, $this->context->id);
|
| 667 |
$options = settings_provider::get_requiresafeexambrowser_options($this->context);
|
705 |
$options = settings_provider::get_requiresafeexambrowser_options($this->context);
|
| 668 |
$this->assertCount(3, $options);
|
706 |
$this->assertCount(3, $options);
|
| 669 |
$this->assertTrue(array_key_exists(settings_provider::USE_SEB_CONFIG_MANUALLY, $options));
|
707 |
$this->assertTrue(array_key_exists(settings_provider::USE_SEB_CONFIG_MANUALLY, $options));
|
| Línea 909... |
Línea 947... |
| 909 |
$this->resetAfterTest();
|
947 |
$this->resetAfterTest();
|
| Línea 910... |
Línea 948... |
| 910 |
|
948 |
|
| 911 |
$user = $this->getDataGenerator()->create_user();
|
949 |
$user = $this->getDataGenerator()->create_user();
|
| Línea 912... |
Línea 950... |
| 912 |
$this->setUser($user);
|
950 |
$this->setUser($user);
|
| 913 |
|
951 |
|
| 914 |
$xml = file_get_contents(__DIR__ . '/fixtures/unencrypted.seb');
|
952 |
$xml = file_get_contents(self::get_fixture_path(__NAMESPACE__, 'unencrypted.seb'));
|
| 915 |
$itemid = $this->create_test_draftarea_file($xml);
|
953 |
$itemid = $this->create_test_draftarea_file($xml);
|
| Línea 916... |
Línea 954... |
| 916 |
$file = settings_provider::get_current_user_draft_file($itemid);
|
954 |
$file = settings_provider::get_current_user_draft_file($itemid);
|
| Línea 927... |
Línea 965... |
| 927 |
$this->course = $this->getDataGenerator()->create_course();
|
965 |
$this->course = $this->getDataGenerator()->create_course();
|
| 928 |
$this->quiz = $this->getDataGenerator()->create_module('quiz', ['course' => $this->course->id]);
|
966 |
$this->quiz = $this->getDataGenerator()->create_module('quiz', ['course' => $this->course->id]);
|
| 929 |
$this->context = \context_module::instance($this->quiz->cmid);
|
967 |
$this->context = \context_module::instance($this->quiz->cmid);
|
| 930 |
$this->set_up_user_and_role();
|
968 |
$this->set_up_user_and_role();
|
| Línea 931... |
Línea 969... |
| 931 |
|
969 |
|
| Línea 932... |
Línea 970... |
| 932 |
$xml = file_get_contents(__DIR__ . '/fixtures/unencrypted.seb');
|
970 |
$xml = file_get_contents(self::get_fixture_path(__NAMESPACE__, 'unencrypted.seb'));
|
| Línea 933... |
Línea 971... |
| 933 |
|
971 |
|
| Línea 949... |
Línea 987... |
| 949 |
$this->course = $this->getDataGenerator()->create_course();
|
987 |
$this->course = $this->getDataGenerator()->create_course();
|
| 950 |
$this->quiz = $this->getDataGenerator()->create_module('quiz', ['course' => $this->course->id]);
|
988 |
$this->quiz = $this->getDataGenerator()->create_module('quiz', ['course' => $this->course->id]);
|
| 951 |
$this->context = \context_module::instance($this->quiz->cmid);
|
989 |
$this->context = \context_module::instance($this->quiz->cmid);
|
| 952 |
$this->set_up_user_and_role();
|
990 |
$this->set_up_user_and_role();
|
| Línea 953... |
Línea 991... |
| 953 |
|
991 |
|
| 954 |
$xml = file_get_contents(__DIR__ . '/fixtures/unencrypted.seb');
|
992 |
$xml = file_get_contents(self::get_fixture_path(__NAMESPACE__, 'unencrypted.seb'));
|
| Línea 955... |
Línea 993... |
| 955 |
$draftitemid = $this->create_test_draftarea_file($xml);
|
993 |
$draftitemid = $this->create_test_draftarea_file($xml);
|
| Línea 956... |
Línea 994... |
| 956 |
|
994 |
|
| Línea 978... |
Línea 1016... |
| 978 |
$this->quiz = $this->create_test_quiz($this->course, settings_provider::USE_SEB_CONFIG_MANUALLY);
|
1016 |
$this->quiz = $this->create_test_quiz($this->course, settings_provider::USE_SEB_CONFIG_MANUALLY);
|
| 979 |
$this->context = \context_module::instance($this->quiz->cmid);
|
1017 |
$this->context = \context_module::instance($this->quiz->cmid);
|
| Línea 980... |
Línea 1018... |
| 980 |
|
1018 |
|
| Línea 981... |
Línea 1019... |
| 981 |
$this->set_up_user_and_role();
|
1019 |
$this->set_up_user_and_role();
|
| 982 |
|
1020 |
|
| Línea 983... |
Línea 1021... |
| 983 |
$xml = file_get_contents(__DIR__ . '/fixtures/unencrypted.seb');
|
1021 |
$xml = file_get_contents(self::get_fixture_path(__NAMESPACE__, 'unencrypted.seb'));
|
| 984 |
$draftitemid = $this->create_test_draftarea_file($xml);
|
1022 |
$draftitemid = $this->create_test_draftarea_file($xml);
|
| 985 |
|
1023 |
|
| Línea 1132... |
Línea 1170... |
| 1132 |
|
1170 |
|
| Línea 1133... |
Línea 1171... |
| 1133 |
$this->set_up_user_and_role();
|
1171 |
$this->set_up_user_and_role();
|
| Línea -... |
Línea 1172... |
| - |
|
1172 |
|
| - |
|
1173 |
$this->assertFalse(settings_provider::can_configure_manually($this->context));
|
| - |
|
1174 |
|
| 1134 |
|
1175 |
assign_capability('quizaccess/seb:manage_seb_configuremanually', CAP_ALLOW, $this->roleid, $this->context->id);
|
| 1135 |
$this->assertFalse(settings_provider::can_configure_manually($this->context));
|
1176 |
$this->assertFalse(settings_provider::can_configure_manually($this->context));
|
| 1136 |
|
1177 |
|
| Línea 1137... |
Línea 1178... |
| 1137 |
assign_capability($settingcapability, CAP_ALLOW, $this->roleid, $this->context->id);
|
1178 |
assign_capability($settingcapability, CAP_ALLOW, $this->roleid, $this->context->id);
|
| Línea 1192... |
Línea 1233... |
| 1192 |
$this->course = $this->getDataGenerator()->create_course();
|
1233 |
$this->course = $this->getDataGenerator()->create_course();
|
| 1193 |
$this->quiz = $this->create_test_quiz($this->course, settings_provider::USE_SEB_CONFIG_MANUALLY);
|
1234 |
$this->quiz = $this->create_test_quiz($this->course, settings_provider::USE_SEB_CONFIG_MANUALLY);
|
| 1194 |
$this->context = \context_module::instance($this->quiz->cmid);
|
1235 |
$this->context = \context_module::instance($this->quiz->cmid);
|
| Línea 1195... |
Línea 1236... |
| 1195 |
|
1236 |
|
| 1196 |
// Save file.
|
1237 |
// Save file.
|
| 1197 |
$xml = file_get_contents(__DIR__ . '/fixtures/unencrypted.seb');
|
1238 |
$xml = file_get_contents(self::get_fixture_path(__NAMESPACE__, 'unencrypted.seb'));
|
| 1198 |
$draftitemid = $this->create_test_draftarea_file($xml);
|
1239 |
$draftitemid = $this->create_test_draftarea_file($xml);
|
| 1199 |
settings_provider::save_filemanager_sebconfigfile_draftarea($draftitemid, $this->quiz->cmid);
|
1240 |
settings_provider::save_filemanager_sebconfigfile_draftarea($draftitemid, $this->quiz->cmid);
|
| 1200 |
$settings = seb_quiz_settings::get_record(['quizid' => $this->quiz->id]);
|
1241 |
$settings = seb_quiz_settings::get_record(['quizid' => $this->quiz->id]);
|
| 1201 |
$settings->set('requiresafeexambrowser', settings_provider::USE_SEB_UPLOAD_CONFIG);
|
1242 |
$settings->set('requiresafeexambrowser', settings_provider::USE_SEB_UPLOAD_CONFIG);
|
| Línea 1226... |
Línea 1267... |
| 1226 |
|
1267 |
|
| Línea 1227... |
Línea 1268... |
| 1227 |
$this->assertFalse(settings_provider::is_conflicting_permissions($this->context));
|
1268 |
$this->assertFalse(settings_provider::is_conflicting_permissions($this->context));
|
| Línea -... |
Línea 1269... |
| - |
|
1269 |
|
| - |
|
1270 |
$this->set_up_user_and_role();
|
| - |
|
1271 |
|
| - |
|
1272 |
$this->assertTrue(settings_provider::is_conflicting_permissions($this->context));
|
| - |
|
1273 |
|
| 1228 |
|
1274 |
assign_capability('quizaccess/seb:manage_seb_configuremanually', CAP_ALLOW, $this->roleid, $this->context->id);
|
| 1229 |
$this->set_up_user_and_role();
|
1275 |
$this->assertTrue(settings_provider::is_conflicting_permissions($this->context));
|
| 1230 |
|
1276 |
|
| Línea 1231... |
Línea 1277... |
| 1231 |
assign_capability($settingcapability, CAP_ALLOW, $this->roleid, $this->context->id);
|
1277 |
assign_capability($settingcapability, CAP_ALLOW, $this->roleid, $this->context->id);
|
| Línea 1291... |
Línea 1337... |
| 1291 |
$allsettings->seb_regexallowed = 18;
|
1337 |
$allsettings->seb_regexallowed = 18;
|
| 1292 |
$allsettings->seb_expressionsblocked = 19;
|
1338 |
$allsettings->seb_expressionsblocked = 19;
|
| 1293 |
$allsettings->seb_regexblocked = 20;
|
1339 |
$allsettings->seb_regexblocked = 20;
|
| 1294 |
$allsettings->seb_templateid = 21;
|
1340 |
$allsettings->seb_templateid = 21;
|
| 1295 |
$allsettings->seb_allowedbrowserexamkeys = 22;
|
1341 |
$allsettings->seb_allowedbrowserexamkeys = 22;
|
| - |
|
1342 |
$allsettings->seb_allowcapturecamera = 23;
|
| - |
|
1343 |
$allsettings->seb_allowcapturemicrophone = 24;
|
| Línea 1296... |
Línea 1344... |
| 1296 |
|
1344 |
|
| 1297 |
return $allsettings;
|
1345 |
return $allsettings;
|
| Línea 1298... |
Línea 1346... |
| 1298 |
}
|
1346 |
}
|
| Línea 1394... |
Línea 1442... |
| 1394 |
'seb_showwificontrol' => [],
|
1442 |
'seb_showwificontrol' => [],
|
| 1395 |
],
|
1443 |
],
|
| 1396 |
'seb_enableaudiocontrol' => [
|
1444 |
'seb_enableaudiocontrol' => [
|
| 1397 |
'seb_muteonstartup' => [],
|
1445 |
'seb_muteonstartup' => [],
|
| 1398 |
],
|
1446 |
],
|
| - |
|
1447 |
'seb_allowcapturecamera' => [],
|
| - |
|
1448 |
'seb_allowcapturemicrophone' => [],
|
| 1399 |
'seb_allowspellchecking' => [],
|
1449 |
'seb_allowspellchecking' => [],
|
| 1400 |
'seb_activateurlfiltering' => [
|
1450 |
'seb_activateurlfiltering' => [
|
| 1401 |
'seb_filterembeddedcontent' => [],
|
1451 |
'seb_filterembeddedcontent' => [],
|
| 1402 |
'seb_expressionsallowed' => [],
|
1452 |
'seb_expressionsallowed' => [],
|
| 1403 |
'seb_regexallowed' => [],
|
1453 |
'seb_regexallowed' => [],
|