From 288e5f75f503aba871b04e4ebdac2e453b3cd71c Mon Sep 17 00:00:00 2001 From: Jitendra Purohit Date: Fri, 8 Dec 2017 17:04:53 +0530 Subject: [PATCH] CRM-21533 : Outbound setting reverts in non-production sites on executing sched job --- CRM/Core/JobManager.php | 6 ++++++ .../phpunit/api/v3/JobProcessMailingTest.php | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/CRM/Core/JobManager.php b/CRM/Core/JobManager.php index 6c3b1bec61af..4cfdb87456af 100644 --- a/CRM/Core/JobManager.php +++ b/CRM/Core/JobManager.php @@ -149,6 +149,12 @@ public function executeJob($job) { } $this->logEntry('Finished execution of ' . $job->name . ' with result: ' . $this->_apiResultToMessage($result)); $this->currentJob = FALSE; + + //Disable outBound option after executing the job. + $environment = CRM_Core_Config::environment(NULL, TRUE); + if ($environment != 'Production' && !empty($job->apiParams['runInNonProductionEnvironment'])) { + Civi::settings()->set('mailing_backend', array('outBound_option' => CRM_Mailing_Config::OUTBOUND_OPTION_DISABLED)); + } } /** diff --git a/tests/phpunit/api/v3/JobProcessMailingTest.php b/tests/phpunit/api/v3/JobProcessMailingTest.php index 202a575e3e9d..025613f8732b 100644 --- a/tests/phpunit/api/v3/JobProcessMailingTest.php +++ b/tests/phpunit/api/v3/JobProcessMailingTest.php @@ -118,6 +118,10 @@ public function testMailNonProductionRun() { 'environment' => 'Staging', ); $this->callAPISuccess('Setting', 'create', $params); + //Assert if outbound mail is disabled. + $mailingBackend = Civi::settings()->get('mailing_backend'); + $this->assertEquals($mailingBackend['outBound_option'], CRM_Mailing_Config::OUTBOUND_OPTION_DISABLED); + $this->createContactsInGroup(10, $this->_groupID); Civi::settings()->add(array( 'mailerBatchLimit' => 2, @@ -130,6 +134,21 @@ public function testMailNonProductionRun() { $this->callAPISuccess('job', 'process_mailing', array('runInNonProductionEnvironment' => TRUE)); $this->_mut->assertRecipients($this->getRecipients(1, 2)); + $jobId = $this->callAPISuccessGetValue('Job', array( + 'return' => "id", + 'api_action' => "group_rebuild", + )); + $this->callAPISuccess('Job', 'create', array( + 'id' => $jobId, + 'parameters' => "runInNonProductionEnvironment=TRUE", + )); + $jobManager = new CRM_Core_JobManager(); + $jobManager->executeJobById($jobId); + + //Assert if outbound mail is still disabled. + $mailingBackend = Civi::settings()->get('mailing_backend'); + $this->assertEquals($mailingBackend['outBound_option'], CRM_Mailing_Config::OUTBOUND_OPTION_DISABLED); + // Test in production mode. $params = array( 'environment' => 'Production',