MDL-54866 tool_mobile: Rename WS get_site_public_settings
[moodle.git] / admin / tool / mobile / tests / externallib_test.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Moodle Mobile admin tool external functions tests.
19  *
20  * @package    tool_mobile
21  * @category   external
22  * @copyright  2016 Juan Leyva
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  * @since      Moodle 3.1
25  */
27 defined('MOODLE_INTERNAL') || die();
29 global $CFG;
31 require_once($CFG->dirroot . '/webservice/tests/helpers.php');
33 use tool_mobile\external;
34 use tool_mobile\api;
36 /**
37  * External learning plans webservice API tests.
38  *
39  * @package     tool_mobile
40  * @copyright   2016 Juan Leyva
41  * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
42  * @since       Moodle 3.1
43  */
44 class tool_mobile_external_testcase extends externallib_advanced_testcase {
46     /**
47      * Test get_plugins_supporting_mobile.
48      * This is a very basic test because currently there aren't plugins supporting Mobile in core.
49      */
50     public function test_get_plugins_supporting_mobile() {
51         $result = external::get_plugins_supporting_mobile();
52         $result = external_api::clean_returnvalue(external::get_plugins_supporting_mobile_returns(), $result);
53         $this->assertCount(0, $result['warnings']);
54         $this->assertArrayHasKey('plugins', $result);
55         $this->assertTrue(is_array($result['plugins']));
56     }
58     public function test_get_public_config() {
59         global $CFG, $SITE;
61         $this->resetAfterTest(true);
62         $result = external::get_public_config();
63         $result = external_api::clean_returnvalue(external::get_public_config_returns(), $result);
65         // Test default values.
66         $context = context_system::instance();
67         $expected = array(
68             'wwwroot' => $CFG->wwwroot,
69             'httpswwwroot' => $CFG->httpswwwroot,
70             'sitename' => external_format_string($SITE->fullname, $context->id, true),
71             'guestlogin' => $CFG->guestloginbutton,
72             'rememberusername' => $CFG->rememberusername,
73             'authloginviaemail' => $CFG->authloginviaemail,
74             'registerauth' => $CFG->registerauth,
75             'forgottenpasswordurl' => $CFG->forgottenpasswordurl,
76             'authinstructions' => format_text($CFG->auth_instructions),
77             'authnoneenabled' => (int) is_enabled_auth('none'),
78             'enablewebservices' => $CFG->enablewebservices,
79             'enablemobilewebservice' => $CFG->enablemobilewebservice,
80             'maintenanceenabled' => $CFG->maintenance_enabled,
81             'maintenancemessage' => format_text($CFG->maintenance_message),
82             'typeoflogin' => api::LOGIN_VIA_APP,
83             'warnings' => array()
84         );
85         $this->assertEquals($expected, $result);
87         // Change some values.
88         set_config('registerauth', 'email');
89         $authinstructions = 'Something with <b>html tags</b>';
90         set_config('auth_instructions', $authinstructions);
91         set_config('typeoflogin', api::LOGIN_VIA_BROWSER, 'tool_mobile');
93         $expected['registerauth'] = 'email';
94         $expected['authinstructions'] = format_text($authinstructions);
95         $expected['typeoflogin'] = api::LOGIN_VIA_BROWSER;
96         $expected['launchurl'] = "$CFG->wwwroot/$CFG->admin/tool/mobile/launch.php";;
98         $result = external::get_public_config();
99         $result = external_api::clean_returnvalue(external::get_public_config_returns(), $result);
100         $this->assertEquals($expected, $result);
101     }
103     /**
104      * Test get_config
105      */
106     public function test_get_config() {
107         global $CFG, $SITE;
108         require_once($CFG->dirroot . '/course/format/lib.php');
110         $this->resetAfterTest(true);
111         $result = external::get_config();
112         $result = external_api::clean_returnvalue(external::get_config_returns(), $result);
114         // Test default values.
115         $context = context_system::instance();
116         $expected = array(
117             array('name' => 'fullname', 'value' => $SITE->fullname),
118             array('name' => 'shortname', 'value' => $SITE->shortname),
119             array('name' => 'summary', 'value' => $SITE->summary),
120             array('name' => 'frontpage', 'value' => $CFG->frontpage),
121             array('name' => 'frontpageloggedin', 'value' => $CFG->frontpageloggedin),
122             array('name' => 'maxcategorydepth', 'value' => $CFG->maxcategorydepth),
123             array('name' => 'frontpagecourselimit', 'value' => $CFG->frontpagecourselimit),
124             array('name' => 'numsections', 'value' => course_get_format($SITE)->get_course()->numsections),
125             array('name' => 'newsitems', 'value' => $SITE->newsitems),
126             array('name' => 'commentsperpage', 'value' => $CFG->commentsperpage),
127             array('name' => 'disableuserimages', 'value' => $CFG->disableuserimages),
128             array('name' => 'mygradesurl', 'value' => user_mygrades_url()->out(false)),
129         );
130         $this->assertCount(0, $result['warnings']);
131         $this->assertEquals($expected, $result['settings']);
133         // Change a value and retrieve filtering by section.
134         set_config('commentsperpage', 1);
135         $expected[9]['value'] = 1;
136         unset($expected[10]);
137         unset($expected[11]);
139         $result = external::get_config('frontpagesettings');
140         $result = external_api::clean_returnvalue(external::get_config_returns(), $result);
141         $this->assertCount(0, $result['warnings']);
142         $this->assertEquals($expected, $result['settings']);
143     }