From e55f28b291821fc8fa6a1e587b048c22873e83b0 Mon Sep 17 00:00:00 2001 From: gbrodman Date: Fri, 28 Feb 2020 13:57:33 -0500 Subject: [PATCH] Show pending locks in the locked-domains table (#495) * Show pending locks in the locked-domains table * asdf * fix the tests * including pending unlocks in the table * fix the screenshot test --- .../model/registry/RegistryLockDao.java | 28 +++---- .../registrar/RegistryLockGetAction.java | 27 +++--- .../google/registry/ui/externs/json.js | 4 +- .../ui/soy/registrar/RegistryLock.soy | 31 ++++--- .../model/registry/RegistryLockDaoTest.java | 3 +- .../google/registry/testing/SqlHelper.java | 2 +- .../registrar/RegistryLockGetActionTest.java | 79 +++++++++++++++--- .../RegistrarConsoleScreenshotTest.java | 32 ++++++- ...tTest_registryLock_nonEmpty_admin_page.png | Bin 57716 -> 61071 bytes 9 files changed, 152 insertions(+), 54 deletions(-) diff --git a/core/src/main/java/google/registry/model/registry/RegistryLockDao.java b/core/src/main/java/google/registry/model/registry/RegistryLockDao.java index 5d094c692..8568cce79 100644 --- a/core/src/main/java/google/registry/model/registry/RegistryLockDao.java +++ b/core/src/main/java/google/registry/model/registry/RegistryLockDao.java @@ -25,11 +25,7 @@ import javax.persistence.EntityManager; /** Data access object for {@link google.registry.schema.domain.RegistryLock}. */ public final class RegistryLockDao { - /** - * Returns the most recent version of the {@link RegistryLock} referred to by the verification - * code (there may be two instances of the same code in the database--one after lock object - * creation and one after verification. - */ + /** Returns the most recent version of the {@link RegistryLock} referred to by the code. */ public static Optional getByVerificationCode(String verificationCode) { jpaTm().assertInTransaction(); EntityManager em = jpaTm().getEntityManager(); @@ -43,25 +39,24 @@ public final class RegistryLockDao { return Optional.ofNullable(revisionId).map(revision -> em.find(RegistryLock.class, revision)); } - /** Returns all lock objects that this registrar has created. */ - public static ImmutableList getLockedDomainsByRegistrarId(String registrarId) { + /** Returns all lock objects that this registrar has created, including pending locks. */ + public static ImmutableList getLocksByRegistrarId(String registrarId) { jpaTm().assertInTransaction(); return ImmutableList.copyOf( jpaTm() .getEntityManager() .createQuery( - "SELECT lock FROM RegistryLock lock WHERE" - + " lock.registrarId = :registrarId " - + "AND lock.lockCompletionTimestamp IS NOT NULL " - + "AND lock.unlockCompletionTimestamp IS NULL", + "SELECT lock FROM RegistryLock lock WHERE lock.registrarId = :registrarId" + + " AND lock.unlockCompletionTimestamp IS NULL", RegistryLock.class) .setParameter("registrarId", registrarId) .getResultList()); } /** - * Returns the most recent lock object for a given domain specified by repo ID, or empty if this - * domain hasn't been locked before. + * Returns the most recent lock object for a given domain specified by repo ID. + * + *

Returns empty if this domain hasn't been locked before. */ public static Optional getMostRecentByRepoId(String repoId) { jpaTm().assertInTransaction(); @@ -78,9 +73,10 @@ public final class RegistryLockDao { } /** - * Returns the most recent verified lock object for a given domain specified by repo ID, or empty - * if no lock has ever been finalized for this domain. This is different from {@link - * #getMostRecentByRepoId(String)} in that it only returns verified locks. + * Returns the most recent verified lock object for a given domain specified by repo ID. + * + *

Returns empty if no lock has ever been finalized for this domain. This is different from + * {@link #getMostRecentByRepoId(String)} in that it only returns verified locks. */ public static Optional getMostRecentVerifiedLockByRepoId(String repoId) { jpaTm().assertInTransaction(); diff --git a/core/src/main/java/google/registry/ui/server/registrar/RegistryLockGetAction.java b/core/src/main/java/google/registry/ui/server/registrar/RegistryLockGetAction.java index 644a7315b..656e7b591 100644 --- a/core/src/main/java/google/registry/ui/server/registrar/RegistryLockGetAction.java +++ b/core/src/main/java/google/registry/ui/server/registrar/RegistryLockGetAction.java @@ -68,6 +68,8 @@ public final class RegistryLockGetAction implements JsonGetAction { private static final String FULLY_QUALIFIED_DOMAIN_NAME_PARAM = "fullyQualifiedDomainName"; private static final String LOCKED_TIME_PARAM = "lockedTime"; private static final String LOCKED_BY_PARAM = "lockedBy"; + private static final String IS_LOCK_PENDING_PARAM = "isLockPending"; + private static final String IS_UNLOCK_PENDING_PARAM = "isUnlockPending"; private static final String USER_CAN_UNLOCK_PARAM = "userCanUnlock"; private static final FluentLogger logger = FluentLogger.forEnclosingClass(); @@ -155,20 +157,25 @@ public final class RegistryLockGetAction implements JsonGetAction { return jpaTm() .transact( () -> - RegistryLockDao.getLockedDomainsByRegistrarId(clientId).stream() + RegistryLockDao.getLocksByRegistrarId(clientId).stream() + .filter(lock -> !lock.isLockRequestExpired(jpaTm().getTransactionTime())) + .filter(lock -> !lock.isUnlockRequestExpired(jpaTm().getTransactionTime())) .map(lock -> lockToMap(lock, isAdmin)) .collect(toImmutableList())); } private ImmutableMap lockToMap(RegistryLock lock, boolean isAdmin) { - return ImmutableMap.of( - FULLY_QUALIFIED_DOMAIN_NAME_PARAM, - lock.getDomainName(), - LOCKED_TIME_PARAM, - lock.getLockCompletionTimestamp().map(DateTime::toString).orElse(""), - LOCKED_BY_PARAM, - lock.isSuperuser() ? "admin" : lock.getRegistrarPocId(), - USER_CAN_UNLOCK_PARAM, - isAdmin || !lock.isSuperuser()); + return new ImmutableMap.Builder() + .put(FULLY_QUALIFIED_DOMAIN_NAME_PARAM, lock.getDomainName()) + .put( + LOCKED_TIME_PARAM, lock.getLockCompletionTimestamp().map(DateTime::toString).orElse("")) + .put(LOCKED_BY_PARAM, lock.isSuperuser() ? "admin" : lock.getRegistrarPocId()) + .put(IS_LOCK_PENDING_PARAM, !lock.getLockCompletionTimestamp().isPresent()) + .put( + IS_UNLOCK_PENDING_PARAM, + lock.getUnlockRequestTimestamp().isPresent() + && !lock.getUnlockCompletionTimestamp().isPresent()) + .put(USER_CAN_UNLOCK_PARAM, isAdmin || !lock.isSuperuser()) + .build(); } } diff --git a/core/src/main/javascript/google/registry/ui/externs/json.js b/core/src/main/javascript/google/registry/ui/externs/json.js index d92f23231..8feeabaa0 100644 --- a/core/src/main/javascript/google/registry/ui/externs/json.js +++ b/core/src/main/javascript/google/registry/ui/externs/json.js @@ -37,7 +37,9 @@ registry.json.locks = {}; * fullyQualifiedDomainName: string, * lockedTime: string, * lockedBy: string, - * userCanUnlock: boolean + * userCanUnlock: boolean, + * isLockPending: boolean, + * isUnlockPending: boolean * }} */ registry.json.locks.ExistingLock; diff --git a/core/src/main/resources/google/registry/ui/soy/registrar/RegistryLock.soy b/core/src/main/resources/google/registry/ui/soy/registrar/RegistryLock.soy index 467c702e7..e6aa57f56 100644 --- a/core/src/main/resources/google/registry/ui/soy/registrar/RegistryLock.soy +++ b/core/src/main/resources/google/registry/ui/soy/registrar/RegistryLock.soy @@ -23,7 +23,8 @@ {template .locksContent} {@param email: string} - {@param locks: list<[fullyQualifiedDomainName: string, lockedTime: string, lockedBy: string, userCanUnlock: bool]>} + {@param locks: list<[fullyQualifiedDomainName: string, lockedTime: string, lockedBy: string, + userCanUnlock: bool, isLockPending: bool, isUnlockPending: bool]>} {@param lockEnabledForContact: bool} {call .newLock} @@ -63,7 +64,8 @@ /** Table that displays existing locks for this registrar. */ {template .existingLocksTable} - {@param locks: list<[fullyQualifiedDomainName: string, lockedTime: string, lockedBy: string, userCanUnlock: bool]>} + {@param locks: list<[fullyQualifiedDomainName: string, lockedTime: string, lockedBy: string, + userCanUnlock: bool, isLockPending: bool, isUnlockPending: bool]>} {@param lockEnabledForContact: bool}

Existing locks


@@ -76,19 +78,24 @@ {for $lock in $locks} - {$lock.fullyQualifiedDomainName} + {$lock.fullyQualifiedDomainName} + {if $lock.isLockPending} (pending) + {elseif $lock.isUnlockPending} (unlock pending) + {/if} {$lock.lockedTime} {$lock.lockedBy} - + {if not $lock.isLockPending and not $lock.isUnlockPending} + + {/if} {/for} diff --git a/core/src/test/java/google/registry/model/registry/RegistryLockDaoTest.java b/core/src/test/java/google/registry/model/registry/RegistryLockDaoTest.java index 34d1e5ec4..38f77ee31 100644 --- a/core/src/test/java/google/registry/model/registry/RegistryLockDaoTest.java +++ b/core/src/test/java/google/registry/model/registry/RegistryLockDaoTest.java @@ -127,8 +127,7 @@ public final class RegistryLockDaoTest { @Test public void testLoad_lockedDomains_byRegistrarId() { - RegistryLock lock = - createLock().asBuilder().setLockCompletionTimestamp(fakeClock.nowUtc()).build(); + RegistryLock lock = createLock(); RegistryLock secondLock = createLock() .asBuilder() diff --git a/core/src/test/java/google/registry/testing/SqlHelper.java b/core/src/test/java/google/registry/testing/SqlHelper.java index 5b69265a9..6fbef9be8 100644 --- a/core/src/test/java/google/registry/testing/SqlHelper.java +++ b/core/src/test/java/google/registry/testing/SqlHelper.java @@ -41,7 +41,7 @@ public class SqlHelper { } public static ImmutableList getRegistryLocksByRegistrarId(String registrarId) { - return jpaTm().transact(() -> RegistryLockDao.getLockedDomainsByRegistrarId(registrarId)); + return jpaTm().transact(() -> RegistryLockDao.getLocksByRegistrarId(registrarId)); } private SqlHelper() {} diff --git a/core/src/test/java/google/registry/ui/server/registrar/RegistryLockGetActionTest.java b/core/src/test/java/google/registry/ui/server/registrar/RegistryLockGetActionTest.java index 2523ea25c..3c522c386 100644 --- a/core/src/test/java/google/registry/ui/server/registrar/RegistryLockGetActionTest.java +++ b/core/src/test/java/google/registry/ui/server/registrar/RegistryLockGetActionTest.java @@ -45,6 +45,7 @@ import google.registry.testing.FakeResponse; import java.util.Map; import java.util.Optional; import org.joda.time.DateTime; +import org.joda.time.Duration; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -92,6 +93,28 @@ public final class RegistryLockGetActionTest { @Test public void testSuccess_retrievesLocks() { + RegistryLock expiredLock = + new RegistryLock.Builder() + .setRepoId("repoId") + .setDomainName("expired.test") + .setRegistrarId("TheRegistrar") + .setVerificationCode("123456789ABCDEFGHJKLMNPQRSTUVWXY") + .setRegistrarPocId("johndoe@theregistrar.com") + .build(); + saveRegistryLock(expiredLock); + RegistryLock expiredUnlock = + new RegistryLock.Builder() + .setRepoId("repoId") + .setDomainName("expiredunlock.test") + .setRegistrarId("TheRegistrar") + .setVerificationCode("123456789ABCDEFGHJKLMNPQRSTUVWXY") + .setRegistrarPocId("johndoe@theregistrar.com") + .setLockCompletionTimestamp(fakeClock.nowUtc()) + .setUnlockRequestTimestamp(fakeClock.nowUtc()) + .build(); + saveRegistryLock(expiredUnlock); + fakeClock.advanceBy(Duration.standardDays(1)); + RegistryLock regularLock = new RegistryLock.Builder() .setRepoId("repoId") @@ -114,12 +137,23 @@ public final class RegistryLockGetActionTest { RegistryLock incompleteLock = new RegistryLock.Builder() .setRepoId("repoId") - .setDomainName("incomplete.test") + .setDomainName("pending.test") .setRegistrarId("TheRegistrar") .setVerificationCode("111111111ABCDEFGHJKLMNPQRSTUVWXY") .setRegistrarPocId("johndoe@theregistrar.com") .build(); + RegistryLock incompleteUnlock = + new RegistryLock.Builder() + .setRepoId("repoId") + .setDomainName("incompleteunlock.test") + .setRegistrarId("TheRegistrar") + .setVerificationCode("123456789ABCDEFGHJKLMNPQRSTUVWXY") + .setRegistrarPocId("johndoe@theregistrar.com") + .setLockCompletionTimestamp(fakeClock.nowUtc()) + .setUnlockRequestTimestamp(fakeClock.nowUtc()) + .build(); + RegistryLock unlockedLock = new RegistryLock.Builder() .setRepoId("repoId") @@ -135,6 +169,7 @@ public final class RegistryLockGetActionTest { saveRegistryLock(regularLock); saveRegistryLock(adminLock); saveRegistryLock(incompleteLock); + saveRegistryLock(incompleteUnlock); saveRegistryLock(unlockedLock); action.run(); @@ -154,16 +189,38 @@ public final class RegistryLockGetActionTest { "TheRegistrar", "locks", ImmutableList.of( - ImmutableMap.of( - "fullyQualifiedDomainName", "example.test", - "lockedTime", "2000-06-08T22:00:00.000Z", - "lockedBy", "johndoe@theregistrar.com", - "userCanUnlock", true), - ImmutableMap.of( - "fullyQualifiedDomainName", "adminexample.test", - "lockedTime", "2000-06-08T22:00:00.001Z", - "lockedBy", "admin", - "userCanUnlock", false))))); + new ImmutableMap.Builder<>() + .put("fullyQualifiedDomainName", "example.test") + .put("lockedTime", "2000-06-09T22:00:00.000Z") + .put("lockedBy", "johndoe@theregistrar.com") + .put("userCanUnlock", true) + .put("isLockPending", false) + .put("isUnlockPending", false) + .build(), + new ImmutableMap.Builder<>() + .put("fullyQualifiedDomainName", "adminexample.test") + .put("lockedTime", "2000-06-09T22:00:00.001Z") + .put("lockedBy", "admin") + .put("userCanUnlock", false) + .put("isLockPending", false) + .put("isUnlockPending", false) + .build(), + new ImmutableMap.Builder<>() + .put("fullyQualifiedDomainName", "pending.test") + .put("lockedTime", "") + .put("lockedBy", "johndoe@theregistrar.com") + .put("userCanUnlock", true) + .put("isLockPending", true) + .put("isUnlockPending", false) + .build(), + new ImmutableMap.Builder<>() + .put("fullyQualifiedDomainName", "incompleteunlock.test") + .put("lockedTime", "2000-06-09T22:00:00.001Z") + .put("lockedBy", "johndoe@theregistrar.com") + .put("userCanUnlock", true) + .put("isLockPending", false) + .put("isUnlockPending", true) + .build())))); } @Test diff --git a/core/src/test/java/google/registry/webdriver/RegistrarConsoleScreenshotTest.java b/core/src/test/java/google/registry/webdriver/RegistrarConsoleScreenshotTest.java index 1a3f1ea5f..25a5bcba4 100644 --- a/core/src/test/java/google/registry/webdriver/RegistrarConsoleScreenshotTest.java +++ b/core/src/test/java/google/registry/webdriver/RegistrarConsoleScreenshotTest.java @@ -24,6 +24,7 @@ import static google.registry.testing.DatastoreHelper.newDomainBase; import static google.registry.testing.DatastoreHelper.persistActiveDomain; import static google.registry.testing.DatastoreHelper.persistResource; import static google.registry.testing.SqlHelper.saveRegistryLock; +import static google.registry.tools.LockOrUnlockDomainCommand.REGISTRY_LOCK_STATUSES; import static google.registry.util.DateTimeUtils.START_OF_TIME; import com.google.common.collect.ImmutableMap; @@ -453,6 +454,35 @@ public class RegistrarConsoleScreenshotTest extends WebDriverTestCase { saveRegistryLock(createRegistryLock(domain).asBuilder().isSuperuser(true).build()); DomainBase otherDomain = persistActiveDomain("otherexample.tld"); saveRegistryLock(createRegistryLock(otherDomain)); + // include one pending-lock domain + DomainBase pendingDomain = persistActiveDomain("pending.tld"); + saveRegistryLock( + new RegistryLock.Builder() + .setVerificationCode(UUID.randomUUID().toString()) + .isSuperuser(false) + .setRegistrarId("TheRegistrar") + .setRegistrarPocId("Marla.Singer@crr.com") + .setDomainName("pending.tld") + .setRepoId(pendingDomain.getRepoId()) + .build()); + // and one pending-unlock domain + DomainBase pendingUnlockDomain = + persistResource( + newDomainBase("pendingunlock.tld") + .asBuilder() + .setStatusValues(REGISTRY_LOCK_STATUSES) + .build()); + saveRegistryLock( + new RegistryLock.Builder() + .setVerificationCode(UUID.randomUUID().toString()) + .isSuperuser(false) + .setRegistrarId("TheRegistrar") + .setRegistrarPocId("Marla.Singer@crr.com") + .setDomainName(pendingUnlockDomain.getFullyQualifiedDomainName()) + .setRepoId(pendingUnlockDomain.getRepoId()) + .setLockCompletionTimestamp(START_OF_TIME) + .setUnlockRequestTimestamp(START_OF_TIME) + .build()); return null; }); driver.get(server.getUrl("/registrar#registry-lock")); @@ -523,7 +553,7 @@ public class RegistrarConsoleScreenshotTest extends WebDriverTestCase { .setRegistrarId("TheRegistrar") .setRegistrarPocId("Marla.Singer@crr.com") .setLockCompletionTimestamp(START_OF_TIME) - .setDomainName("example.tld") + .setDomainName(domainBase.getFullyQualifiedDomainName()) .setRepoId(domainBase.getRepoId()) .build(); } diff --git a/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarConsoleScreenshotTest_registryLock_nonEmpty_admin_page.png b/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarConsoleScreenshotTest_registryLock_nonEmpty_admin_page.png index 26864434b5daef90ba4b74cf5c59d4bc200e45d1..2464846878f46df6f626bd1a4c5f87cead7519dc 100644 GIT binary patch delta 32196 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%0D_4l{uC@EqZ$F=r@i2#piyUu7uXROBMx}sr zv?**R}G0cFFHnM1E%Sf!qV{|63~fZeRZUh=tqy3j-F7zu%j&pKt;p zKezqEApd^|>A#A*Z()c0h41ped6me|Og@kaApZWYQ2&>Y2aW%qc>*Cn0rUK0z#@MS z%=*VAzgrRcnaKxo5At)%Uo`%|rGlT53DEfenI{nP&wvKQsA2?t%CJ=P&jLTr1P>ujFfm+o!Dp+$5x8@q`A1^DEe^Eo;iOyOUC5N{{VL;>s9~& delta 29477 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 M+G}o*r;m^L8_V!#2><{9