Add premium key verification

[MAILPOET-5131]
This commit is contained in:
Brezo Cordero
2023-03-21 21:01:41 -05:00
committed by Aschepikov
parent c0eed5b919
commit fb93c73a34
4 changed files with 41 additions and 2 deletions

View File

@ -283,6 +283,11 @@ class Services extends APIEndpoint {
return $this->checkMSSKey(['key' => $key]);
}
public function refreshPremiumKeyStatus() {
$key = $this->settings->get('premium.premium_key');
return $this->checkPremiumKey(['key' => $key]);
}
private function isItemInArray($item, $array): bool {
return in_array($item, $array, true);
}

View File

@ -512,6 +512,7 @@ class Settings extends APIEndpoint {
'signup_confirmation' => [
'enabled' => '1',
],
'premium.premium_key' => $apiKey,
];
return $this->set($new_settings);
}

View File

@ -103,6 +103,14 @@ class DotcomLicenseProvisioner {
return new WP_Error('Provisioning failed activating the data', $this->concatMessages($response));
}
$response = $this->services->refreshPremiumKeyStatus();
if ($response instanceof ErrorResponse) {
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_PROVISIONING)->error(
'Refreshing Premium key failed',
['$response' => $response]
);
return new WP_Error('Provisioning failed activating the data', $this->concatMessages($response));
}
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_PROVISIONING)->info(
'License was provisioned'

View File

@ -73,7 +73,7 @@ class DotcomLicenseProvisionerTest extends \MailPoetTest {
expect($error->get_error_message())->equals('some-error ');
}
public function testItReturnsTrueIfCouldNotRefreshKey() {
public function testItReturnsErrorIfCouldNotRefreshKey() {
$result = false;
$payload = ['apiKey' => 'some-key'];
$eventType = DotcomLicenseProvisioner::EVENT_TYPE_PROVISION_LICENSE;
@ -90,6 +90,27 @@ class DotcomLicenseProvisionerTest extends \MailPoetTest {
expect($error->get_error_message())->equals('some-error ');
}
public function testItReturnsErrorIfCouldNotVerifyPremiumKey() {
$result = false;
$payload = ['apiKey' => 'some-key'];
$eventType = DotcomLicenseProvisioner::EVENT_TYPE_PROVISION_LICENSE;
$provisioner = $this->construct(
DotcomLicenseProvisioner::class,
[
$this->diContainer->get(LoggerFactory::class),
$this->make(Settings::class, ['setupMSS' => new SuccessResponse()]),
$this->make(Services::class,
[
'refreshMSSKeyStatus' => new SuccessResponse(),
'refreshPremiumKeyStatus' => new ErrorResponse(['error' => 'some-error']),
]),
],
['isAtomicPlatform' => true]);
$error = $provisioner->provisionLicense($result, $payload, $eventType);
$this->assertInstanceOf(\WP_Error::class, $error);
expect($error->get_error_message())->equals('some-error ');
}
public function testItReturnsTrueIfKeyProvidedMSSActivatedAndRefreshed() {
$result = false;
$payload = ['apiKey' => 'some-key'];
@ -99,7 +120,11 @@ class DotcomLicenseProvisionerTest extends \MailPoetTest {
[
$this->diContainer->get(LoggerFactory::class),
$this->make(Settings::class, ['setupMSS' => new SuccessResponse()]),
$this->make(Services::class, ['refreshMSSKeyStatus' => new SuccessResponse()]),
$this->make(Services::class,
[
'refreshMSSKeyStatus' => new SuccessResponse(),
'refreshPremiumKeyStatus' => new SuccessResponse(),
]),
],
['isAtomicPlatform' => true]);
$result = $provisioner->provisionLicense($result, $payload, $eventType);