Initial commit: CloudOps infrastructure platform

This commit is contained in:
root
2026-04-09 19:58:57 +02:00
commit 1166a52f26
7762 changed files with 839452 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace Mautic\SmsBundle\Tests\Controller;
use Mautic\CoreBundle\Test\MauticMysqlTestCase;
use PHPUnit\Framework\Assert;
use Symfony\Component\HttpFoundation\Request;
class AjaxControllerFunctionalTest extends MauticMysqlTestCase
{
public function testGetBuilderTokensAction(): void
{
$this->client->request(Request::METHOD_POST, '/s/ajax?action=sms:getBuilderTokens');
Assert::assertTrue($this->client->getResponse()->isOk());
$tokens = json_decode($this->client->getResponse()->getContent(), true);
$this->assertArrayHasKey('tokens', $tokens);
$this->assertArrayHasKey('{contactfield=email}', $tokens['tokens']);
$this->assertArrayHasKey('{ownerfield=email}', $tokens['tokens']);
}
}

View File

@@ -0,0 +1,54 @@
<?php
declare(strict_types=1);
namespace Mautic\SmsBundle\Tests\Controller;
use Mautic\CoreBundle\Test\MauticMysqlTestCase;
use Mautic\ProjectBundle\Entity\Project;
use Mautic\SmsBundle\Entity\Sms;
use PHPUnit\Framework\Assert;
final class SMSControllerFunctionalTest extends MauticMysqlTestCase
{
protected function setUp(): void
{
$this->configParams['site_url'] = 'https://localhost';
parent::setUp();
}
public function testSmsWithProject(): void
{
$sms = $this->CreateSms();
$project = new Project();
$project->setName('Test Project');
$this->em->persist($project);
$this->em->flush();
$this->em->clear();
$crawler = $this->client->request('GET', '/s/sms/edit/'.$sms->getId());
$form = $crawler->selectButton('Save')->form();
$form['sms[projects]']->setValue((string) $project->getId());
$this->client->submit($form);
$this->assertResponseIsSuccessful();
$savedSms = $this->em->find(Sms::class, $sms->getId());
Assert::assertSame($project->getId(), $savedSms->getProjects()->first()->getId());
}
private function CreateSms(string $name = 'sms', string $message = 'sms body'): Sms
{
$sms = new Sms();
$sms->setName($name);
$sms->setMessage($message);
$sms->setSmsType('template');
$this->em->persist($sms);
$this->em->flush();
return $sms;
}
}

View File

@@ -0,0 +1,98 @@
<?php
declare(strict_types=1);
namespace Mautic\SmsBundle\Tests\Controller;
use Mautic\ProjectBundle\Tests\Functional\AbstractProjectSearchTestCase;
use Mautic\SmsBundle\Entity\Sms;
final class SmsProjectSearchFunctionalTest extends AbstractProjectSearchTestCase
{
#[\PHPUnit\Framework\Attributes\DataProvider('searchDataProvider')]
public function testProjectSearch(string $searchTerm, array $expectedEntities, array $unexpectedEntities): void
{
$projectOne = $this->createProject('Project One');
$projectTwo = $this->createProject('Project Two');
$projectThree = $this->createProject('Project Three');
$smsAlpha = $this->createSms('Sms Alpha');
$smsBeta = $this->createSms('Sms Beta');
$this->createSms('Sms Gamma');
$this->createSms('Sms Delta');
$smsAlpha->addProject($projectOne);
$smsAlpha->addProject($projectTwo);
$smsBeta->addProject($projectTwo);
$smsBeta->addProject($projectThree);
$this->em->flush();
$this->em->clear();
$this->searchAndAssert($searchTerm, $expectedEntities, $unexpectedEntities, ['/api/smses', '/s/sms']);
}
/**
* @return \Generator<string, array{searchTerm: string, expectedEntities: array<string>, unexpectedEntities: array<string>}>
*/
public static function searchDataProvider(): \Generator
{
yield 'search by one project' => [
'searchTerm' => 'project:"Project Two"',
'expectedEntities' => ['Sms Alpha', 'Sms Beta'],
'unexpectedEntities' => ['Sms Gamma', 'Sms Delta'],
];
yield 'search by one project AND sms name' => [
'searchTerm' => 'project:"Project Two" AND Beta',
'expectedEntities' => ['Sms Beta'],
'unexpectedEntities' => ['Sms Alpha', 'Sms Gamma', 'Sms Delta'],
];
yield 'search by one project OR sms name' => [
'searchTerm' => 'project:"Project Two" OR Gamma',
'expectedEntities' => ['Sms Alpha', 'Sms Beta', 'Sms Gamma'],
'unexpectedEntities' => ['Sms Delta'],
];
yield 'search by NOT one project' => [
'searchTerm' => '!project:"Project Two"',
'expectedEntities' => ['Sms Gamma', 'Sms Delta'],
'unexpectedEntities' => ['Sms Alpha', 'Sms Beta'],
];
yield 'search by two projects with AND' => [
'searchTerm' => 'project:"Project Two" AND project:"Project Three"',
'expectedEntities' => ['Sms Beta'],
'unexpectedEntities' => ['Sms Alpha', 'Sms Gamma', 'Sms Delta'],
];
yield 'search by two projects with NOT AND' => [
'searchTerm' => '!project:"Project Two" AND !project:"Project Three"',
'expectedEntities' => ['Sms Gamma', 'Sms Delta'],
'unexpectedEntities' => ['Sms Alpha', 'Sms Beta'],
];
yield 'search by two projects with OR' => [
'searchTerm' => 'project:"Project Two" OR project:"Project Three"',
'expectedEntities' => ['Sms Alpha', 'Sms Beta'],
'unexpectedEntities' => ['Sms Gamma', 'Sms Delta'],
];
yield 'search by two projects with NOT OR' => [
'searchTerm' => '!project:"Project Two" OR !project:"Project Three"',
'expectedEntities' => ['Sms Alpha', 'Sms Gamma', 'Sms Delta'],
'unexpectedEntities' => ['Sms Beta'],
];
}
private function createSms(string $name): Sms
{
$sms = new Sms();
$sms->setName($name);
$sms->setMessage('Message for '.$name);
$this->em->persist($sms);
return $sms;
}
}