From ca63d957e4a740a5760923783c527d20441ad91e Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Thu, 12 Sep 2024 07:00:48 +0200 Subject: [PATCH] add tests with user defined verification cod --- ...ainSetupHostingAssetValidatorUnitTest.java | 46 +++++++++++++++---- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainSetupHostingAssetValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainSetupHostingAssetValidatorUnitTest.java index d051ce1e..f7c09092 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainSetupHostingAssetValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/validators/HsDomainSetupHostingAssetValidatorUnitTest.java @@ -365,6 +365,20 @@ class HsDomainSetupHostingAssetValidatorUnitTest { .isRejectedWithCauseMissingVerificationIn("sub.example.org"); } + @Test + void allowSetupOfRegistrableDomainWithUserDefinedVerificationCode() { + domainSetupFor("example.edu.it").notRegistered().withUserDefinedVerificationCode("ABCD-EFGH-IJKL-MNOP") + .withVerificationIn("example.edu.it") + .isAccepted(); + } + + @Test + void rejectSetupOfRegistrableDomainWithInvalidUserDefinedVerificationCode() { + domainSetupFor("example.edu.it").notRegistered().withUserDefinedVerificationCode("ABCD-EFGH-IJKL-MNOP") + .withVerificationIn("example.edu.it", "SOME-OTHER-CODE") + .isRejectedWithCauseMissingVerificationIn("example.edu.it"); + } + //==================================================================================================================== private static HsHostingAssetRealEntity createValidParentDomainSetupAsset(final String parentDomainName) { @@ -384,11 +398,9 @@ class HsDomainSetupHostingAssetValidatorUnitTest { class DomainSetupBuilder { private final HsHostingAssetRbacEntity domainAsset; - private final String expectedHash; public DomainSetupBuilder(final String domainName) { domainAsset = validEntityBuilder(domainName).build(); - expectedHash = domainAsset.getBookingItem().getDirectValue("verificationCode", String.class); } public DomainSetupBuilder(final HsHostingAssetRealEntity parentAsset, final String domainName) { @@ -396,7 +408,6 @@ class HsDomainSetupHostingAssetValidatorUnitTest { .bookingItem(null) .parentAsset(parentAsset) .build(); - expectedHash = null; } DomainSetupBuilder notRegistered() { @@ -423,20 +434,33 @@ class HsDomainSetupHostingAssetValidatorUnitTest { return this; } - DomainSetupBuilder withVerificationIn(final String domainName) { - assertThat(expectedHash).as("no expectedHash available").isNotNull(); + DomainSetupBuilder withUserDefinedVerificationCode(final String verificationCode) { + domainAsset.getBookingItem().getResources().put("verificationCode", verificationCode); + return this; + } + + DomainSetupBuilder withVerificationIn(final String domainName, final String verificationCode) { + assertThat(verificationCode).as("explicit verificationCode must not be null").isNotNull(); Dns.fakeResultForDomain( domainName, - Dns.Result.fromRecords("Hostsharing-domain-setup-verification-code=" + expectedHash)); + Dns.Result.fromRecords("Hostsharing-domain-setup-verification-code=" + verificationCode)); + return this; + } + + DomainSetupBuilder withVerificationIn(final String domainName) { + assertThat(expectedVerificationCode()).as("no expectedHash available").isNotNull(); + Dns.fakeResultForDomain( + domainName, + Dns.Result.fromRecords("Hostsharing-domain-setup-verification-code=" + expectedVerificationCode())); return this; } void isRejectedWithCauseMissingVerificationIn(final String domainName) { - assertThat(expectedHash).as("no expectedHash available").isNotNull(); + assertThat(expectedVerificationCode()).as("no expectedHash available").isNotNull(); assertThat(validate()).containsAnyOf( - "[DNS] no TXT record 'Hostsharing-domain-setup-verification-code=" + expectedHash + "[DNS] no TXT record 'Hostsharing-domain-setup-verification-code=" + expectedVerificationCode() + "' found for domain name '" + domainName + "' (nor in its super-domain)", - "[DNS] no TXT record 'Hostsharing-domain-setup-verification-code=" + expectedHash + "[DNS] no TXT record 'Hostsharing-domain-setup-verification-code=" + expectedVerificationCode() + "' found for domain name '" + domainName + "'"); } @@ -450,6 +474,10 @@ class HsDomainSetupHostingAssetValidatorUnitTest { assertThat(validate()).isEmpty(); } + private String expectedVerificationCode() { + return domainAsset.getBookingItem().getDirectValue("verificationCode", String.class); + } + private List validate() { if ( domainAsset.getBookingItem() != null ) { final var biValidation = HsBookingItemEntityValidatorRegistry.forType(HsBookingItemType.DOMAIN_SETUP)