From 2379ec04a80aa83eab611926fc91c48c1454e366 Mon Sep 17 00:00:00 2001 From: Hylke Witjens Date: Fri, 1 May 2026 10:51:28 +0200 Subject: [PATCH 1/2] Some metadata fields were missing --- phpstan.neon | 4 ++- src/Domain/Enum/RenewOnTransferEnum.php | 23 ++++++++++++++ src/Domain/TLDMetaData.php | 30 +++++++++++++++++-- .../metadata/metadata_unknown_feature.php | 3 ++ tests/Domain/data/metadata/metadata_valid.php | 4 +++ tests/Domain/data/tldinfo.php | 3 ++ tests/Domain/data/tldinfo_com.json | 6 +++- tests/Domain/data/tldinfo_nl.json | 5 +++- 8 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 src/Domain/Enum/RenewOnTransferEnum.php diff --git a/phpstan.neon b/phpstan.neon index bdc6616..176c1a1 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,6 +1,8 @@ parameters: checkGenericClassInNonGenericObjectType: false - checkMissingIterableValueType: false level: 8 + ignoreErrors: + - + identifier: missingType.iterableValue paths: - src diff --git a/src/Domain/Enum/RenewOnTransferEnum.php b/src/Domain/Enum/RenewOnTransferEnum.php new file mode 100644 index 0000000..10987dc --- /dev/null +++ b/src/Domain/Enum/RenewOnTransferEnum.php @@ -0,0 +1,23 @@ +createDomainPeriods = $createDomainPeriods; $this->renewDomainPeriods = $renewDomainPeriods; @@ -186,6 +199,10 @@ private function __construct( $this->wdrpNotifications = $wdrpNotifications; $this->errpNotifications = $errpNotifications; $this->transferLockDays = $transferLockDays; + $this->renewalOnTransfer = $renewalOnTransfer; + $this->registrationNotice = $registrationNotice; + $this->registrantChangeTransferLock = $registrantChangeTransferLock; + $this->restoreIncludesRenew = $restoreIncludesRenew; } public static function fromArray(array $json): TLDMetaData @@ -205,6 +222,7 @@ public static function fromArray(array $json): TLDMetaData WhoisExposureEnum::validate($json['whoisExposure']); GDPRCategoryEnum::validate($json['gdprCategory']); PremiumSupportEnum::validate($json['premiumSupport']); + RenewOnTransferEnum::validate($json['renewalOnTransfer']); return new TLDMetaData( $json['createDomainPeriods'], @@ -248,7 +266,11 @@ public static function fromArray(array $json): TLDMetaData $json['premiumSupport'], $json['wdrpNotifications'], $json['errpNotifications'], - $json['transferLockDays'] ?? null + $json['transferLockDays'] ?? null, + $json['renewalOnTransfer'], + $json['registrationNotice'] ?? null, + $json['registrantChangeTransferLock'], + $json['restoreIncludesRenew'], ); } @@ -297,6 +319,10 @@ public function toArray(): array 'techContacts' => $this->techContacts->toArray(), 'contactProperties' => $this->contactProperties ? $this->contactProperties->toArray() : null, 'launchPhases' => $this->launchPhases ? $this->launchPhases->toArray() : null, + 'renewalOnTransfer' => $this->renewalOnTransfer, + 'registrationNotice' => $this->registrationNotice, + 'registrantChangeTransferLock' => $this->registrantChangeTransferLock, + 'restoreIncludesRenew' => $this->restoreIncludesRenew, ], function ($x) { return ! is_null($x); }); diff --git a/tests/Domain/data/metadata/metadata_unknown_feature.php b/tests/Domain/data/metadata/metadata_unknown_feature.php index 9e7e1db..88247a8 100644 --- a/tests/Domain/data/metadata/metadata_unknown_feature.php +++ b/tests/Domain/data/metadata/metadata_unknown_feature.php @@ -32,4 +32,7 @@ 'adminContacts' => ['min' => 0, 'max' => 10, 'required' => false, 'organizationRequired' => false, 'organizationAllowed' => true], // ContactsConstraint 'billingContacts' => ['min' => 0, 'max' => 10, 'required' => false, 'organizationRequired' => false, 'organizationAllowed' => true], // ContactsConstraint 'techContacts' => ['min' => 0, 'max' => 10, 'required' => false, 'organizationRequired' => false, 'organizationAllowed' => true], // ContactsConstraint + 'renewalOnTransfer' => 'RENEWAL', + 'registrantChangeTransferLock' => true, + 'restoreIncludesRenew' => true, ]; diff --git a/tests/Domain/data/metadata/metadata_valid.php b/tests/Domain/data/metadata/metadata_valid.php index ce7342e..aea6d44 100644 --- a/tests/Domain/data/metadata/metadata_valid.php +++ b/tests/Domain/data/metadata/metadata_valid.php @@ -32,4 +32,8 @@ 'adminContacts' => ['min' => 0, 'max' => 10, 'required' => false, 'organizationRequired' => false, 'organizationAllowed' => true], // ContactsConstraint 'billingContacts' => ['min' => 0, 'max' => 10, 'required' => false, 'organizationRequired' => false, 'organizationAllowed' => true], // ContactsConstraint 'techContacts' => ['min' => 0, 'max' => 10, 'required' => false, 'organizationRequired' => false, 'organizationAllowed' => true], // ContactsConstraint + 'renewalOnTransfer' => 'NO_CHANGE', + 'registrationNotice' => 'Valid!', + 'registrantChangeTransferLock' => true, + 'restoreIncludesRenew' => false, ]; diff --git a/tests/Domain/data/tldinfo.php b/tests/Domain/data/tldinfo.php index fc6f08b..4b4c0bc 100644 --- a/tests/Domain/data/tldinfo.php +++ b/tests/Domain/data/tldinfo.php @@ -61,5 +61,8 @@ 'techContacts' => include __DIR__ . '/contacts/contacts_constraint.php', 'contactProperties' => [include __DIR__ . '/contacts/contact_property_valid.php'], 'launchPhases' => [include __DIR__ . '/launch_phase.php'], + 'renewalOnTransfer' => 'NO_CHANGE', + 'registrantChangeTransferLock' => true, + 'restoreIncludesRenew' => false, ], ]; diff --git a/tests/Domain/data/tldinfo_com.json b/tests/Domain/data/tldinfo_com.json index 9c1b026..eb15873 100644 --- a/tests/Domain/data/tldinfo_com.json +++ b/tests/Domain/data/tldinfo_com.json @@ -466,7 +466,11 @@ "validationCategory": "General", "wdrpNotifications": false, "errpNotifications": false, - "transferLockDays": 0 + "transferLockDays": 0, + "renewalOnTransfer": "NO_CHANGE", + "registrationNotice": "This is a registration notice!", + "registrantChangeTransferLock": false, + "restoreIncludesRenew": false }, "provider": "Verisign", "applicableFor": [ diff --git a/tests/Domain/data/tldinfo_nl.json b/tests/Domain/data/tldinfo_nl.json index 68d8fd0..d62b458 100644 --- a/tests/Domain/data/tldinfo_nl.json +++ b/tests/Domain/data/tldinfo_nl.json @@ -125,7 +125,10 @@ }, "wdrpNotifications": false, "errpNotifications": true, - "transferLockDays": 0 + "transferLockDays": 0, + "renewalOnTransfer": "RENEW_UNLESS_GRACE", + "registrantChangeTransferLock": false, + "restoreIncludesRenew": false }, "provider": "Sidn", "applicableFor": [ From a702d35b483112982352fadc413d67f9bbc4fe29 Mon Sep 17 00:00:00 2001 From: Hylke Witjens Date: Fri, 1 May 2026 10:54:02 +0200 Subject: [PATCH 2/2] Updated phpstan config --- phpstan.neon | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/phpstan.neon b/phpstan.neon index 176c1a1..d63a14b 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,8 +1,9 @@ parameters: - checkGenericClassInNonGenericObjectType: false level: 8 ignoreErrors: - identifier: missingType.iterableValue + - + identifier: missingType.generics paths: - src