diff --git a/core/src/test/java/google/registry/tmch/TmchTestDataExpirationTest.java b/core/src/test/java/google/registry/tmch/TmchTestDataExpirationTest.java index a0186c0b7..a54719248 100644 --- a/core/src/test/java/google/registry/tmch/TmchTestDataExpirationTest.java +++ b/core/src/test/java/google/registry/tmch/TmchTestDataExpirationTest.java @@ -14,20 +14,16 @@ package google.registry.tmch; -import static google.registry.testing.TestDataHelper.listFiles; +import static google.registry.testing.TestDataHelper.loadFile; import static org.joda.time.DateTimeZone.UTC; -import com.google.common.flogger.FluentLogger; import google.registry.config.RegistryConfig.ConfigModule.TmchCaMode; import google.registry.flows.EppException; import google.registry.flows.domain.DomainFlowTmchUtils; import google.registry.model.smd.EncodedSignedMark; import google.registry.testing.AppEngineExtension; -import google.registry.util.ResourceUtils; import google.registry.util.SystemClock; -import java.nio.file.Path; import org.joda.time.DateTime; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -37,9 +33,17 @@ class TmchTestDataExpirationTest { @RegisterExtension public final AppEngineExtension appEngine = AppEngineExtension.builder().withCloudSql().build(); - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - @Disabled("TODO(b/243130376): update the data files when ICANN provides them") + /** + * Verifies the currently-active signed mark file provided by ICANN. + * + *
The rest of the tests use injected clocks so that we don't have to keep updating those SMD + * files and so that we can test various types of files, but this test will vail when the validity + * of the ICANN-provided file expires. + * + *
When this fails, check + * https://newgtlds.icann.org/en/about/trademark-clearinghouse/registries-registrars for a + * new updated SMD file. + */ @Test void testActiveSignedMarkFiles_areValidAndNotExpired() throws Exception { DomainFlowTmchUtils tmchUtils = @@ -47,19 +51,13 @@ class TmchTestDataExpirationTest { new TmchXmlSignature( new TmchCertificateAuthority(TmchCaMode.PILOT, new SystemClock()))); - for (Path path : listFiles(TmchTestDataExpirationTest.class, "active/")) { - if (path.toString().endsWith(".smd")) { - logger.atInfo().log("Verifying: %s", path); - String tmchData = ResourceUtils.readResourceUtf8(path.toUri().toURL()); - EncodedSignedMark smd = TmchData.readEncodedSignedMark(tmchData); - try { - tmchUtils.verifyEncodedSignedMark(smd, DateTime.now(UTC)); - } catch (EppException e) { - throw new AssertionError("Error verifying signed mark " + path, e); - } - } else { - logger.atInfo().log("Ignored: %s", path); - } + String filePath = "active/smd-active-21aug20-en.smd"; + String tmchData = loadFile(TmchTestDataExpirationTest.class, filePath); + EncodedSignedMark smd = TmchData.readEncodedSignedMark(tmchData); + try { + tmchUtils.verifyEncodedSignedMark(smd, DateTime.now(UTC)); + } catch (EppException e) { + throw new AssertionError("Error verifying signed mark " + filePath, e); } } } diff --git a/core/src/test/resources/google/registry/tmch/active/smd-active-21aug20-en.smd b/core/src/test/resources/google/registry/tmch/active/smd-active-21aug20-en.smd new file mode 100644 index 000000000..39fa1a7a6 --- /dev/null +++ b/core/src/test/resources/google/registry/tmch/active/smd-active-21aug20-en.smd @@ -0,0 +1,102 @@ +Marks: Test & Validate +smdID: 000000851598037875889-65535 +U-labels: test---validate, test--validate, test-and-validate, test-andvalidate, test-validate, testand-validate, testandvalidate, testvalidate +notBefore: 2020-08-21T19:24:35.889Z +notAfter: 2023-08-18T14:57:36.681Z +-----BEGIN ENCODED SMD----- +PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c21kOnNpZ25lZE1hcmsgeG1s +bnM6c21kPSJ1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOnNpZ25lZE1hcmstMS4wIiBpZD0iX2UwMGE3 +N2EyLTdjYWItNGNiOS1iYmJjLTg2MmYxZjQ4ODlmMSI+PHNtZDppZD4wMDAwMDA4NTE1OTgwMzc4 +NzU4ODktNjU1MzU8L3NtZDppZD48c21kOmlzc3VlckluZm8gaXNzdWVySUQ9IjY1NTM1Ij48c21k +Om9yZz5JQ0FOTiBUTUNIIFRFU1RJTkcgVE1WPC9zbWQ6b3JnPjxzbWQ6ZW1haWw+bm90YXZhaWxh +YmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+PHNtZDp1cmw+d3d3LmV4YW1wbGUuY29tPC9zbWQ6 +dXJsPjxzbWQ6dm9pY2UgeD0iIj4rMzIuMjAwMDAwMDA8L3NtZDp2b2ljZT48L3NtZDppc3N1ZXJJ +bmZvPjxzbWQ6bm90QmVmb3JlPjIwMjAtMDgtMjFUMTk6MjQ6MzUuODg5Wjwvc21kOm5vdEJlZm9y +ZT48c21kOm5vdEFmdGVyPjIwMjMtMDgtMThUMTQ6NTc6MzYuNjgxWjwvc21kOm5vdEFmdGVyPjxt +YXJrOm1hcmsgeG1sbnM6bWFyaz0idXJuOmlldGY6cGFyYW1zOnhtbDpuczptYXJrLTEuMCI+PG1h +cms6Y291cnQ+PG1hcms6aWQ+MDAwMTM3MTUwMzA2Nzg2ODE1MDMwNjc4NjgtMTwvbWFyazppZD48 +bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPjxtYXJrOmhv +bGRlciBlbnRpdGxlbWVudD0ib3duZXIiPjxtYXJrOm5hbWU+VG9ueSBIb2xsYW5kPC9tYXJrOm5h +bWU+PG1hcms6b3JnPkFnIGNvcnBvcmF0aW9uPC9tYXJrOm9yZz48bWFyazphZGRyPjxtYXJrOnN0 +cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PjxtYXJrOnN0cmVldC8+PG1hcms6 +c3RyZWV0Lz48bWFyazpjaXR5PkFyY2FkaWE8L21hcms6Y2l0eT48bWFyazpzcC8+PG1hcms6cGM+ +OTAwMjg8L21hcms6cGM+PG1hcms6Y2M+VVM8L21hcms6Y2M+PC9tYXJrOmFkZHI+PC9tYXJrOmhv +bGRlcj48bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij48bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwv +bWFyazpuYW1lPjxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+PG1hcms6YWRkcj48 +bWFyazpzdHJlZXQ+QnJpZ2h0IEF2ZW51ZSAxMzA1IDwvbWFyazpzdHJlZXQ+PG1hcms6Y2l0eT5B +cmNhZGlhPC9tYXJrOmNpdHk+PG1hcms6c3A+Q0E8L21hcms6c3A+PG1hcms6cGM+OTAwMjg8L21h +cms6cGM+PG1hcms6Y2M+VVM8L21hcms6Y2M+PC9tYXJrOmFkZHI+PG1hcms6dm9pY2U+KzEuMjAy +NTU2MjMwMjwvbWFyazp2b2ljZT48bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+PG1h +cms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD48L21hcms6Y29udGFj +dD48bWFyazpsYWJlbD50ZXN0LS0tdmFsaWRhdGU8L21hcms6bGFiZWw+PG1hcms6bGFiZWw+dGVz +dC0tdmFsaWRhdGU8L21hcms6bGFiZWw+PG1hcms6bGFiZWw+dGVzdC1hbmQtdmFsaWRhdGU8L21h +cms6bGFiZWw+PG1hcms6bGFiZWw+dGVzdC1hbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD48bWFyazps +YWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPjxtYXJrOmxhYmVsPnRlc3RhbmQtdmFsaWRh +dGU8L21hcms6bGFiZWw+PG1hcms6bGFiZWw+dGVzdGFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPjxt +YXJrOmxhYmVsPnRlc3R2YWxpZGF0ZTwvbWFyazpsYWJlbD48bWFyazpnb29kc0FuZFNlcnZpY2Vz +Pmd1aXRhcjwvbWFyazpnb29kc0FuZFNlcnZpY2VzPjxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJl +Zk51bT48bWFyazpwcm9EYXRlPjIwMTMtMDEtMDFUMDA6MDA6MDAuMDAwWjwvbWFyazpwcm9EYXRl +PjxtYXJrOmNjPlVTPC9tYXJrOmNjPjxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFt +ZT48L21hcms6Y291cnQ+PC9tYXJrOm1hcms+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDov +L3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDVlNDkwNC00NjE3LTRhYWItYTZk +ZS1kNzJmZjllZTBlMTEiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9k +IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRz +OlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1s +ZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI19lMDBhNzdhMi03Y2Fi +LTRjYjktYmJiYy04NjJmMWY0ODg5ZjEiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxn +b3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25h +dHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEw +L3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0 +aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RW +YWx1ZT5HeFhDcFpJTlQ3KzNJUmszQjBjYlZTTFBsaFVTUkV0MFppYlcyQWVMSDlBPTwvZHM6RGln +ZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfOTZmM2EyMzUtMDc2 +Ny00OTk5LWEwZDQtODM2ZDkxY2MxZjg0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFs +Z29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpU +cmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y +MDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+Y2pXUTVtdlRPMzVlK3czczIr +R1B0S1NIQzIxczc4Q1VwWWlCODVqOUdwbz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNl +PjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il8zNGVkZDBlZS03MzBkLTQz +YTQtYTNiZC0wNzA2ZGRmZWNkMDIiPjBaT2p0eDZWd1NnNlRhYXBTeWpiSitHdk5DSyszWElOWnUy +MVlmWmNHYmZ5WmI2cGk3NCtqYkdaaFY4NzlSdlFPU1hoUmpNTWVHUHMKNDY0dU81WDROL1ZMUith +dlZxWnFTSUxBTk4zSkFKVHlnSHoyUFV0T3VzYm5xdWtRZVI1dGdEckJWT0VPMElWZVpWb1A2UGJM +ekVBZwpzQ1d4THowbXFQeUM1ZXVqZ284SGJlTmJoYXRFL00zNFV6WHJKSVM2YTNma1NTQWdjbnp4 +OG1Wd2VhUVlxQXF4Vit0ck9mWHYxYWxqCnBRTlFEWElFQnZ4U2NsMmhic01oZ1dLZmxITmJQVHZL +a0lSQ3JBN3hFVVFyTjlFdDZKdkdKMU1BeW50eEpnLzl0ZjZKcEU1aDJCdHcKdEJNaDRRY2ZmN21G +aUhCQ2RSeEg3d2tIa1ZSTmE2WXFCeE9XQ0E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUlu +Zm8gSWQ9Il85NmYzYTIzNS0wNzY3LTQ5OTktYTBkNC04MzZkOTFjYzFmODQiPjxkczpYNTA5RGF0 +YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZYRENDQkVTZ0F3SUJBZ0lJZml1bERhR082NWd3RFFZ +SktvWklodmNOQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTYKQmdOVkJBb1RNMGx1ZEdW +eWJtVjBJRU52Y25CdmNtRjBhVzl1SUdadmNpQkJjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0 +WW1WeQpjekV2TUMwR0ExVUVBeE1tU1VOQlRrNGdWSEpoWkdWdFlYSnJJRU5zWldGeWFXNW5hRzkx +YzJVZ1VHbHNiM1FnUTBFd0hoY05NakF3Ck9ERXpNREF3TURBd1doY05Nak13TXpNeE1qTTFPVFU1 +V2pDQnlERUxNQWtHQTFVRUJoTUNRa1V4RVRBUEJnTlZCQWdUQ0VKeWRYTnoKWld4ek1SSXdFQVlE +VlFRSEV3bFdhV3gyYjI5eVpHVXhNVEF2QmdOVkJBb01LRVJsYkc5cGRIUmxJRU52Ym5OMWJIUnBi +bWNnSmlCQgpaSFpwYzI5eWVTQkRWa0pCTDFORFVrd3hPREEyQmdOVkJBTVRMMGxEUVU1T0lGUk5R +MGdnUVhWMGFHOXlhWHBsWkNCVWNtRmtaVzFoCmNtc2dVR2xzYjNRZ1ZtRnNhV1JoZEc5eU1TVXdJ +d1lKS29aSWh2Y05BUWtCRmhaaVpYUnRZMmh6YldSQVpHVnNiMmwwZEdVdVkyOXQKTUlJQklqQU5C +Z2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEwNU9XdnFONWJlTG8yL29jSjVOZXNH +dzFqVTF6a3FRdgorME5rTEw4UWx4Wmg5Y015bmYvbmlHVHlTeU94MTk0QlNyb1B2a3drd0xqZTNG +TmhtVitCc1pvN2J5dGpVOUZDU2dkMzhvUjRnaHRRCjVhV2t4VkxyWW51cTlUTWQzYVBwWEswMTJD +Wnd1ZzRsc3VpVkk5Y0lTTkxoK3RoZzZJVWtmQnNVRlRiQ2tvbVdhcjV1UXFoR3JjMWQKazhjUE1o +VUxpUm85bnFRRDM1NjYxcFdlWTk4Z0MrTGEwVkZVOXFDUmpXMzcwK3dZZ25VY2ZMQ3NTYWx5dVZE +STlYUGlHRmtXRkd3TwpyUklQRTY2MjBjTThPRGF3RFFlQTlCcUNVa0ZpUE91RXFGU2VrNExPTU9L +ZFlNNXRSRUd4bHI3anJBQWVDNTRTejFDRlNsUWdIbXlZCncvbUVOd0lEQVFBQm80SUJrekNDQVk4 +d0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEVGZ1FVTlZkWFQ0SGZNSWIrcWgyU0duV28KTGRK +dFhsZ3dnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFhTb3B0M0RFTm5uR2hnWUNr +ZmpCOE1Rc3dDUVlEVlFRRwpFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5 +WVhScGIyNGdabTl5SUVGemMybG5ibVZrSUU1aGJXVnpJR0Z1ClpDQk9kVzFpWlhKek1TOHdMUVlE +VlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoY21zZ1EyeGxZWEpwYm1kb2IzVnpaU0JRYVd4dmRDQkQK +UVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk5oWGt3RGdZRFZSMFBB +UUgvQkFRREFnZUFNRFFHQTFVZApId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhi +bTR1YjNKbkwzUnRZMmhmY0dsc2IzUXVZM0pzTUZFR0ExVWRJQVJLCk1FZ3dFQVlPS3dZQkJBR0N5 +UnNCQllNN0RBb3dOQVlJS3dZQkJRVUhBZ0V3S0RBbUJnZ3JCZ0VGQlFjQ0FSWWFhSFIwY0hNNkx5 +OWoKWVM1cFkyRnViaTV2Y21jdmNHbHNiM1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUYzektx +dTBrUXZwT3RzVXAxMVIzRHlXdHRtagp5T1VsSnkvVTc0Vms3Z2JUVlJqZG85bTJTT2wyOERrVmgz +TlVRSVZSSjk2QWhlTWEvN3hUM0F1UjZRYlJUZkN3ekh5N282R1dIZkg4Cjh4UDNRU1NwZ2wzcUVV +ekRzMG1hRFJNUzNiZEQ3VzlKdWJzYzB5NmZaNm5hVWRxbFFUMXVJSEgvWW5hWXV5azRJSFRRTFRa +NFhlVFMKQjZVR3pha1h0UFFLblZ3dDFCa2FSN281SVFVbXVDSUp0KzZrYjVNVlhhRnNGZDFYbm1t +RGg0dDVlSWRyYnJGZTlMdzBxbXR4M3FhdApZRXFqbTdOcEJnOXp1dUNMN3JDWGF1Y3VMVDZmVHZB +VXhHaTdEdlhQTUE2K2x2dVc5WURBcVAvY3FEYTYvdnBNMStHRnB5VEhMT2UwClY0T01PTy90U25n +PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2ln +bmF0dXJlPjwvc21kOnNpZ25lZE1hcms+Cg== +-----END ENCODED SMD-----