diff --git a/mod/lti/classes/event/unknown_service_api_called.php b/mod/lti/classes/event/unknown_service_api_called.php index 9a3c06acc1c..6dd453dc689 100644 --- a/mod/lti/classes/event/unknown_service_api_called.php +++ b/mod/lti/classes/event/unknown_service_api_called.php @@ -65,10 +65,9 @@ class unknown_service_api_called extends \core\event\base { * Init method. */ protected function init() { - $this->data['objecttable'] = 'lti'; $this->data['crud'] = 'r'; $this->data['edulevel'] = self::LEVEL_OTHER; - $this->data['context'] = \context_system::instance(); + $this->context = \context_system::instance(); } /** diff --git a/mod/lti/service.php b/mod/lti/service.php index 7202289cec6..f117087ebc7 100644 --- a/mod/lti/service.php +++ b/mod/lti/service.php @@ -174,17 +174,18 @@ switch ($messagetype) { $data = new stdClass(); $data->body = $rawbody; $data->xml = $xml; + $data->messageid = lti_parse_message_id($xml); $data->messagetype = $messagetype; $data->consumerkey = $consumerkey; $data->sharedsecret = $sharedsecret; $eventdata = array(); $eventdata['other'] = array(); - $eventdata['other']['messageid'] = lti_parse_message_id($xml); + $eventdata['other']['messageid'] = $data->messageid; $eventdata['other']['messagetype'] = $messagetype; $eventdata['other']['consumerkey'] = $consumerkey; // Before firing the event, allow subplugins a chance to handle. - if (lti_extend_lti_services((object) $eventdata['other'])) { + if (lti_extend_lti_services($data)) { break; } diff --git a/mod/lti/tests/event/unknown_service_api_called_test.php b/mod/lti/tests/event/unknown_service_api_called_test.php new file mode 100644 index 00000000000..86359cbb4d1 --- /dev/null +++ b/mod/lti/tests/event/unknown_service_api_called_test.php @@ -0,0 +1,79 @@ +. + +/** + * Unknown service API called event tests + * + * @package mod_lti + * @copyright Copyright (c) 2012 Moodlerooms Inc. (http://www.moodlerooms.com) + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +use mod_lti\event\unknown_service_api_called; + +/** + * Unknown service API called event tests + * + * @package mod_lti + * @copyright Copyright (c) 2012 Moodlerooms Inc. (http://www.moodlerooms.com) + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_lti_event_unknown_service_api_called_test extends advanced_testcase { + /** + * Ensure create event works. + */ + public function test_create_event() { + $event = unknown_service_api_called::create(); + $this->assertInstanceOf('\mod_lti\event\unknown_service_api_called', $event); + } + + /** + * Ensure event context works. + */ + public function test_event_context() { + $event = unknown_service_api_called::create(); + $this->assertEquals(context_system::instance(), $event->get_context()); + } + + /** + * Ensure we can trigger the event. + */ + public function test_trigger_event() { + $event = unknown_service_api_called::create(); + + $sink = $this->redirectEvents(); + $event->trigger(); + $events = $sink->get_events(); + $this->assertCount(1, $events); + } + + /** + * Ensure get/set message data is functioning as expected. + */ + public function test_get_message_data() { + $data = (object) array( + 'foo' => 'bar', + 'bat' => 'baz', + ); + + /** @var unknown_service_api_called $event */ + $event = unknown_service_api_called::create(); + $event->set_message_data($data); + $this->assertSame($data, $event->get_message_data()); + } +} \ No newline at end of file