Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace MauticPlugin\MauticCrmBundle\Tests\Integration; | |
use Mautic\CoreBundle\Helper\UserHelper; | |
use Mautic\PluginBundle\Entity\Integration; | |
use Mautic\PluginBundle\Event\PluginIntegrationKeyEvent; | |
use Mautic\PluginBundle\PluginEvents; | |
use Mautic\PluginBundle\Tests\Integration\AbstractIntegrationTestCase; | |
use MauticPlugin\MauticCrmBundle\Integration\HubspotIntegration; | |
use PHPUnit\Framework\MockObject\MockObject; | |
use Symfony\Component\Form\Extension\Core\Type\ChoiceType; | |
use Symfony\Component\Form\Extension\Core\Type\TextType; | |
use Symfony\Component\Form\FormBuilderInterface; | |
class HubspotIntegrationTest extends AbstractIntegrationTestCase | |
{ | |
/** | |
* @var MockObject&UserHelper | |
*/ | |
private MockObject $userHelper; | |
private HubspotIntegration $integration; | |
protected function setUp(): void | |
{ | |
parent::setUp(); | |
$this->userHelper = $this->createMock(UserHelper::class); | |
$this->integration = new HubspotIntegration( | |
$this->dispatcher, | |
$this->cache, | |
$this->em, | |
$this->session, | |
$this->request, | |
$this->router, | |
$this->translator, | |
$this->logger, | |
$this->encryptionHelper, | |
$this->leadModel, | |
$this->companyModel, | |
$this->pathsHelper, | |
$this->notificationModel, | |
$this->fieldModel, | |
$this->integrationEntityModel, | |
$this->doNotContact, | |
$this->userHelper | |
); | |
} | |
public function testGetRequiredKeyFields(): void | |
{ | |
self::assertSame([], $this->integration->getRequiredKeyFields()); | |
} | |
public function testGetBearerTokenEmpty(): void | |
{ | |
$event = $this->createMock(PluginIntegrationKeyEvent::class); | |
$event->expects(self::once()) | |
->method('getKeys') | |
->willReturn(['other' => 'data']); | |
$this->dispatcher->expects(self::once()) | |
->method('dispatch') | |
->with( | |
new PluginIntegrationKeyEvent($this->integration, [HubspotIntegration::ACCESS_KEY]), | |
PluginEvents::PLUGIN_ON_INTEGRATION_KEYS_ENCRYPT | |
) | |
->willReturn($event); | |
$this->integration->encryptAndSetApiKeys([HubspotIntegration::ACCESS_KEY], $this->createMock(Integration::class)); | |
self::assertNull($this->integration->getBearerToken()); | |
} | |
public function testGetBearerTokenSet(): void | |
{ | |
$token = 'token'; | |
$event = $this->createMock(PluginIntegrationKeyEvent::class); | |
$event->expects(self::once()) | |
->method('getKeys') | |
->willReturn(['other' => 'data', HubspotIntegration::ACCESS_KEY => $token]); | |
$this->dispatcher->expects(self::once()) | |
->method('dispatch') | |
->with( | |
new PluginIntegrationKeyEvent($this->integration, [HubspotIntegration::ACCESS_KEY]), | |
PluginEvents::PLUGIN_ON_INTEGRATION_KEYS_ENCRYPT | |
) | |
->willReturn($event); | |
$this->integration->encryptAndSetApiKeys([HubspotIntegration::ACCESS_KEY], $this->createMock(Integration::class)); | |
self::assertSame($token, $this->integration->getBearerToken()); | |
} | |
public function testGetFormSettings(): void | |
{ | |
self::assertSame( | |
[ | |
'requires_callback' => false, | |
'requires_authorization' => false, | |
], | |
$this->integration->getFormSettings() | |
); | |
} | |
public function testGetAuthenticationTypeNoOauthToken(): void | |
{ | |
$event = $this->createMock(PluginIntegrationKeyEvent::class); | |
$event->expects(self::once()) | |
->method('getKeys') | |
->willReturn(['other' => 'data']); | |
$this->dispatcher->expects(self::once()) | |
->method('dispatch') | |
->with( | |
new PluginIntegrationKeyEvent($this->integration, [HubspotIntegration::ACCESS_KEY]), | |
PluginEvents::PLUGIN_ON_INTEGRATION_KEYS_ENCRYPT | |
) | |
->willReturn($event); | |
$this->integration->encryptAndSetApiKeys([HubspotIntegration::ACCESS_KEY], $this->createMock(Integration::class)); | |
self::assertSame('key', $this->integration->getAuthenticationType()); | |
} | |
public function testGetAuthenticationTypeWithOauthToken(): void | |
{ | |
$event = $this->createMock(PluginIntegrationKeyEvent::class); | |
$event->expects(self::once()) | |
->method('getKeys') | |
->willReturn(['other' => 'data', HubspotIntegration::ACCESS_KEY => 'token']); | |
$this->dispatcher->expects(self::once()) | |
->method('dispatch') | |
->with( | |
new PluginIntegrationKeyEvent($this->integration, [HubspotIntegration::ACCESS_KEY]), | |
PluginEvents::PLUGIN_ON_INTEGRATION_KEYS_ENCRYPT | |
) | |
->willReturn($event); | |
$this->integration->encryptAndSetApiKeys([HubspotIntegration::ACCESS_KEY], $this->createMock(Integration::class)); | |
self::assertSame('oauth2', $this->integration->getAuthenticationType()); | |
} | |
public function testIsAuthorizedNoOauthToken(): void | |
{ | |
$event = $this->createMock(PluginIntegrationKeyEvent::class); | |
$event->expects(self::once()) | |
->method('getKeys') | |
->willReturn(['other' => 'data']); | |
$this->dispatcher->expects(self::once()) | |
->method('dispatch') | |
->with( | |
new PluginIntegrationKeyEvent($this->integration, [HubspotIntegration::ACCESS_KEY]), | |
PluginEvents::PLUGIN_ON_INTEGRATION_KEYS_ENCRYPT | |
) | |
->willReturn($event); | |
$this->integration->encryptAndSetApiKeys([HubspotIntegration::ACCESS_KEY], $this->createMock(Integration::class)); | |
self::assertFalse($this->integration->isAuthorized()); | |
} | |
public function testIsAuthorizedWithOauthToken(): void | |
{ | |
$event = $this->createMock(PluginIntegrationKeyEvent::class); | |
$event->expects(self::once()) | |
->method('getKeys') | |
->willReturn(['other' => 'data', HubspotIntegration::ACCESS_KEY => 'token']); | |
$this->dispatcher->expects(self::once()) | |
->method('dispatch') | |
->with( | |
new PluginIntegrationKeyEvent($this->integration, [HubspotIntegration::ACCESS_KEY]), | |
PluginEvents::PLUGIN_ON_INTEGRATION_KEYS_ENCRYPT | |
) | |
->willReturn($event); | |
$this->integration->encryptAndSetApiKeys([HubspotIntegration::ACCESS_KEY], $this->createMock(Integration::class)); | |
self::assertTrue($this->integration->isAuthorized()); | |
} | |
public function testAppendToFormKeys(): void | |
{ | |
$builder = $this->createMock(FormBuilderInterface::class); | |
$builder->expects(self::exactly(2)) | |
->method('add') | |
->withConsecutive( | |
[HubspotIntegration::ACCESS_KEY, TextType::class], | |
[$this->integration->getApiKey(), TextType::class], | |
); | |
$this->integration->appendToForm($builder, [], 'keys'); | |
} | |
public function testAppendToFormFeatures(): void | |
{ | |
$builder = $this->createMock(FormBuilderInterface::class); | |
$builder->expects(self::once()) | |
->method('add') | |
->with('objects', ChoiceType::class); | |
$this->integration->appendToForm($builder, [], 'features'); | |
} | |
} | |