From fc05c1b8e53db921aaf330caca1dee76f0b8d0e6 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Wed, 12 Nov 2014 15:51:18 +0800 Subject: [PATCH] MDL-48197 testing: Normalise uses of noemailever and phpmailer sink --- auth/ldap/tests/plugin_test.php | 3 ++- badges/tests/badgeslib_test.php | 2 -- course/tests/courserequest_test.php | 4 ---- lib/phpunit/tests/advanced_test.php | 2 ++ lib/tests/messagelib_test.php | 19 +++++++++++-------- lib/tests/moodlelib_test.php | 8 +++++--- message/output/email/message_output_email.php | 3 --- mod/forum/tests/mail_test.php | 3 --- mod/forum/tests/maildigest_test.php | 3 --- 9 files changed, 20 insertions(+), 27 deletions(-) diff --git a/auth/ldap/tests/plugin_test.php b/auth/ldap/tests/plugin_test.php index 7f0855e0085..ebb6f31df25 100644 --- a/auth/ldap/tests/plugin_test.php +++ b/auth/ldap/tests/plugin_test.php @@ -386,8 +386,9 @@ class auth_ldap_plugin_testcase extends advanced_testcase { $auth = get_auth_plugin('ldap'); $sink = $this->redirectEvents(); + $mailsink = $this->redirectEmails(); $auth->user_signup((object)$user, false); - $this->assertDebuggingCalled('Not sending email due to $CFG->noemailever config setting'); + $this->assertEquals(1, $mailsink->count()); $events = $sink->get_events(); $sink->close(); diff --git a/badges/tests/badgeslib_test.php b/badges/tests/badgeslib_test.php index aa074b47d8b..ce13ed8dcf4 100644 --- a/badges/tests/badgeslib_test.php +++ b/badges/tests/badgeslib_test.php @@ -41,8 +41,6 @@ class core_badges_badgeslib_testcase extends advanced_testcase { global $DB, $CFG; $this->resetAfterTest(true); - unset_config('noemailever'); - $CFG->enablecompletion = true; $user = $this->getDataGenerator()->create_user(); diff --git a/course/tests/courserequest_test.php b/course/tests/courserequest_test.php index 3b85c334ae6..1e96d21e29c 100644 --- a/course/tests/courserequest_test.php +++ b/course/tests/courserequest_test.php @@ -81,8 +81,6 @@ class core_course_courserequest_testcase extends advanced_testcase { $this->resetAfterTest(true); $this->preventResetByRollback(); - unset_config('noemailever'); - $defaultcategory = $DB->get_field_select('course_categories', "MIN(id)", "parent=0"); set_config('enablecourserequests', 1); set_config('requestcategoryselection', 0); @@ -138,8 +136,6 @@ class core_course_courserequest_testcase extends advanced_testcase { $this->resetAfterTest(true); $this->preventResetByRollback(); - unset_config('noemailever'); - $this->setAdminUser(); set_config('enablecourserequests', 1); set_config('requestcategoryselection', 0); diff --git a/lib/phpunit/tests/advanced_test.php b/lib/phpunit/tests/advanced_test.php index 82c3b28a0af..1caf138c122 100644 --- a/lib/phpunit/tests/advanced_test.php +++ b/lib/phpunit/tests/advanced_test.php @@ -432,6 +432,8 @@ class core_phpunit_advanced_testcase extends advanced_testcase { $message2->notification = 0; // There should be debugging message without redirection. + $mailsink = $this->redirectEmails(); + $mailsink->close(); message_send($message1); $this->assertDebuggingCalled(null, null, 'message_send() must print debug message that messaging is disabled in phpunit tests.'); diff --git a/lib/tests/messagelib_test.php b/lib/tests/messagelib_test.php index 2d076bea8c6..9d86d0c8619 100644 --- a/lib/tests/messagelib_test.php +++ b/lib/tests/messagelib_test.php @@ -30,7 +30,6 @@ class core_messagelib_testcase extends advanced_testcase { public function test_message_provider_disabled() { $this->resetAfterTest(); $this->preventResetByRollback(); - unset_config('noemailever'); // Disable instantmessage provider. $disableprovidersetting = 'moodle_instantmessage_disable'; @@ -382,8 +381,6 @@ class core_messagelib_testcase extends advanced_testcase { $this->preventResetByRollback(); $this->resetAfterTest(); - unset_config('noemailever'); - $user1 = $this->getDataGenerator()->create_user(); $user2 = $this->getDataGenerator()->create_user(); @@ -717,7 +714,6 @@ class core_messagelib_testcase extends advanced_testcase { $this->resetAfterTest(); $this->preventResetByRollback(); - set_config('noemailever', 1); $user1 = $this->getDataGenerator()->create_user(); $user2 = $this->getDataGenerator()->create_user(); @@ -734,24 +730,30 @@ class core_messagelib_testcase extends advanced_testcase { $message->smallmessage = 'small message'; $message->notification = '0'; + $mailsink = $this->redirectEmails(); + + // Sending outside of a transaction is fine. message_send($message); - $this->assertDebuggingCalled('Not sending email due to $CFG->noemailever config setting'); + $this->assertEquals(1, $mailsink->count()); $transaction1 = $DB->start_delegated_transaction(); + $mailsink->clear(); message_send($message); - $this->assertDebuggingNotCalled(); + $this->assertEquals(0, $mailsink->count()); $transaction2 = $DB->start_delegated_transaction(); + $mailsink->clear(); message_send($message); - $this->assertDebuggingNotCalled(); + $this->assertEquals(0, $mailsink->count()); try { $transaction2->rollback(new Exception('x')); $this->fail('Expecting exception'); } catch (Exception $e) {} $this->assertDebuggingNotCalled(); + $this->assertEquals(0, $mailsink->count()); $this->assertTrue($DB->is_transaction_started()); @@ -760,11 +762,12 @@ class core_messagelib_testcase extends advanced_testcase { $this->fail('Expecting exception'); } catch (Exception $e) {} $this->assertDebuggingNotCalled(); + $this->assertEquals(0, $mailsink->count()); $this->assertFalse($DB->is_transaction_started()); message_send($message); - $this->assertDebuggingCalled('Not sending email due to $CFG->noemailever config setting'); + $this->assertEquals(1, $mailsink->count()); } public function test_forced_rollback() { diff --git a/lib/tests/moodlelib_test.php b/lib/tests/moodlelib_test.php index 004cc071ad5..206a6c9378f 100644 --- a/lib/tests/moodlelib_test.php +++ b/lib/tests/moodlelib_test.php @@ -2607,6 +2607,11 @@ class core_moodlelib_testcase extends advanced_testcase { $subject2 = 'subject 2'; $messagetext2 = 'message text 2'; + // Close the default email sink. + $sink = $this->redirectEmails(); + $sink->close(); + + $CFG->noemailever = true; $this->assertNotEmpty($CFG->noemailever); email_to_user($user1, $user2, $subject, $messagetext); $this->assertDebuggingCalled('Not sending email due to $CFG->noemailever config setting'); @@ -2660,9 +2665,6 @@ class core_moodlelib_testcase extends advanced_testcase { $user = $this->getDataGenerator()->create_user(); - // Set config to allow email_to_user() to be called. - $CFG->noemailever = false; - // Update user password. $sink = $this->redirectEvents(); $sink2 = $this->redirectEmails(); // Make sure we are redirecting emails. diff --git a/message/output/email/message_output_email.php b/message/output/email/message_output_email.php index 247aa5fa028..1970606c09d 100644 --- a/message/output/email/message_output_email.php +++ b/message/output/email/message_output_email.php @@ -39,9 +39,6 @@ class message_output_email extends message_output { function send_message($eventdata) { global $CFG; - // Ignore $CFG->noemailever here because we want to test this code, - // the message sending fails later in email_to_user(). - // skip any messaging suspended and deleted users if ($eventdata->userto->auth === 'nologin' or $eventdata->userto->suspended or $eventdata->userto->deleted) { return true; diff --git a/mod/forum/tests/mail_test.php b/mod/forum/tests/mail_test.php index db6eb94cd64..2f6d81461c1 100644 --- a/mod/forum/tests/mail_test.php +++ b/mod/forum/tests/mail_test.php @@ -60,9 +60,6 @@ class mod_forum_mail_testcase extends advanced_testcase { // ensure that messages are sent out. $CFG->maxeditingtime = -1; - // Ensure that we don't prevent e-mail as this will cause unit test failures. - $CFG->noemailever = false; - $this->helper = $helper; } diff --git a/mod/forum/tests/maildigest_test.php b/mod/forum/tests/maildigest_test.php index 19725bad229..d52eee4a951 100644 --- a/mod/forum/tests/maildigest_test.php +++ b/mod/forum/tests/maildigest_test.php @@ -72,9 +72,6 @@ class mod_forum_maildigest_testcase extends advanced_testcase { // messages are sent out. $CFG->maxeditingtime = 1; - // Ensure that we don't prevent e-mail as this will cause unit test failures. - $CFG->noemailever = false; - // We must clear the subscription caches. This has to be done both before each test, and after in case of other // tests using these functions. \mod_forum\subscriptions::reset_forum_cache();