mirror of
https://github.com/google/nomulus.git
synced 2025-05-15 00:47:11 +02:00
Un-Ignore a test in DomainApplicationCreateFlowTest
A little injection-foo makes this test possible to run. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=154442134
This commit is contained in:
parent
8514f734e4
commit
927eb43cbc
6 changed files with 32 additions and 15 deletions
|
@ -56,7 +56,7 @@ import org.xml.sax.SAXException;
|
||||||
|
|
||||||
/** Helper class for verifying TMCH certificates and XML signatures. */
|
/** Helper class for verifying TMCH certificates and XML signatures. */
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
public final class TmchXmlSignature {
|
public class TmchXmlSignature {
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
final TmchCertificateAuthority tmchCertificateAuthority;
|
final TmchCertificateAuthority tmchCertificateAuthority;
|
||||||
|
|
|
@ -25,7 +25,6 @@ import static org.joda.time.DateTimeZone.UTC;
|
||||||
import static org.joda.time.Duration.standardDays;
|
import static org.joda.time.Duration.standardDays;
|
||||||
|
|
||||||
import com.googlecode.objectify.Key;
|
import com.googlecode.objectify.Key;
|
||||||
import google.registry.config.RegistryConfig.ConfigModule.TmchCaMode;
|
|
||||||
import google.registry.flows.EppTestComponent.FakesAndMocksModule;
|
import google.registry.flows.EppTestComponent.FakesAndMocksModule;
|
||||||
import google.registry.model.domain.DomainResource;
|
import google.registry.model.domain.DomainResource;
|
||||||
import google.registry.model.ofy.Ofy;
|
import google.registry.model.ofy.Ofy;
|
||||||
|
@ -74,8 +73,7 @@ public class EppCommitLogsTest extends ShardableTestCase {
|
||||||
sessionMetadata.setClientId("TheRegistrar");
|
sessionMetadata.setClientId("TheRegistrar");
|
||||||
DaggerEppTestComponent.builder()
|
DaggerEppTestComponent.builder()
|
||||||
.fakesAndMocksModule(
|
.fakesAndMocksModule(
|
||||||
FakesAndMocksModule.create(
|
FakesAndMocksModule.create(clock, EppMetric.builderForRequest("request-id-1", clock)))
|
||||||
clock, TmchCaMode.PILOT, EppMetric.builderForRequest("request-id-1", clock)))
|
|
||||||
.build()
|
.build()
|
||||||
.startRequest()
|
.startRequest()
|
||||||
.flowComponentBuilder()
|
.flowComponentBuilder()
|
||||||
|
|
|
@ -23,7 +23,6 @@ import static javax.servlet.http.HttpServletResponse.SC_OK;
|
||||||
import static org.joda.time.DateTimeZone.UTC;
|
import static org.joda.time.DateTimeZone.UTC;
|
||||||
|
|
||||||
import com.google.common.net.MediaType;
|
import com.google.common.net.MediaType;
|
||||||
import google.registry.config.RegistryConfig.ConfigModule.TmchCaMode;
|
|
||||||
import google.registry.flows.EppTestComponent.FakesAndMocksModule;
|
import google.registry.flows.EppTestComponent.FakesAndMocksModule;
|
||||||
import google.registry.model.ofy.Ofy;
|
import google.registry.model.ofy.Ofy;
|
||||||
import google.registry.monitoring.whitebox.EppMetric;
|
import google.registry.monitoring.whitebox.EppMetric;
|
||||||
|
@ -118,7 +117,7 @@ public class EppTestCase extends ShardableTestCase {
|
||||||
handler.response = response;
|
handler.response = response;
|
||||||
eppMetricBuilder = EppMetric.builderForRequest("request-id-1", clock);
|
eppMetricBuilder = EppMetric.builderForRequest("request-id-1", clock);
|
||||||
handler.eppController = DaggerEppTestComponent.builder()
|
handler.eppController = DaggerEppTestComponent.builder()
|
||||||
.fakesAndMocksModule(FakesAndMocksModule.create(clock, TmchCaMode.PILOT, eppMetricBuilder))
|
.fakesAndMocksModule(FakesAndMocksModule.create(clock, eppMetricBuilder))
|
||||||
.build()
|
.build()
|
||||||
.startRequest()
|
.startRequest()
|
||||||
.eppController();
|
.eppController();
|
||||||
|
|
|
@ -63,15 +63,23 @@ interface EppTestComponent {
|
||||||
|
|
||||||
public static FakesAndMocksModule create() {
|
public static FakesAndMocksModule create() {
|
||||||
FakeClock clock = new FakeClock();
|
FakeClock clock = new FakeClock();
|
||||||
return create(clock, TmchCaMode.PILOT, EppMetric.builderForRequest("request-id-1", clock));
|
return create(clock, EppMetric.builderForRequest("request-id-1", clock));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FakesAndMocksModule create(FakeClock clock, EppMetric.Builder metricBuilder) {
|
||||||
|
return create(
|
||||||
|
clock,
|
||||||
|
metricBuilder,
|
||||||
|
new TmchXmlSignature(new TmchCertificateAuthority(TmchCaMode.PILOT)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static FakesAndMocksModule create(
|
public static FakesAndMocksModule create(
|
||||||
FakeClock clock, TmchCaMode tmchCaMode, EppMetric.Builder eppMetricBuilder) {
|
FakeClock clock,
|
||||||
|
EppMetric.Builder eppMetricBuilder,
|
||||||
|
TmchXmlSignature tmchXmlSignature) {
|
||||||
FakesAndMocksModule instance = new FakesAndMocksModule();
|
FakesAndMocksModule instance = new FakesAndMocksModule();
|
||||||
instance.clock = clock;
|
instance.clock = clock;
|
||||||
instance.domainFlowTmchUtils =
|
instance.domainFlowTmchUtils = new DomainFlowTmchUtils(tmchXmlSignature);
|
||||||
new DomainFlowTmchUtils(new TmchXmlSignature(new TmchCertificateAuthority(tmchCaMode)));
|
|
||||||
instance.sleeper = new FakeSleeper(clock);
|
instance.sleeper = new FakeSleeper(clock);
|
||||||
instance.dnsQueue = DnsQueue.create();
|
instance.dnsQueue = DnsQueue.create();
|
||||||
instance.metricBuilder = eppMetricBuilder;
|
instance.metricBuilder = eppMetricBuilder;
|
||||||
|
|
|
@ -56,6 +56,8 @@ import google.registry.testing.FakeHttpSession;
|
||||||
import google.registry.testing.InjectRule;
|
import google.registry.testing.InjectRule;
|
||||||
import google.registry.testing.ShardableTestCase;
|
import google.registry.testing.ShardableTestCase;
|
||||||
import google.registry.testing.TestDataHelper;
|
import google.registry.testing.TestDataHelper;
|
||||||
|
import google.registry.tmch.TmchCertificateAuthority;
|
||||||
|
import google.registry.tmch.TmchXmlSignature;
|
||||||
import google.registry.util.TypeUtils.TypeInstantiator;
|
import google.registry.util.TypeUtils.TypeInstantiator;
|
||||||
import google.registry.xml.ValidationMode;
|
import google.registry.xml.ValidationMode;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -98,6 +100,7 @@ public abstract class FlowTestCase<F extends Flow> extends ShardableTestCase {
|
||||||
protected FakeClock clock = new FakeClock(DateTime.now(UTC));
|
protected FakeClock clock = new FakeClock(DateTime.now(UTC));
|
||||||
protected TransportCredentials credentials = new PasswordOnlyTransportCredentials();
|
protected TransportCredentials credentials = new PasswordOnlyTransportCredentials();
|
||||||
protected EppRequestSource eppRequestSource = EppRequestSource.UNIT_TEST;
|
protected EppRequestSource eppRequestSource = EppRequestSource.UNIT_TEST;
|
||||||
|
protected TmchXmlSignature testTmchXmlSignature = null;
|
||||||
|
|
||||||
private EppMetric.Builder eppMetricBuilder;
|
private EppMetric.Builder eppMetricBuilder;
|
||||||
|
|
||||||
|
@ -288,10 +291,12 @@ public abstract class FlowTestCase<F extends Flow> extends ShardableTestCase {
|
||||||
assertThat(FlowPicker.getFlowClass(eppLoader.getEpp()))
|
assertThat(FlowPicker.getFlowClass(eppLoader.getEpp()))
|
||||||
.isEqualTo(new TypeInstantiator<F>(getClass()){}.getExactType());
|
.isEqualTo(new TypeInstantiator<F>(getClass()){}.getExactType());
|
||||||
// Run the flow.
|
// Run the flow.
|
||||||
|
TmchXmlSignature tmchXmlSignature =
|
||||||
|
testTmchXmlSignature != null
|
||||||
|
? testTmchXmlSignature
|
||||||
|
: new TmchXmlSignature(new TmchCertificateAuthority(tmchCaMode));
|
||||||
return DaggerEppTestComponent.builder()
|
return DaggerEppTestComponent.builder()
|
||||||
.fakesAndMocksModule(
|
.fakesAndMocksModule(FakesAndMocksModule.create(clock, eppMetricBuilder, tmchXmlSignature))
|
||||||
FakesAndMocksModule.create(
|
|
||||||
clock, tmchCaMode, EppMetric.builderForRequest("request-id-1", clock)))
|
|
||||||
.build()
|
.build()
|
||||||
.startRequest()
|
.startRequest()
|
||||||
.flowComponentBuilder()
|
.flowComponentBuilder()
|
||||||
|
|
|
@ -126,6 +126,8 @@ import google.registry.model.reporting.HistoryEntry;
|
||||||
import google.registry.model.smd.SignedMarkRevocationList;
|
import google.registry.model.smd.SignedMarkRevocationList;
|
||||||
import google.registry.testing.DatastoreHelper;
|
import google.registry.testing.DatastoreHelper;
|
||||||
import google.registry.tmch.TmchCertificateAuthority;
|
import google.registry.tmch.TmchCertificateAuthority;
|
||||||
|
import google.registry.tmch.TmchXmlSignature;
|
||||||
|
import java.security.GeneralSecurityException;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -134,7 +136,6 @@ import org.joda.money.Money;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.joda.time.Interval;
|
import org.joda.time.Interval;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
/** Unit tests for {@link DomainApplicationCreateFlow}. */
|
/** Unit tests for {@link DomainApplicationCreateFlow}. */
|
||||||
|
@ -291,13 +292,19 @@ public class DomainApplicationCreateFlowTest
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore("I'm not sure how to get this to throw without creating a custom CA / certs")
|
|
||||||
public void testFailure_signedMarkCertificateCorrupt() throws Exception {
|
public void testFailure_signedMarkCertificateCorrupt() throws Exception {
|
||||||
useTmchProdCert();
|
useTmchProdCert();
|
||||||
createTld("tld", TldState.SUNRUSH);
|
createTld("tld", TldState.SUNRUSH);
|
||||||
setEppInput("domain_create_sunrush_encoded_signed_mark_certificate_corrupt.xml");
|
setEppInput("domain_create_sunrush_encoded_signed_mark_certificate_corrupt.xml");
|
||||||
persistContactsAndHosts();
|
persistContactsAndHosts();
|
||||||
clock.advanceOneMilli();
|
clock.advanceOneMilli();
|
||||||
|
// It's hard to make the real verification code throw a GeneralSecurityException. Instead,
|
||||||
|
// replace the TmchXmlSignature with a stub that throws it for us.
|
||||||
|
this.testTmchXmlSignature = new TmchXmlSignature(null) {
|
||||||
|
@Override
|
||||||
|
public void verify(byte[] smdXml) throws GeneralSecurityException {
|
||||||
|
throw new GeneralSecurityException();
|
||||||
|
}};
|
||||||
thrown.expect(SignedMarkCertificateInvalidException.class);
|
thrown.expect(SignedMarkCertificateInvalidException.class);
|
||||||
runFlow();
|
runFlow();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue