AutorÃa | Ultima modificación | Ver Log |
<?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 invitation class.** @package mod_zoom* @author Andrew Madden <andrewmadden@catalyst-au.net>* @copyright 2021 Catalyst IT* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/namespace mod_zoom;use advanced_testcase;use context_system;use context_course;use moodle_url;/*** PHPunit testcase class for invitations.* @covers \mod_zoom\invitation*/final class mod_zoom_invitation_test extends advanced_testcase {/*** Setup to ensure that fixtures are loaded.*/public static function setUpBeforeClass(): void {global $CFG;require_once($CFG->libdir . '/accesslib.php');}/*** Run before every test.*/protected function setUp(): void {set_config('invitationregexenabled', 1, 'zoom');}/*** Test zoom invitation display message for user with all capabilities.*/public function test_display_message_when_user_has_all_capabilities(): void {$this->resetAfterTest();$this->setAdminUser();$course = $this->getDataGenerator()->create_course();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043";$this->assertEquals($expectedmessage, $message);}/*** Test zoom invitation display message for user with only the mod/zoom:viewjoinurl capability.*/public function test_display_message_when_user_has_viewjoinurl_capability(): void {$this->resetAfterTest();$this->setAdminUser();$user = $this->getDataGenerator()->create_user();$course = $this->getDataGenerator()->create_course();$role = $this->getDataGenerator()->create_role();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);assign_capability('mod/zoom:viewjoinurl', CAP_ALLOW, $role, context_system::instance()->id);role_assign($role, $user->id, context_course::instance($course->id));$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid, $user->id);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123";$this->assertEquals($expectedmessage, $message);}/*** Test zoom invitation display message for user with only the mod/zoom:viewdialin capability.*/public function test_display_message_when_user_has_viewdialin_capability(): void {$this->resetAfterTest();$this->setAdminUser();$user = $this->getDataGenerator()->create_user();$course = $this->getDataGenerator()->create_course();$role = $this->getDataGenerator()->create_role();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);assign_capability('mod/zoom:viewdialin', CAP_ALLOW, $role, context_system::instance());role_assign($role, $user->id, context_course::instance($course->id));$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid, $user->id);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". "\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043";$this->assertEquals($expectedmessage, $message);}/*** Test zoom invitation display message for user has no capabilities.*/public function test_display_message_when_user_has_no_capabilities(): void {$this->resetAfterTest();$this->setAdminUser();$user = $this->getDataGenerator()->create_user();$course = $this->getDataGenerator()->create_course();$role = $this->getDataGenerator()->create_role();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);role_assign($role, $user->id, context_course::instance($course->id));$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid, $user->id);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London";$this->assertEquals($expectedmessage, $message);}/*** Test message if regex pattern is intentionally set to empty for an element.*/public function test_display_message_when_a_regex_pattern_is_empty(): void {global $PAGE;$this->resetAfterTest();$this->setAdminUser();set_config('invitation_joinurl', '', 'zoom');$user = $this->getDataGenerator()->create_user();$course = $this->getDataGenerator()->create_course();$role = $this->getDataGenerator()->create_role();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);role_assign($role, $user->id, context_course::instance($course->id));// Set mock zoom activity URL for page as exception messages expect it.$PAGE->set_url(new moodle_url('/mod/zoom/view.php?id=123'));$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid, $user->id);$this->assertDebuggingNotCalled();}/*** Test debug message if regex pattern is not valid for an element.*/public function test_display_message_when_a_regex_pattern_is_invalid(): void {global $PAGE;$this->resetAfterTest();$this->setAdminUser();set_config('invitation_joinurl', '~', 'zoom');$user = $this->getDataGenerator()->create_user();$course = $this->getDataGenerator()->create_course();$role = $this->getDataGenerator()->create_role();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);role_assign($role, $user->id, context_course::instance($course->id));// Set mock zoom activity URL for page as exception messages expect it.$PAGE->set_url(new moodle_url('/mod/zoom/view.php?id=123'));$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid, $user->id);$this->assertDebuggingCalled('Error in regex for zoom invitation element: "joinurl" with pattern: "~".');}/*** Test debug message if no match is found using regex pattern for an element.*/public function test_display_message_when_a_regex_pattern_is_finds_no_match(): void {$this->resetAfterTest();$this->setAdminUser();set_config('invitation_joinurl', '/nomatch/mi', 'zoom');$user = $this->getDataGenerator()->create_user();$course = $this->getDataGenerator()->create_course();$role = $this->getDataGenerator()->create_role();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);role_assign($role, $user->id, context_course::instance($course->id));$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid, $user->id);$this->assertDebuggingCalled('No match found in zoom invitation for element: "joinurl" with pattern: "/nomatch/mi".');}/*** Test removing the invite sentence from the zoom meeting message.*/public function test_display_message_has_invite_removed_if_setting_enabled(): void {$this->resetAfterTest();$this->setAdminUser();set_config('invitationremoveinvite', '1', 'zoom');$course = $this->getDataGenerator()->create_course();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid);$expectedmessage = "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043";$this->assertEquals($expectedmessage, $message);}/*** Test not removing the invite sentence from the zoom meeting message.*/public function test_display_message_does_not_have_invite_removed_if_setting_disabled(): void {$this->resetAfterTest();$this->setAdminUser();set_config('invitationremoveinvite', '0', 'zoom');$course = $this->getDataGenerator()->create_course();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043";$this->assertEquals($expectedmessage, $message);}/*** Test removing the iCal link from the zoom meeting message.*/public function test_display_message_has_icallink_removed_if_setting_enabled(): void {$this->resetAfterTest();$this->setAdminUser();set_config('invitationremoveicallink', '1', 'zoom');$course = $this->getDataGenerator()->create_course();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);// Test a scheduled meeting.$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043";$this->assertEquals($expectedmessage, $message);// Test a recurring meeting with no fixed time.$message = (new invitation($this->get_mock_invitation_message_recurringnofixed()))->get_display_string($zoom->cmid);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: This is a recurring meeting Meet anytime\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043";$this->assertEquals($expectedmessage, $message);// Test a recurring meeting with fixed time.$message = (new invitation($this->get_mock_invitation_message_recurringfixed()))->get_display_string($zoom->cmid);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". " Every day, until Mar 17, 2021, 3 occurrence(s)\r\n". " Mar 15, 2021 06:08 AM\r\n". " Mar 16, 2021 06:08 AM\r\n". " Mar 17, 2021 06:08 AM\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043";$this->assertEquals($expectedmessage, $message);// We expect that the debugging was called two times:// - one time for the scheduled meeting// - one time for the recurring meeting with no fixed time.$debugmessage = 'No match found in zoom invitation for element: "icallink"'. ' with pattern: "/^.+download and import the following iCalendar.+$\n.+$/mi".';$this->assertDebuggingCalledCount(2, [$debugmessage, $debugmessage]);}/*** Test not removing the iCal link from the zoom meeting message.*/public function test_display_message_does_not_have_icallink_removed_if_setting_disabled(): void {$this->resetAfterTest();$this->setAdminUser();set_config('invitationremoveicallink', '0', 'zoom');$course = $this->getDataGenerator()->create_course();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);// Test a scheduled meeting.$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043";$this->assertEquals($expectedmessage, $message);// Test a recurring meeting with no fixed time.$message = (new invitation($this->get_mock_invitation_message_recurringnofixed()))->get_display_string($zoom->cmid);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: This is a recurring meeting Meet anytime\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043";$this->assertEquals($expectedmessage, $message);// Test a recurring meeting with fixed time.$message = (new invitation($this->get_mock_invitation_message_recurringfixed()))->get_display_string($zoom->cmid);$expectedmessage = "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". " Every day, until Mar 17, 2021, 3 occurrence(s)\r\n". " Mar 15, 2021 06:08 AM\r\n". " Mar 16, 2021 06:08 AM\r\n". " Mar 17, 2021 06:08 AM\r\n". "Please download and import the following iCalendar (.ics) files to your calendar system.\r\n". "Zoom Meeting: https://us02web.zoom.us/meeting/u7Utd-GqqTkiEtEkvHci3z_X0W3TMjX_Avua/ics?icsToken=". "88tyKu-prjsiGNOXuBGCR_McAoigWerwtnpHj7d4lwnNACkAeDzOZtURBp91KOfx\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043";$this->assertEquals($expectedmessage, $message);}/*** Test get_display_string returns null without throwing an error if the invitation string provided is null.*/public function test_display_message_when_instantiated_with_null_zoom_meeting_invitation(): void {$this->resetAfterTest();$this->setAdminUser();$course = $this->getDataGenerator()->create_course();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);$message = (new invitation(null))->get_display_string($zoom->cmid);$this->assertNull($message);}/*** Test display message is returned in full regardless of capabilities if regex patterns are disabled.*/public function test_display_message_when_user_has_no_capabilities_with_regex_disabled(): void {set_config('invitationregexenabled', 0, 'zoom');$this->resetAfterTest();$this->setAdminUser();$user = $this->getDataGenerator()->create_user();$course = $this->getDataGenerator()->create_course();$role = $this->getDataGenerator()->create_role();$zoom = $this->getDataGenerator()->create_module('zoom', ['course' => $course]);role_assign($role, $user->id, context_course::instance($course->id));$message = (new invitation($this->get_mock_invitation_message_scheduledmeeting()))->get_display_string($zoom->cmid, $user->id);$expectedmessage = $this->get_mock_invitation_message_scheduledmeeting();$this->assertEquals($expectedmessage, $message);}/*** Get a mock zoom invitation email message for a scheduled meeting.** @return string*/private function get_mock_invitation_message_scheduledmeeting(): string {return "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043\r";}/*** Get a mock zoom invitation email message for a recurring meeting with no fixed time.** @return string*/private function get_mock_invitation_message_recurringnofixed(): string {return "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: This is a recurring meeting Meet anytime\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043\r";}/*** Get a mock zoom invitation email message for a recurring meeting with fixed time.** @return string*/private function get_mock_invitation_message_recurringfixed(): string {return "Organization is inviting you to a scheduled Zoom meeting.\r\n". "\r\n". "Topic: Zoom Meeting\r\n". "Time: Mar 15, 2021 06:08 AM London\r\n". " Every day, until Mar 17, 2021, 3 occurrence(s)\r\n". " Mar 15, 2021 06:08 AM\r\n". " Mar 16, 2021 06:08 AM\r\n". " Mar 17, 2021 06:08 AM\r\n". "Please download and import the following iCalendar (.ics) files to your calendar system.\r\n". "Zoom Meeting: https://us02web.zoom.us/meeting/u7Utd-GqqTkiEtEkvHci3z_X0W3TMjX_Avua/ics?icsToken=". "88tyKu-prjsiGNOXuBGCR_McAoigWerwtnpHj7d4lwnNACkAeDzOZtURBp91KOfx\r\n". "\r\n". "Join Zoom Meeting\r\n". "https://us02web.zoom.us/j/12341234123?pwd=THBLWExVS0QyYnV1Z1nZTDJGYVI2QT09\r\n". "\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123123\r\n". "One tap mobile\r\n". "+61323452345,,12341234123#,,,,*123456# Australia\r\n". "+61312341234,,12341234123#,,,,*123456# Australia\r\n". "\r\n". "Dial by your location\r\n". " +61 3 5678 5678 Australia\r\n". " +61 3 4567 4567 Australia\r\n". " +61 3 3456 3456 Australia\r\n". " +61 3 2345 2345 Australia\r\n". " +61 3 1234 1234 Australia\r\n". "Meeting ID: 123 1234 1234\r\n". "Passcode: 123456\r\n". "Find your local number: https://us02web.zoom.us/u/abcde12345\r\n". "\r\n". "Join by SIP\r\n". "1231231231234@zoomabc.com\r\n". "\r\n". "Join by H.323\r\n". "162.255.37.11 (US West)\r\n". "162.255.36.11 (US East)\r\n". "115.114.131.7 (India Mumbai)\r\n". "115.114.115.7 (India Hyderabad)\r\n". "213.19.144.110 (Amsterdam Netherlands)\r\n". "213.244.140.110 (Germany)\r\n". "103.122.166.55 (Australia Sydney)\r\n". "103.122.167.55 (Australia Melbourne)\r\n". "149.137.40.110 (Singapore)\r\n". "64.211.144.160 (Brazil)\r\n". "69.174.57.160 (Canada Toronto)\r\n". "65.39.152.160 (Canada Vancouver)\r\n". "207.226.132.110 (Japan Tokyo)\r\n". "149.137.24.110 (Japan Osaka)\r\n". "Meeting ID: 966 7989 3993\r\n". "Passcode: 44730043\r";}}