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:
cgoldfeder 2017-04-27 10:52:15 -07:00 committed by Ben McIlwain
parent 8514f734e4
commit 927eb43cbc
6 changed files with 32 additions and 15 deletions

View file

@ -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;

View file

@ -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()

View file

@ -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();

View file

@ -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;

View file

@ -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()

View file

@ -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();
} }