Generate authInfo for imported domains

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146956307
This commit is contained in:
Wolfgang Meyers 2017-02-08 14:19:31 -08:00 committed by Ben McIlwain
parent b9222759dc
commit 6cdb3d81d3
4 changed files with 37 additions and 3 deletions

View file

@ -34,10 +34,12 @@ import google.registry.model.billing.BillingEvent.Flag;
import google.registry.model.billing.BillingEvent.Reason;
import google.registry.model.contact.ContactResource;
import google.registry.model.domain.DesignatedContact;
import google.registry.model.domain.DomainAuthInfo;
import google.registry.model.domain.DomainResource;
import google.registry.model.domain.GracePeriod;
import google.registry.model.domain.rgp.GracePeriodStatus;
import google.registry.model.domain.secdns.DelegationSignerData;
import google.registry.model.eppcommon.AuthInfo.PasswordAuth;
import google.registry.model.eppcommon.StatusValue;
import google.registry.model.host.HostResource;
import google.registry.model.index.ForeignKeyIndex;
@ -47,6 +49,9 @@ import google.registry.model.registry.Registry;
import google.registry.model.reporting.HistoryEntry;
import google.registry.model.transfer.TransferData;
import google.registry.model.transfer.TransferStatus;
import google.registry.util.NonFinalForTesting;
import google.registry.util.RandomStringGenerator;
import google.registry.util.StringGenerator;
import google.registry.util.XmlToEnumMapper;
import google.registry.xjc.domain.XjcDomainContactType;
import google.registry.xjc.domain.XjcDomainNsType;
@ -56,11 +61,27 @@ import google.registry.xjc.rdedomain.XjcRdeDomainElement;
import google.registry.xjc.rdedomain.XjcRdeDomainTransferDataType;
import google.registry.xjc.rgp.XjcRgpStatusType;
import google.registry.xjc.secdns.XjcSecdnsDsDataType;
import java.security.NoSuchAlgorithmException;
import java.security.ProviderException;
import java.security.SecureRandom;
import java.util.Random;
import org.joda.time.DateTime;
/** Utility class that converts an {@link XjcRdeDomainElement} into a {@link DomainResource}. */
final class XjcToDomainResourceConverter extends XjcToEppResourceConverter {
@NonFinalForTesting
static StringGenerator stringGenerator = new RandomStringGenerator(
StringGenerator.Alphabets.BASE_64, getRandom());
static Random getRandom() {
try {
return SecureRandom.getInstance("NativePRNG");
} catch (NoSuchAlgorithmException e) {
throw new ProviderException(e);
}
}
private static final XmlToEnumMapper<TransferStatus> TRANSFER_STATUS_MAPPER =
XmlToEnumMapper.create(TransferStatus.values());
@ -194,7 +215,11 @@ final class XjcToDomainResourceConverter extends XjcToEppResourceConverter {
? ImmutableSet.<DelegationSignerData>of()
: ImmutableSet.copyOf(
transform(domain.getSecDNS().getDsDatas(), SECDNS_CONVERTER)))
.setTransferData(convertDomainTransferData(domain.getTrnData()));
.setTransferData(convertDomainTransferData(domain.getTrnData()))
// authInfo pw must be a token between 6 and 16 characters in length
// generate a token of 16 characters as the default authInfo pw
.setAuthInfo(DomainAuthInfo
.create(PasswordAuth.create(stringGenerator.createString(16), domain.getRoid())));
checkArgumentNotNull(
domain.getRegistrant(), "Registrant is missing for domain '%s'", domain.getName());
builder = builder.setRegistrant(convertRegistrant(domain.getRegistrant()));

View file

@ -26,7 +26,7 @@ public class RandomStringGenerator extends StringGenerator {
private final Random random;
@Inject
RandomStringGenerator(@Named("alphabet") String alphabet, Random random) {
public RandomStringGenerator(@Named("alphabet") String alphabet, Random random) {
super(alphabet);
this.random = random;
}

View file

@ -22,7 +22,6 @@ java_library(
"//java/google/registry/xjc",
"//javatests/google/registry/testing",
"//javatests/google/registry/testing/mapreduce",
"//javatests/google/registry/xml",
"//third_party/java/objectify:objectify-v4_1",
"@com_google_appengine_api_1_0_sdk//:testonly",
"@com_google_appengine_tools_appengine_gcs_client",

View file

@ -45,7 +45,10 @@ import google.registry.model.host.HostResource;
import google.registry.model.poll.PollMessage;
import google.registry.model.reporting.HistoryEntry;
import google.registry.testing.AppEngineRule;
import google.registry.testing.DeterministicStringGenerator;
import google.registry.testing.ExceptionRule;
import google.registry.testing.InjectRule;
import google.registry.util.StringGenerator;
import google.registry.xjc.rdedomain.XjcRdeDomain;
import google.registry.xjc.rdedomain.XjcRdeDomainElement;
import java.io.ByteArrayInputStream;
@ -86,12 +89,17 @@ public class XjcToDomainResourceConverterTest {
@Rule public final ExceptionRule thrown = new ExceptionRule();
@Rule public final InjectRule inject = new InjectRule();
private Unmarshaller unmarshaller;
private DeterministicStringGenerator stringGenerator;
@Before
public void before() throws Exception {
createTld("example");
unmarshaller = JAXBContext.newInstance(JAXB_CONTEXT_PACKAGES).createUnmarshaller();
stringGenerator = new DeterministicStringGenerator(StringGenerator.Alphabets.BASE_64);
inject.setStaticField(XjcToDomainResourceConverter.class, "stringGenerator", stringGenerator);
}
@Test
@ -120,6 +128,8 @@ public class XjcToDomainResourceConverterTest {
assertThat(domain.getLastEppUpdateTime()).isNull();
assertThat(domain.getAutorenewBillingEvent()).isNotNull();
assertThat(domain.getAutorenewPollMessage()).isNotNull();
assertThat(domain.getAuthInfo()).isNotNull();
assertThat(domain.getAuthInfo().getPw().getValue()).isEqualTo("0123456789abcdef");
}
@Test