mirror of
https://github.com/maelgangloff/domain-watchdog.git
synced 2025-12-18 02:05:36 +00:00
test: update DomainTest after refactor
This commit is contained in:
parent
597c744161
commit
51345f15b7
@ -127,7 +127,7 @@ class Domain
|
|||||||
|
|
||||||
#[ORM\Column(nullable: false, options: ['default' => false])]
|
#[ORM\Column(nullable: false, options: ['default' => false])]
|
||||||
#[Groups(['domain:item', 'domain:list'])]
|
#[Groups(['domain:item', 'domain:list'])]
|
||||||
private ?bool $delegationSigned = null;
|
private bool $delegationSigned = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, DnsKey>
|
* @var Collection<int, DnsKey>
|
||||||
|
|||||||
@ -7,12 +7,18 @@ namespace App\Tests\Entity;
|
|||||||
use App\Entity\Domain;
|
use App\Entity\Domain;
|
||||||
use App\Entity\DomainEvent;
|
use App\Entity\DomainEvent;
|
||||||
use App\Entity\DomainStatus;
|
use App\Entity\DomainStatus;
|
||||||
|
use App\Entity\Tld;
|
||||||
use App\Exception\MalformedDomainException;
|
use App\Exception\MalformedDomainException;
|
||||||
use App\Service\RDAPService;
|
use App\Service\RDAPService;
|
||||||
|
use App\Tests\Service\RDAPServiceTest;
|
||||||
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
use Doctrine\ORM\Exception\ORMException;
|
||||||
use PHPUnit\Framework\Attributes\DataProvider;
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
|
use PHPUnit\Framework\Attributes\DependsExternal;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
||||||
|
use Symfony\Component\Uid\UuidV4;
|
||||||
|
|
||||||
final class DomainTest extends KernelTestCase
|
class DomainTest extends KernelTestCase
|
||||||
{
|
{
|
||||||
public function testIsRedemptionPeriod(): void
|
public function testIsRedemptionPeriod(): void
|
||||||
{
|
{
|
||||||
@ -50,112 +56,108 @@ final class DomainTest extends KernelTestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetExpiresInDays(): void
|
#[DataProvider('domainProvider')]
|
||||||
|
#[DependsExternal(RDAPServiceTest::class, 'testUpdateRdapServers')]
|
||||||
|
public function testGetExpiresInDays(?int $expected, Domain $domain, string $message): void
|
||||||
{
|
{
|
||||||
$this->assertNull(
|
/** @var RDAPService $RDAPService */
|
||||||
(new Domain())
|
$RDAPService = self::getContainer()->get(RDAPService::class);
|
||||||
->setDeleted(true)
|
|
||||||
->getExpiresInDays(),
|
|
||||||
'No guess if the domain is flagged as deleted'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertEquals(
|
$this->assertEquals($expected, $RDAPService->getExpiresInDays($domain), $message);
|
||||||
90, // Expiration date (10 days) + Auto Renew Period (45 days) + Redemption Period (30 days) + Pending Delete (5 days)
|
}
|
||||||
(new Domain())
|
|
||||||
|
/**
|
||||||
|
* @throws MalformedDomainException
|
||||||
|
* @throws ORMException
|
||||||
|
*/
|
||||||
|
public static function domainProvider(): array
|
||||||
|
{
|
||||||
|
/** @var EntityManagerInterface $entityManager */
|
||||||
|
$entityManager = self::getContainer()->get(EntityManagerInterface::class);
|
||||||
|
$arpaTld = $entityManager->getReference(Tld::class, 'arpa');
|
||||||
|
|
||||||
|
$now = new \DateTimeImmutable();
|
||||||
|
|
||||||
|
// Domain deleted
|
||||||
|
$domainDeleted = (new Domain())
|
||||||
|
->setLdhName((new UuidV4())->toString())
|
||||||
|
->setTld($arpaTld)
|
||||||
|
->setDeleted(true);
|
||||||
|
|
||||||
|
$entityManager->persist($domainDeleted);
|
||||||
|
|
||||||
|
// Domain with future expiration event
|
||||||
|
$domainExpirationEvent = (new Domain())
|
||||||
|
->setLdhName((new UuidV4())->toString())
|
||||||
|
->setTld($arpaTld)
|
||||||
->addEvent(
|
->addEvent(
|
||||||
(new DomainEvent())
|
(new DomainEvent())
|
||||||
->setDate((new \DateTimeImmutable())->add(new \DateInterval('P10D')))
|
->setDate($now->add(new \DateInterval('P10D')))
|
||||||
->setAction('expiration')
|
->setAction('expiration')
|
||||||
->setDeleted(false)
|
->setDeleted(false)
|
||||||
)->getExpiresInDays(),
|
|
||||||
'Guess based on domain events date'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals(
|
$entityManager->persist($domainExpirationEvent);
|
||||||
5, // Pending Delete (5 days)
|
|
||||||
(new Domain())
|
// Domain with pending delete status
|
||||||
->setStatus(['pending delete'])
|
$domainPendingDelete = (new Domain())
|
||||||
->addDomainStatus(
|
->setLdhName((new UuidV4())->toString())
|
||||||
(new DomainStatus())
|
->setTld($arpaTld)
|
||||||
|
->setStatus(['pending delete']);
|
||||||
|
|
||||||
|
$entityManager->persist($domainPendingDelete);
|
||||||
|
$entityManager->persist((new DomainStatus())
|
||||||
|
->setDomain($domainPendingDelete)
|
||||||
->setAddStatus(['pending delete'])
|
->setAddStatus(['pending delete'])
|
||||||
->setDeleteStatus(['active'])
|
->setDeleteStatus(['active'])
|
||||||
->setCreatedAt(new \DateTimeImmutable())
|
->setCreatedAt($now)
|
||||||
->setDate(new \DateTimeImmutable())
|
->setDate($now));
|
||||||
)->getExpiresInDays(),
|
|
||||||
'Guess based on domain EPP status'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertEquals(
|
// Domain in redemption period
|
||||||
35, // Redemption Period (15 days) + Pending Delete (5 days)
|
$domainRedemption = (new Domain())
|
||||||
(new Domain())
|
->setLdhName((new UuidV4())->toString())
|
||||||
->setStatus(['redemption period'])
|
->setTld($arpaTld)
|
||||||
->addDomainStatus(
|
->setStatus(['redemption period']);
|
||||||
(new DomainStatus())
|
|
||||||
|
$entityManager->persist($domainRedemption);
|
||||||
|
$entityManager->persist((new DomainStatus())
|
||||||
|
->setDomain($domainRedemption)
|
||||||
->setAddStatus(['redemption period'])
|
->setAddStatus(['redemption period'])
|
||||||
->setDeleteStatus(['active'])
|
->setDeleteStatus(['active'])
|
||||||
->setCreatedAt(new \DateTimeImmutable())
|
->setCreatedAt($now)
|
||||||
->setDate(new \DateTimeImmutable())
|
->setDate($now));
|
||||||
)->getExpiresInDays(),
|
|
||||||
'Domain name entered in the redemption period'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertEquals(
|
// Domain with deletion event today
|
||||||
5, // Pending Delete (5 days)
|
$domainDeletionToday = (new Domain())
|
||||||
(new Domain())
|
->setLdhName((new UuidV4())->toString())
|
||||||
|
->setTld($arpaTld)
|
||||||
->setStatus(['pending delete'])
|
->setStatus(['pending delete'])
|
||||||
->addEvent(
|
->addEvent(
|
||||||
(new DomainEvent())
|
(new DomainEvent())
|
||||||
->setDate((new \DateTimeImmutable())->sub(new \DateInterval('P10D')))
|
->setDate($now)
|
||||||
->setAction('expiration')
|
|
||||||
->setDeleted(false)
|
|
||||||
)
|
|
||||||
->addDomainStatus(
|
|
||||||
(new DomainStatus())
|
|
||||||
->setAddStatus(['pending delete'])
|
|
||||||
->setDeleteStatus(['active'])
|
|
||||||
->setCreatedAt(new \DateTimeImmutable())
|
|
||||||
->setDate(new \DateTimeImmutable())
|
|
||||||
)->getExpiresInDays(),
|
|
||||||
'Domain name entered in the pending delete period'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
1,
|
|
||||||
(new Domain())
|
|
||||||
->setStatus(['pending delete'])
|
|
||||||
->addEvent(
|
|
||||||
(new DomainEvent())
|
|
||||||
->setDate((new \DateTimeImmutable())->sub(new \DateInterval('P'.(45 + 30 + 4).'D')))
|
|
||||||
->setAction('expiration')
|
|
||||||
->setDeleted(false)
|
|
||||||
)
|
|
||||||
->addDomainStatus(
|
|
||||||
(new DomainStatus())
|
|
||||||
->setAddStatus(['pending delete'])
|
|
||||||
->setDeleteStatus(['active'])
|
|
||||||
->setCreatedAt(new \DateTimeImmutable())
|
|
||||||
->setDate(new \DateTimeImmutable())
|
|
||||||
)->getExpiresInDays(),
|
|
||||||
'Guess based on domain status in priority'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertNull(
|
|
||||||
(new Domain())->setStatus(['pending delete'])->getExpiresInDays(),
|
|
||||||
'Not enough data to guess'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertEquals(
|
|
||||||
0,
|
|
||||||
(new Domain())
|
|
||||||
->setStatus(['pending delete'])
|
|
||||||
->addEvent(
|
|
||||||
(new DomainEvent())
|
|
||||||
->setDate(new \DateTimeImmutable())
|
|
||||||
->setAction('deletion')
|
->setAction('deletion')
|
||||||
->setDeleted(false)
|
->setDeleted(false)
|
||||||
)->getExpiresInDays(),
|
|
||||||
'deletion event on last day (AFNIC)'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$entityManager->persist($domainDeletionToday);
|
||||||
|
|
||||||
|
// Domain with status but not enough data
|
||||||
|
$domainNotEnoughData = (new Domain())
|
||||||
|
->setLdhName((new UuidV4())->toString())
|
||||||
|
->setTld($arpaTld)
|
||||||
|
->setStatus(['pending delete']);
|
||||||
|
|
||||||
|
$entityManager->persist($domainNotEnoughData);
|
||||||
|
$entityManager->flush();
|
||||||
|
|
||||||
|
return [
|
||||||
|
[null, $domainDeleted, 'No guess if the domain is flagged as deleted'],
|
||||||
|
[90, $domainExpirationEvent, 'Guess based on domain events date'],
|
||||||
|
[5, $domainPendingDelete, 'Guess based on domain EPP status'],
|
||||||
|
[35, $domainRedemption, 'Domain name entered in the redemption period'],
|
||||||
|
[0, $domainDeletionToday, 'deletion event on last day (AFNIC)'],
|
||||||
|
[null, $domainNotEnoughData, 'Not enough data to guess'],
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testIdnDomainName(): void
|
public function testIdnDomainName(): void
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user