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); 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())); + } + } +}