- Uses newsletter hash over id when looking for a newsletter
This commit is contained in:
@ -37,9 +37,9 @@ class ViewInBrowser {
|
|||||||
function _validateBrowserPreviewData($data) {
|
function _validateBrowserPreviewData($data) {
|
||||||
// either newsletter ID or hash must be defined, and newsletter must exist
|
// either newsletter ID or hash must be defined, and newsletter must exist
|
||||||
if(empty($data->newsletter_id) && empty($data->newsletter_hash)) return false;
|
if(empty($data->newsletter_id) && empty($data->newsletter_hash)) return false;
|
||||||
$data->newsletter = (!empty($data->newsletter_id)) ?
|
$data->newsletter = (!empty($data->newsletter_hash)) ?
|
||||||
Newsletter::findOne($data->newsletter_id) :
|
Newsletter::getByHash($data->newsletter_hash) :
|
||||||
Newsletter::getByHash($data->newsletter_hash);
|
Newsletter::findOne($data->newsletter_id);
|
||||||
if(!$data->newsletter) return false;
|
if(!$data->newsletter) return false;
|
||||||
|
|
||||||
// subscriber is optional; if exists, token must validate
|
// subscriber is optional; if exists, token must validate
|
||||||
|
@ -89,6 +89,20 @@ class ViewInBrowserRouterTest extends MailPoetTest {
|
|||||||
expect($this->view_in_browser->_validateBrowserPreviewData($data))->false();
|
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() {
|
function testItFailsValidationWhenPreviewIsEnabledButNewsletterHashNotProvided() {
|
||||||
$data = (object)$this->browser_preview_data;
|
$data = (object)$this->browser_preview_data;
|
||||||
$data->newsletter_hash = false;
|
$data->newsletter_hash = false;
|
||||||
|
Reference in New Issue
Block a user