Files

60 lines
2.1 KiB
PHP
Raw Permalink Normal View History

2019-01-27 12:14:18 +01:00
<?php
2019-10-05 17:26:10 +02:00
2019-01-27 12:14:18 +01:00
declare(strict_types=1);
namespace ShlinkioApiTest\Shlink\Rest\Fixtures;
use Cake\Chronos\Chronos;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
use Doctrine\Persistence\ObjectManager;
use Shlinkio\Shlink\Core\Domain\Entity\Domain;
use Shlinkio\Shlink\Rest\ApiKey\Model\ApiKeyMeta;
use Shlinkio\Shlink\Rest\ApiKey\Model\RoleDefinition;
2019-01-27 12:14:18 +01:00
use Shlinkio\Shlink\Rest\Entity\ApiKey;
class ApiKeyFixture extends AbstractFixture implements DependentFixtureInterface
2019-01-27 12:14:18 +01:00
{
public function getDependencies(): array
{
return [DomainFixture::class];
}
2019-01-27 12:14:18 +01:00
public function load(ObjectManager $manager): void
{
$manager->persist($this->buildApiKey('valid_api_key', enabled: true));
$manager->persist($this->buildApiKey('disabled_api_key', enabled: false));
$manager->persist($this->buildApiKey(
'expired_api_key',
enabled: true,
2023-08-19 11:48:04 +02:00
expiresAt: Chronos::now()->subDays(1)->startOfDay(),
));
$authorApiKey = $this->buildApiKey('author_api_key', enabled: true);
$authorApiKey->registerRole(RoleDefinition::forAuthoredShortUrls());
$manager->persist($authorApiKey);
$this->addReference('author_api_key', $authorApiKey);
/** @var Domain $exampleDomain */
$exampleDomain = $this->getReference('example_domain');
$domainApiKey = $this->buildApiKey('domain_api_key', enabled: true);
$domainApiKey->registerRole(RoleDefinition::forDomain($exampleDomain));
$manager->persist($domainApiKey);
$authorApiKey = $this->buildApiKey('no_orphans_api_key', enabled: true);
$authorApiKey->registerRole(RoleDefinition::forNoOrphanVisits());
$manager->persist($authorApiKey);
2019-01-27 12:14:18 +01:00
$manager->flush();
}
2024-10-28 22:27:30 +01:00
private function buildApiKey(string $key, bool $enabled, Chronos|null $expiresAt = null): ApiKey
2019-01-27 12:14:18 +01:00
{
$apiKey = ApiKey::fromMeta(ApiKeyMeta::fromParams(key: $key, expirationDate: $expiresAt));
if (!$enabled) {
2019-01-27 12:14:18 +01:00
$apiKey->disable();
}
return $apiKey;
}
}