From 83dda7ae0435ba5586ca9f245e3c52eea723d536 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Wed, 21 Apr 2021 16:19:21 +0200 Subject: [PATCH 1/2] MDL-71395 block_tag_youtube: sometimes exception may have empty message --- blocks/tag_youtube/edit_form.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/blocks/tag_youtube/edit_form.php b/blocks/tag_youtube/edit_form.php index 75e5c0dc623..16a83077435 100644 --- a/blocks/tag_youtube/edit_form.php +++ b/blocks/tag_youtube/edit_form.php @@ -42,19 +42,21 @@ class block_tag_youtube_edit_form extends block_edit_form { // Category setting. $categorychoices = ['0' => get_string('anycategory', 'block_tag_youtube')]; + $hascategoryerror = false; $categoryerror = ''; try { // Get all video categories through an API call and add them to the category list. $categorychoices += $this->block->get_categories(); } catch (Exception $e) { + $hascategoryerror = true; $categoryerror = $e->getMessage(); } $mform->addElement('select', 'config_category', get_string('category', 'block_tag_youtube'), $categorychoices); $mform->setDefault('config_category', 0); - if ($categoryerror) { + if ($hascategoryerror) { $notification = $OUTPUT->notification(get_string('categoryerror', 'block_tag_youtube', $categoryerror), 'error'); $mform->addElement('static', 'config_category_error', '', $notification); From d87d0973f51e927be2ed8c2d4daca75399822bfb Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Thu, 6 May 2021 13:44:30 +0200 Subject: [PATCH 2/2] MDL-71395 core: fix bug in google lib wrapper because of changes in PHP8 the '' == 0 is no longer true and the error in the google api wrapper was discovered --- lib/google/curlio.php | 2 +- lib/tests/googlelib_test.php | 40 ++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 lib/tests/googlelib_test.php diff --git a/lib/google/curlio.php b/lib/google/curlio.php index 72e7d2fb859..ed2ceb54e6d 100644 --- a/lib/google/curlio.php +++ b/lib/google/curlio.php @@ -124,7 +124,7 @@ class moodle_google_curlio extends Google_IO_Curl { $curlerrornum = $curl->get_errno(); $curlerror = $curl->error; - if ($respdata != CURLE_OK) { + if ($curlerrornum != CURLE_OK) { throw new Google_IO_Exception($curlerror); } diff --git a/lib/tests/googlelib_test.php b/lib/tests/googlelib_test.php new file mode 100644 index 00000000000..6a3a9fb24d8 --- /dev/null +++ b/lib/tests/googlelib_test.php @@ -0,0 +1,40 @@ +. + +/** + * Tests for google library + * + * @package core + * @copyright 2021 Marina Glancy + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class core_googlelib_testcase extends advanced_testcase { + + public function test_invalid_google_api_key() { + global $CFG; + require_once($CFG->libdir . '/google/lib.php'); + $client = get_google_client(); + $client->setDeveloperKey('invalid'); + $client->setScopes(array(Google_Service_YouTube::YOUTUBE_READONLY)); + $service = new Google_Service_YouTube($client); + try { + $service->videoCategories->listVideoCategories('snippet', ['regionCode' => 'us']); + $this->fail('Exception expected'); + } catch (Google_Service_Exception $e) { + $this->assertEquals(1, preg_match('/API key not valid/', $e->getMessage())); + } + } +}