- Uses newsletter hash over id when looking for a newsletter

This commit is contained in:
Vlad
2016-12-26 19:31:34 -05:00
parent 6beada63de
commit d63ab6a927
2 changed files with 17 additions and 3 deletions

View File

@ -37,9 +37,9 @@ class ViewInBrowser {
function _validateBrowserPreviewData($data) {
// either newsletter ID or hash must be defined, and newsletter must exist
if(empty($data->newsletter_id) && empty($data->newsletter_hash)) return false;
$data->newsletter = (!empty($data->newsletter_id)) ?
Newsletter::findOne($data->newsletter_id) :
Newsletter::getByHash($data->newsletter_hash);
$data->newsletter = (!empty($data->newsletter_hash)) ?
Newsletter::getByHash($data->newsletter_hash) :
Newsletter::findOne($data->newsletter_id);
if(!$data->newsletter) return false;
// subscriber is optional; if exists, token must validate

View File

@ -89,6 +89,20 @@ class ViewInBrowserRouterTest extends MailPoetTest {
expect($this->view_in_browser->_validateBrowserPreviewData($data))->false();
}
function testItValidatesThatNewsletterExistsByCheckingHashFirst() {
$newsletter_1 = $this->newsletter;
$newsletter_2 = Newsletter::create();
$newsletter_2->type = 'type';
$newsletter_2 = $newsletter_2->save();
$data = (object)$this->browser_preview_data;
$data->newsletter_hash = $newsletter_2->hash;
$result = $this->view_in_browser->_validateBrowserPreviewData($data);
expect($result->newsletter->id)->equals($newsletter_2->id);
$data->newsletter_hash = false;
$result = $this->view_in_browser->_validateBrowserPreviewData($data);
expect($result->newsletter->id)->equals($newsletter_1->id);
}
function testItFailsValidationWhenPreviewIsEnabledButNewsletterHashNotProvided() {
$data = (object)$this->browser_preview_data;
$data->newsletter_hash = false;