Spaces:
No application file
No application file
| namespace Mautic\IntegrationsBundle\Tests\Unit; | |
| use Doctrine\ORM\EntityManager; | |
| use Mautic\CoreBundle\Helper\CacheStorageHelper; | |
| use Mautic\CoreBundle\Helper\EncryptionHelper; | |
| use Mautic\CoreBundle\Helper\PathsHelper; | |
| use Mautic\CoreBundle\Model\NotificationModel; | |
| use Mautic\LeadBundle\Model\CompanyModel; | |
| use Mautic\LeadBundle\Model\DoNotContact as DoNotContactModel; | |
| use Mautic\LeadBundle\Model\FieldModel; | |
| use Mautic\LeadBundle\Model\LeadModel; | |
| use Mautic\PluginBundle\Integration\AbstractIntegration; | |
| use Mautic\PluginBundle\Model\IntegrationEntityModel; | |
| use Monolog\Logger; | |
| use PHPUnit\Framework\TestCase; | |
| use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |
| use Symfony\Component\HttpFoundation\RequestStack; | |
| use Symfony\Component\HttpFoundation\Session\Session; | |
| use Symfony\Component\Routing\Router; | |
| use Symfony\Contracts\Translation\TranslatorInterface; | |
| class AbstractIntegrationTest extends TestCase | |
| { | |
| public function testParseCallbackResponseWithUTF8StringThatContainsControlChars(): void | |
| { | |
| $integrationDouble = $this->buildAbstractIntegrationDouble(); | |
| $jsonString = <<<JSON | |
| { | |
| "webinars": [ | |
| { | |
| "topic": "【】 " | |
| } | |
| ] | |
| } | |
| JSON; | |
| $json = $integrationDouble->parseCallbackResponse($jsonString); | |
| self::assertArrayHasKey('webinars', $json); | |
| } | |
| private function buildAbstractIntegrationDouble(): AbstractIntegration | |
| { | |
| // creating a double since we can't instantiate | |
| // we also need to expose some things for better unit test coverage | |
| return new class($this->createMock(EventDispatcherInterface::class), $this->createMock(CacheStorageHelper::class), $this->createMock(EntityManager::class), $this->createMock(Session::class), $this->createMock(RequestStack::class), $this->createMock(Router::class), $this->createMock(TranslatorInterface::class), $this->createMock(Logger::class), $this->createMock(EncryptionHelper::class), $this->createMock(LeadModel::class), $this->createMock(CompanyModel::class), $this->createMock(PathsHelper::class), $this->createMock(NotificationModel::class), $this->createMock(FieldModel::class), $this->createMock(IntegrationEntityModel::class), $this->createMock(DoNotContactModel::class)) extends AbstractIntegration { | |
| public function getName(): string | |
| { | |
| return 'double'; | |
| } | |
| public function getAuthenticationType(): string | |
| { | |
| return 'none'; | |
| } | |
| }; | |
| } | |
| } | |