mirror of
https://github.com/google/nomulus.git
synced 2025-07-02 17:23:32 +02:00
Add mapper to import domains from RDE deposits
With some additional cleanup by Ben McIlwain. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=146695665
This commit is contained in:
parent
d6e6e8a49c
commit
a904f2c6ee
37 changed files with 2916 additions and 268 deletions
|
@ -17,9 +17,11 @@ package google.registry.rde.imports;
|
|||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
||||
import static google.registry.testing.DatastoreHelper.createTld;
|
||||
import static google.registry.testing.DatastoreHelper.persistActiveContact;
|
||||
import static google.registry.testing.DatastoreHelper.persistNewRegistrar;
|
||||
import static google.registry.testing.DatastoreHelper.persistResource;
|
||||
import static org.joda.time.DateTimeZone.UTC;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
@ -31,10 +33,15 @@ import com.google.common.collect.ImmutableList;
|
|||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.io.ByteSource;
|
||||
import com.googlecode.objectify.Key;
|
||||
import com.googlecode.objectify.VoidWork;
|
||||
import com.googlecode.objectify.Work;
|
||||
import google.registry.gcs.GcsUtils;
|
||||
import google.registry.model.EppResource;
|
||||
import google.registry.model.contact.ContactResource;
|
||||
import google.registry.model.domain.DesignatedContact;
|
||||
import google.registry.model.domain.DesignatedContact.Type;
|
||||
import google.registry.model.domain.DomainResource;
|
||||
import google.registry.model.eppcommon.StatusValue;
|
||||
import google.registry.model.host.HostResource;
|
||||
import google.registry.model.index.EppResourceIndex;
|
||||
import google.registry.model.index.EppResourceIndexBucket;
|
||||
|
@ -103,8 +110,12 @@ public class RdeImportUtilsTest extends ShardableTestCase {
|
|||
/** Verifies import of a contact that has not been previously imported */
|
||||
@Test
|
||||
public void testImportNewContact() {
|
||||
ContactResource newContact = buildNewContact();
|
||||
assertThat(rdeImportUtils.importContact(newContact)).isTrue();
|
||||
final ContactResource newContact = buildNewContact();
|
||||
ofy().transact(new VoidWork() {
|
||||
@Override
|
||||
public void vrun() {
|
||||
rdeImportUtils.importContact(newContact);
|
||||
}});
|
||||
assertEppResourceIndexEntityFor(newContact);
|
||||
assertForeignKeyIndexFor(newContact);
|
||||
|
||||
|
@ -121,36 +132,46 @@ public class RdeImportUtilsTest extends ShardableTestCase {
|
|||
public void testImportExistingContact() {
|
||||
ContactResource newContact = buildNewContact();
|
||||
persistResource(newContact);
|
||||
ContactResource updatedContact =
|
||||
final ContactResource updatedContact =
|
||||
newContact
|
||||
.asBuilder()
|
||||
.setLastEppUpdateTime(newContact.getLastEppUpdateTime().plusSeconds(1))
|
||||
.build();
|
||||
assertThat(rdeImportUtils.importContact(updatedContact)).isFalse();
|
||||
|
||||
// verify the updated contact was saved
|
||||
ContactResource saved = getContact("TEST-123");
|
||||
assertThat(saved).isNotNull();
|
||||
assertThat(saved.getContactId()).isEqualTo(newContact.getContactId());
|
||||
assertThat(saved.getEmailAddress()).isEqualTo(newContact.getEmailAddress());
|
||||
assertThat(saved.getLastEppUpdateTime()).isEqualTo(newContact.getLastEppUpdateTime());
|
||||
try {
|
||||
ofy().transact(new VoidWork() {
|
||||
@Override
|
||||
public void vrun() {
|
||||
rdeImportUtils.importContact(updatedContact);
|
||||
}});
|
||||
fail("Expected ResourceExistsException");
|
||||
} catch (ResourceExistsException expected) {
|
||||
// verify the updated contact was not saved
|
||||
ContactResource saved = getContact("TEST-123");
|
||||
assertThat(saved).isNotNull();
|
||||
assertThat(saved.getContactId()).isEqualTo(newContact.getContactId());
|
||||
assertThat(saved.getEmailAddress()).isEqualTo(newContact.getEmailAddress());
|
||||
assertThat(saved.getLastEppUpdateTime()).isEqualTo(newContact.getLastEppUpdateTime());
|
||||
}
|
||||
}
|
||||
|
||||
/** Verifies import of a host that has not been previously imported */
|
||||
@Test
|
||||
public void testImportNewHost() throws UnknownHostException {
|
||||
HostResource newHost = buildNewHost();
|
||||
assertThat(rdeImportUtils.importHost(newHost)).isTrue();
|
||||
final HostResource newHost = buildNewHost();
|
||||
ofy().transact(new VoidWork() {
|
||||
@Override
|
||||
public void vrun() {
|
||||
rdeImportUtils.importHost(newHost);
|
||||
}});
|
||||
|
||||
assertEppResourceIndexEntityFor(newHost);
|
||||
assertForeignKeyIndexFor(newHost);
|
||||
|
||||
// verify the new contact was saved
|
||||
HostResource saved = getHost("FOO_ROID");
|
||||
assertThat(saved).isNotNull();
|
||||
assertThat(saved.getFullyQualifiedHostName()).isEqualTo(
|
||||
newHost.getFullyQualifiedHostName());
|
||||
assertThat(saved.getInetAddresses()).isEqualTo(
|
||||
newHost.getInetAddresses());
|
||||
assertThat(saved.getFullyQualifiedHostName()).isEqualTo(newHost.getFullyQualifiedHostName());
|
||||
assertThat(saved.getInetAddresses()).isEqualTo(newHost.getInetAddresses());
|
||||
assertThat(saved.getLastEppUpdateTime()).isEqualTo(newHost.getLastEppUpdateTime());
|
||||
}
|
||||
|
||||
|
@ -159,21 +180,79 @@ public class RdeImportUtilsTest extends ShardableTestCase {
|
|||
public void testImportExistingHost() throws UnknownHostException {
|
||||
HostResource newHost = buildNewHost();
|
||||
persistResource(newHost);
|
||||
HostResource updatedHost =
|
||||
final HostResource updatedHost =
|
||||
newHost
|
||||
.asBuilder()
|
||||
.setLastEppUpdateTime(newHost.getLastEppUpdateTime().plusSeconds(1))
|
||||
.build();
|
||||
assertThat(rdeImportUtils.importHost(updatedHost)).isFalse();
|
||||
try {
|
||||
ofy().transact(new VoidWork() {
|
||||
@Override
|
||||
public void vrun() {
|
||||
rdeImportUtils.importHost(updatedHost);
|
||||
}});
|
||||
fail("Expected ResourceExistsException");
|
||||
} catch (ResourceExistsException expected) {
|
||||
// verify the contact was not updated
|
||||
HostResource saved = getHost("FOO_ROID");
|
||||
assertThat(saved).isNotNull();
|
||||
assertThat(saved.getFullyQualifiedHostName()).isEqualTo(newHost.getFullyQualifiedHostName());
|
||||
assertThat(saved.getInetAddresses()).isEqualTo(newHost.getInetAddresses());
|
||||
assertThat(saved.getLastEppUpdateTime()).isEqualTo(newHost.getLastEppUpdateTime());
|
||||
}
|
||||
}
|
||||
|
||||
// verify the new contact was saved
|
||||
HostResource saved = getHost("FOO_ROID");
|
||||
assertThat(saved).isNotNull();
|
||||
assertThat(saved.getFullyQualifiedHostName()).isEqualTo(
|
||||
newHost.getFullyQualifiedHostName());
|
||||
assertThat(saved.getInetAddresses()).isEqualTo(
|
||||
newHost.getInetAddresses());
|
||||
assertThat(saved.getLastEppUpdateTime()).isEqualTo(newHost.getLastEppUpdateTime());
|
||||
@Test
|
||||
public void testImportNewDomain() throws Exception {
|
||||
final DomainResource newDomain = buildNewDomain();
|
||||
ofy().transact(new VoidWork() {
|
||||
@Override
|
||||
public void vrun() {
|
||||
rdeImportUtils.importDomain(newDomain);
|
||||
}
|
||||
});
|
||||
|
||||
DomainResource saved = getDomain("Dexample1-TEST");
|
||||
assertThat(saved.getFullyQualifiedDomainName())
|
||||
.isEqualTo(newDomain.getFullyQualifiedDomainName());
|
||||
assertThat(saved.getStatusValues()).isEqualTo(newDomain.getStatusValues());
|
||||
assertThat(saved.getRegistrant()).isEqualTo(newDomain.getRegistrant());
|
||||
assertThat(saved.getContacts()).isEqualTo(newDomain.getContacts());
|
||||
assertThat(saved.getCurrentSponsorClientId()).isEqualTo(newDomain.getCurrentSponsorClientId());
|
||||
assertThat(saved.getCreationClientId()).isEqualTo(newDomain.getCreationClientId());
|
||||
assertThat(saved.getCreationTime()).isEqualTo(newDomain.getCreationTime());
|
||||
assertThat(saved.getRegistrationExpirationTime())
|
||||
.isEqualTo(newDomain.getRegistrationExpirationTime());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testImportExistingDomain() throws Exception {
|
||||
DomainResource newDomain = buildNewDomain();
|
||||
persistResource(newDomain);
|
||||
final DomainResource updatedDomain = newDomain.asBuilder()
|
||||
.setFullyQualifiedDomainName("1" + newDomain.getFullyQualifiedDomainName())
|
||||
.build();
|
||||
try {
|
||||
ofy().transact(new VoidWork() {
|
||||
@Override
|
||||
public void vrun() {
|
||||
rdeImportUtils.importDomain(updatedDomain);
|
||||
}});
|
||||
fail("Expected ResourceExistsException");
|
||||
} catch (ResourceExistsException expected) {
|
||||
DomainResource saved = getDomain("Dexample1-TEST");
|
||||
assertThat(saved.getFullyQualifiedDomainName())
|
||||
.isEqualTo(newDomain.getFullyQualifiedDomainName());
|
||||
assertThat(saved.getStatusValues()).isEqualTo(newDomain.getStatusValues());
|
||||
assertThat(saved.getRegistrant()).isEqualTo(newDomain.getRegistrant());
|
||||
assertThat(saved.getContacts()).isEqualTo(newDomain.getContacts());
|
||||
assertThat(saved.getCurrentSponsorClientId())
|
||||
.isEqualTo(newDomain.getCurrentSponsorClientId());
|
||||
assertThat(saved.getCreationClientId()).isEqualTo(newDomain.getCreationClientId());
|
||||
assertThat(saved.getCreationTime()).isEqualTo(newDomain.getCreationTime());
|
||||
assertThat(saved.getRegistrationExpirationTime())
|
||||
.isEqualTo(newDomain.getRegistrationExpirationTime());
|
||||
}
|
||||
}
|
||||
|
||||
private static ContactResource buildNewContact() {
|
||||
|
@ -188,16 +267,34 @@ public class RdeImportUtilsTest extends ShardableTestCase {
|
|||
private static HostResource buildNewHost() throws UnknownHostException {
|
||||
return new HostResource.Builder()
|
||||
.setFullyQualifiedHostName("foo.bar.example")
|
||||
.setInetAddresses(ImmutableSet.of(
|
||||
InetAddress.getByName("192.0.2.2"),
|
||||
InetAddress.getByName("192.0.2.29"),
|
||||
InetAddress.getByName("1080:0:0:0:8:800:200C:417A")
|
||||
))
|
||||
.setInetAddresses(
|
||||
ImmutableSet.of(
|
||||
InetAddress.getByName("192.0.2.2"),
|
||||
InetAddress.getByName("192.0.2.29"),
|
||||
InetAddress.getByName("1080:0:0:0:8:800:200C:417A")))
|
||||
.setLastEppUpdateTime(DateTime.parse("2010-10-10T00:00:00.000Z"))
|
||||
.setRepoId("FOO_ROID")
|
||||
.build();
|
||||
}
|
||||
|
||||
private DomainResource buildNewDomain() {
|
||||
ContactResource registrant = persistActiveContact("jd1234");
|
||||
ContactResource admin = persistActiveContact("sh8013");
|
||||
return new DomainResource.Builder()
|
||||
.setFullyQualifiedDomainName("example1.example")
|
||||
.setRepoId("Dexample1-TEST")
|
||||
.setStatusValues(ImmutableSet.of(StatusValue.OK))
|
||||
.setRegistrant(Key.create(registrant))
|
||||
.setContacts(ImmutableSet.of(
|
||||
DesignatedContact.create(Type.ADMIN, Key.create(admin)),
|
||||
DesignatedContact.create(Type.TECH, Key.create(admin))))
|
||||
.setCurrentSponsorClientId("RegistrarX")
|
||||
.setCreationClientId("RegistrarX")
|
||||
.setCreationTime(DateTime.parse("1999-04-03T22:00:00.0Z"))
|
||||
.setRegistrationExpirationTime(DateTime.parse("2015-04-03T22:00:00.0Z"))
|
||||
.build();
|
||||
}
|
||||
|
||||
/** Verifies that no errors are thrown when a valid escrow file is validated */
|
||||
@Test
|
||||
@SuppressWarnings("CheckReturnValue")
|
||||
|
@ -248,7 +345,7 @@ public class RdeImportUtilsTest extends ShardableTestCase {
|
|||
}});
|
||||
}
|
||||
|
||||
/** Gets the contact with the specified ROID */
|
||||
/** Gets the host with the specified ROID */
|
||||
private static HostResource getHost(String repoId) {
|
||||
final Key<HostResource> key = Key.create(HostResource.class, repoId);
|
||||
return ofy().transact(new Work<HostResource>() {
|
||||
|
@ -259,6 +356,16 @@ public class RdeImportUtilsTest extends ShardableTestCase {
|
|||
});
|
||||
}
|
||||
|
||||
/** Gets the domain with the specified ROID */
|
||||
private static DomainResource getDomain(String repoId) {
|
||||
final Key<DomainResource> key = Key.create(DomainResource.class, repoId);
|
||||
return ofy().transact(new Work<DomainResource>() {
|
||||
@Override
|
||||
public DomainResource run() {
|
||||
return ofy().load().key(key).now();
|
||||
}});
|
||||
}
|
||||
|
||||
/** Confirms that a ForeignKeyIndex exists in the datastore for a given resource. */
|
||||
private <T extends EppResource> void assertForeignKeyIndexFor(final T resource) {
|
||||
assertThat(ForeignKeyIndex.load(resource.getClass(), resource.getForeignKey(), clock.nowUtc()))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue