Remove rest of usage old model SubscriberIP

[MAILPOET-3032]
This commit is contained in:
Jan Lysý
2021-04-07 08:06:01 +02:00
committed by Veljko V
parent 5ce4eeed10
commit 31bff0efb4
6 changed files with 41 additions and 25 deletions

View File

@ -32,9 +32,13 @@ class Subscription {
/** @var WPFunctions */
private $wp;
public function __construct(UserSubscription\Pages $subscriptionPages, WPFunctions $wp) {
/** @var UserSubscription\Captcha */
private $captcha;
public function __construct(UserSubscription\Pages $subscriptionPages, WPFunctions $wp, UserSubscription\Captcha $captcha) {
$this->subscriptionPages = $subscriptionPages;
$this->wp = $wp;
$this->captcha = $captcha;
}
public function captcha($data) {
@ -42,11 +46,10 @@ class Subscription {
}
public function captchaImage($data) {
$captcha = new UserSubscription\Captcha;
$width = !empty($data['width']) ? (int)$data['width'] : null;
$height = !empty($data['height']) ? (int)$data['height'] : null;
$sessionId = !empty($data['captcha_session_id']) ? $data['captcha_session_id'] : null;
return $captcha->renderImage($width, $height, $sessionId);
return $this->captcha->renderImage($width, $height, $sessionId);
}
public function confirm($data) {

View File

@ -3,7 +3,7 @@
namespace MailPoet\Subscription;
use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberIP;
use MailPoet\Subscribers\SubscriberIPsRepository;
use MailPoet\Util\Helpers;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Gregwar\Captcha\CaptchaBuilder;
@ -19,7 +19,14 @@ class Captcha {
/** @var CaptchaSession */
private $captchaSession;
public function __construct(WPFunctions $wp = null, CaptchaSession $captchaSession = null) {
/** @var SubscriberIPsRepository */
private $subscriberIPsRepository;
public function __construct(
SubscriberIPsRepository $subscriberIPsRepository,
WPFunctions $wp = null,
CaptchaSession $captchaSession = null
) {
if ($wp === null) {
$wp = new WPFunctions;
}
@ -28,6 +35,7 @@ class Captcha {
}
$this->wp = $wp;
$this->captchaSession = $captchaSession;
$this->subscriberIPsRepository = $subscriberIPsRepository;
}
public function isSupported() {
@ -59,11 +67,10 @@ class Captcha {
return false;
}
$subscriptionCount = SubscriberIP::where('ip', $subscriberIp)
->whereRaw(
'(`created_at` >= NOW() - INTERVAL ? SECOND)',
[(int)$subscriptionCaptchaWindow]
)->count();
$subscriptionCount = $this->subscriberIPsRepository->getCountByIPAndCreatedAtAfterTimeInSeconds(
$subscriberIp,
(int)$subscriptionCaptchaWindow
);
if ($subscriptionCount > 0) {
return true;

View File

@ -30,10 +30,11 @@ class SetupTest extends \MailPoetTest {
$settings = SettingsController::getInstance();
$referralDetector = new ReferralDetector($wpStub, $settings);
$subscriptionCaptcha = $this->diContainer->get(Captcha::class);
$populator = new Populator(
$settings,
$wpStub,
new Captcha(),
$subscriptionCaptcha,
$referralDetector,
$this->diContainer->get(FormsRepository::class),
$this->entityManager,
@ -48,7 +49,6 @@ class SetupTest extends \MailPoetTest {
expect($signupConfirmation)->true();
$captcha = $settings->fetch('captcha');
$subscriptionCaptcha = new Captcha;
$captchaType = $subscriptionCaptcha->isSupported() ? Captcha::TYPE_BUILTIN : Captcha::TYPE_DISABLED;
expect($captcha['type'])->equals($captchaType);
expect($captcha['recaptcha_site_token'])->equals('');

View File

@ -18,6 +18,7 @@ use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\SubscriberCustomFieldEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberIPEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Form\Util\FieldNameObfuscator;
use MailPoet\Listing\Handler;
@ -29,7 +30,6 @@ use MailPoet\Models\NewsletterOptionField;
use MailPoet\Models\Segment;
use MailPoet\Models\SendingQueue;
use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberIP;
use MailPoet\Models\SubscriberSegment;
use MailPoet\Segments\SegmentsRepository;
use MailPoet\Settings\SettingsController;
@ -46,7 +46,6 @@ use MailPoet\Test\DataFactories\DynamicSegment;
use MailPoet\UnexpectedValueException;
use MailPoet\WP\Functions;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Idiorm\ORM;
class SubscribersTest extends \MailPoetTest {
@ -938,6 +937,6 @@ class SubscribersTest extends \MailPoetTest {
$this->truncateEntity(CustomFieldEntity::class);
$this->truncateEntity(SubscriberCustomFieldEntity::class);
$this->diContainer->get(SettingsRepository::class)->truncate();
ORM::raw_execute('TRUNCATE ' . SubscriberIP::$_table);
$this->truncateEntity(SubscriberIPEntity::class);
}
}

View File

@ -5,6 +5,7 @@ namespace MailPoet\Test\Router\Endpoints;
use Codeception\Stub;
use Codeception\Stub\Expected;
use MailPoet\Router\Endpoints\Subscription;
use MailPoet\Subscription\Captcha;
use MailPoet\Subscription\Pages;
use MailPoet\WP\Functions as WPFunctions;
@ -14,9 +15,13 @@ class SubscriptionTest extends \MailPoetTest {
/** @var WPFunctions */
private $wp;
/** @var Captcha */
private $captcha;
public function _before() {
$this->data = [];
$this->wp = WPFunctions::get();
$this->captcha = $this->diContainer->get(Captcha::class);
}
public function testItDisplaysConfirmPage() {
@ -24,7 +29,7 @@ class SubscriptionTest extends \MailPoetTest {
'wp' => $this->wp,
'confirm' => Expected::exactly(1),
], $this);
$subscription = new Subscription($pages, $this->wp);
$subscription = new Subscription($pages, $this->wp, $this->captcha);
$subscription->confirm($this->data);
}
@ -34,7 +39,7 @@ class SubscriptionTest extends \MailPoetTest {
'getManageLink' => Expected::exactly(1),
'getManageContent' => Expected::exactly(1),
], $this);
$subscription = new Subscription($pages, $this->wp);
$subscription = new Subscription($pages, $this->wp, $this->captcha);
$subscription->manage($this->data);
do_shortcode('[mailpoet_manage]');
do_shortcode('[mailpoet_manage_subscription]');
@ -45,7 +50,7 @@ class SubscriptionTest extends \MailPoetTest {
'wp' => new WPFunctions,
'unsubscribe' => Expected::exactly(1),
], $this);
$subscription = new Subscription($pages, $this->wp);
$subscription = new Subscription($pages, $this->wp, $this->captcha);
$subscription->unsubscribe($this->data);
}
}

View File

@ -3,8 +3,9 @@
namespace MailPoet\Test\Subscription;
use Codeception\Util\Fixtures;
use MailPoet\Entities\SubscriberIPEntity;
use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberIP;
use MailPoet\Subscribers\SubscriberIPsRepository;
use MailPoet\Subscription\Captcha;
use MailPoet\Subscription\CaptchaSession;
use MailPoet\Util\Cookies;
@ -24,9 +25,10 @@ class CaptchaTest extends \MailPoetTest {
public function _before() {
$cookiesMock = $this->createMock(Cookies::class);
$cookiesMock->method('get')->willReturn('abcd');
$subscriberIPsRepository = $this->diContainer->get(SubscriberIPsRepository::class);
$this->captchaSession = new CaptchaSession(new Functions());
$this->captchaSession->init(self::CAPTCHA_SESSION_ID);
$this->captcha = new Captcha(new WPFunctions, $this->captchaSession);
$this->captcha = new Captcha($subscriberIPsRepository, new WPFunctions, $this->captchaSession);
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$this->captchaSession->reset();
}
@ -47,10 +49,10 @@ class CaptchaTest extends \MailPoetTest {
}
public function testItRequiresCaptchaForRepeatedIPAddress() {
$ip = SubscriberIP::create();
$ip->ip = '127.0.0.1';
$ip->createdAt = Carbon::now()->subMinutes(1);
$ip->save();
$ip = new SubscriberIPEntity('127.0.0.1');
$ip->setCreatedAt(Carbon::now()->subMinutes(1));
$this->entityManager->persist($ip);
$this->entityManager->flush();
$email = 'non-existent-subscriber@example.com';
$result = $this->captcha->isRequired($email);
expect($result)->equals(true);
@ -64,6 +66,6 @@ class CaptchaTest extends \MailPoetTest {
}
public function _after() {
SubscriberIP::deleteMany();
$this->truncateEntity(SubscriberIPEntity::class);
}
}