mirror of
https://github.com/google/nomulus
synced 2026-08-27 19:37:07 +00:00
Include Cursor in the initial SQL population (#1323)
The test for this also required a bit of a fix in the Cursor scope initialization. If you persist a Key<?> in some object in Datastore, it persists just the standard data you'd expect, basically the parent, the kind, and the object's ID/name. Then, when you load it back in from Datastore it uses the app ID of whatever environment you're loading in (the Key contains this info even though it isn't included in the toString() of Key) If you persist the websafe string format of a Key (which is what we do for Cursors), it includes the app ID so when you load it, it contains the old app ID not the new one (if the app ID has changed). In the pipelines, we use the standard default environment which has a different app ID from the test environment that's set up by the DatastoreEntityExtension. As a result, we should check in Cursor to see if the key is *any* cross-tld-key, rather than the exact one that exists within this app environment.
This commit is contained in:
@@ -17,6 +17,8 @@ package google.registry.beam.initsql;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.model.ImmutableObjectSubject.assertAboutImmutableObjects;
|
||||
import static google.registry.model.ImmutableObjectSubject.immutableObjectCorrespondence;
|
||||
import static google.registry.model.common.Cursor.CursorType.BRDA;
|
||||
import static google.registry.model.common.Cursor.CursorType.RECURRING_BILLING;
|
||||
import static google.registry.model.domain.token.AllocationToken.TokenType.SINGLE_USE;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
|
||||
import static google.registry.testing.DatabaseHelper.newRegistry;
|
||||
@@ -34,6 +36,7 @@ import google.registry.flows.domain.DomainFlowUtils;
|
||||
import google.registry.model.billing.BillingEvent;
|
||||
import google.registry.model.billing.BillingEvent.Flag;
|
||||
import google.registry.model.billing.BillingEvent.Reason;
|
||||
import google.registry.model.common.Cursor;
|
||||
import google.registry.model.contact.ContactResource;
|
||||
import google.registry.model.domain.DesignatedContact;
|
||||
import google.registry.model.domain.DomainAuthInfo;
|
||||
@@ -86,6 +89,7 @@ class InitSqlPipelineTest {
|
||||
private static final ImmutableList<Class<?>> ALL_KINDS =
|
||||
ImmutableList.of(
|
||||
Registry.class,
|
||||
Cursor.class,
|
||||
Registrar.class,
|
||||
ContactResource.class,
|
||||
RegistrarContact.class,
|
||||
@@ -131,6 +135,9 @@ class InitSqlPipelineTest {
|
||||
|
||||
private transient DomainHistory historyEntry;
|
||||
|
||||
private transient Cursor globalCursor;
|
||||
private transient Cursor tldCursor;
|
||||
|
||||
@BeforeEach
|
||||
void beforeEach() throws Exception {
|
||||
try (BackupTestStore store = new BackupTestStore(fakeClock)) {
|
||||
@@ -304,6 +311,8 @@ class InitSqlPipelineTest {
|
||||
.setRecurringEventKey(recurringBillEvent.createVKey())
|
||||
.setParent(historyEntryKey)
|
||||
.build());
|
||||
globalCursor = persistResource(Cursor.createGlobal(RECURRING_BILLING, fakeClock.nowUtc()));
|
||||
tldCursor = persistResource(Cursor.create(BRDA, fakeClock.nowUtc(), Registry.get("com")));
|
||||
exportDir = store.export(exportRootDir.getAbsolutePath(), ALL_KINDS, ImmutableSet.of());
|
||||
commitLogDir = Files.createDirectory(tmpDir.resolve("commits")).toFile();
|
||||
fakeClock.advanceOneMilli();
|
||||
@@ -332,6 +341,9 @@ class InitSqlPipelineTest {
|
||||
.comparingElementsUsing(immutableObjectCorrespondence("revisions", "updateTimestamp"))
|
||||
.containsExactly(contact1, contact2);
|
||||
assertDomainEquals(jpaTm().transact(() -> jpaTm().loadByKey(domain.createVKey())), domain);
|
||||
assertThat(jpaTm().transact(() -> jpaTm().loadAllOf(Cursor.class)))
|
||||
.comparingElementsUsing(immutableObjectCorrespondence())
|
||||
.containsExactly(globalCursor, tldCursor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user