Files
piratepoet/tests/unit/Util/License/Features/SubscribersTest.php
Amine Ben hammou 89a215a9bf Fix key validity check
[MAILPOET-2637]
2020-01-20 10:39:46 +00:00

176 lines
6.1 KiB
PHP

<?php
namespace MailPoet\Test\Util\License\Features;
use Codeception\Util\Stub;
use MailPoet\Services\Bridge;
use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
class SubscribersTest extends \MailPoetUnitTest {
public function testCheckReturnsTrueIfOldUserReachedLimit() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'invalid',
'premium_key_state' => 'invalid',
'installed_at' => '2018-11-11',
'subscribers_count' => 2500,
'premium_subscribers_limit' => 500,
'mss_subscribers_limit' => 500,
]);
expect($subscribersFeature->check())->true();
}
public function testCheckReturnsFalseIfOldUserDidntReachLimit() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'invalid',
'premium_key_state' => 'invalid',
'installed_at' => '2018-11-11',
'subscribers_count' => 1500,
'premium_subscribers_limit' => 500,
'mss_subscribers_limit' => 500,
]);
expect($subscribersFeature->check())->false();
}
public function testCheckReturnsTrueIfNewUserReachedLimit() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'invalid',
'premium_key_state' => 'invalid',
'installed_at' => '2019-11-11',
'subscribers_count' => 1500,
'premium_subscribers_limit' => 500,
'mss_subscribers_limit' => 500,
]);
expect($subscribersFeature->check())->true();
}
public function testCheckReturnsFalseIfNewUserDidntReachLimit() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'invalid',
'premium_key_state' => 'invalid',
'installed_at' => '2019-11-11',
'subscribers_count' => 900,
'premium_subscribers_limit' => 500,
'mss_subscribers_limit' => 500,
]);
expect($subscribersFeature->check())->false();
}
public function testCheckReturnsFalseIfMSSKeyExistsAndDidntReachLimit() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'valid',
'premium_key_state' => 'invalid',
'installed_at' => '2019-11-11',
'subscribers_count' => 2500,
'premium_subscribers_limit' => 500,
'mss_subscribers_limit' => 3500,
]);
expect($subscribersFeature->check())->false();
}
public function testCheckReturnsTrueIfMSSKeyExistsAndReachedLimit() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'valid',
'premium_key_state' => 'invalid',
'installed_at' => '2019-11-11',
'subscribers_count' => 3000,
'premium_subscribers_limit' => 500,
'mss_subscribers_limit' => 2500,
]);
expect($subscribersFeature->check())->true();
}
public function testCheckReturnsTrueIfMSSKeyIsExpiringAndReachedLimit() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'expiring',
'premium_key_state' => 'invalid',
'installed_at' => '2019-11-11',
'subscribers_count' => 3000,
'premium_subscribers_limit' => 500,
'mss_subscribers_limit' => 2500,
]);
expect($subscribersFeature->check())->true();
}
public function testCheckReturnsFalseIfMSSKeyIsAlreadyUsedAndReachedLimit() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'already_used',
'premium_key_state' => 'invalid',
'installed_at' => '2019-11-11',
'subscribers_count' => 800,
'premium_subscribers_limit' => 500,
'mss_subscribers_limit' => 500,
]);
expect($subscribersFeature->check())->false();
}
public function testCheckReturnsFalseIfPremiumKeyExistsAndDidntReachLimit() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'invalid',
'premium_key_state' => 'valid',
'installed_at' => '2019-11-11',
'subscribers_count' => 2500,
'premium_subscribers_limit' => 3500,
'mss_subscribers_limit' => 500,
]);
expect($subscribersFeature->check())->false();
}
public function testCheckReturnsTrueIfPremiumKeyExistsAndReachedLimit() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'invalid',
'premium_key_state' => 'valid',
'installed_at' => '2019-11-11',
'subscribers_count' => 3000,
'premium_subscribers_limit' => 2500,
'mss_subscribers_limit' => 500,
]);
expect($subscribersFeature->check())->true();
}
public function testCheckReturnsFalseIfPremiumKeyExistsButLimitMissing() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'invalid',
'premium_key_state' => 'valid',
'installed_at' => '2019-11-11',
'subscribers_count' => 3000,
'premium_subscribers_limit' => false,
'mss_subscribers_limit' => false,
]);
expect($subscribersFeature->check())->false();
}
public function testCheckReturnsFalseIfMSSKeyExistsButLimitMissing() {
$subscribersFeature = $this->constructWith([
'mss_key_state' => 'valid',
'premium_key_state' => 'invalid',
'installed_at' => '2019-11-11',
'subscribers_count' => 3000,
'premium_subscribers_limit' => false,
'mss_subscribers_limit' => false,
]);
expect($subscribersFeature->check())->false();
}
private function constructWith($specs) {
$settings = Stub::make(SettingsController::class, [
'get' => function($name) use($specs) {
if ($name === 'installed_at') return $specs['installed_at'];
if ($name === SubscribersFeature::MSS_KEY_STATE) return $specs['mss_key_state'];
if ($name === SubscribersFeature::PREMIUM_KEY_STATE) return $specs['premium_key_state'];
if ($name === SubscribersFeature::PREMIUM_SUBSCRIBERS_LIMIT_SETTING_KEY) return $specs['premium_subscribers_limit'];
if ($name === SubscribersFeature::MSS_SUBSCRIBERS_LIMIT_SETTING_KEY) return $specs['mss_subscribers_limit'];
},
]);
$subscribersRepository = Stub::make(SubscribersRepository::class, [
'getTotalSubscribers' => function() use($specs) {
return $specs['subscribers_count'];
},
]);
return new SubscribersFeature($settings, $subscribersRepository);
}
}