Fixes messaging
This commit is contained in:
@@ -20,13 +20,14 @@ import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.springframework.cloud.contract.verifier.converter.YamlContract;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
|
||||
|
||||
/**
|
||||
* @author Olga Maciaszek-Sharma
|
||||
* @since 2.1.0
|
||||
*/
|
||||
class ExceptionThrowingMessageVerifier implements MessageVerifier {
|
||||
class ExceptionThrowingMessageVerifier implements MessageVerifierSender, MessageVerifierReceiver {
|
||||
|
||||
private static final String EXCEPTION_MESSAGE = "Please provide a custom MessageVerifier to use this feature";
|
||||
|
||||
|
||||
@@ -43,7 +43,8 @@ import org.springframework.cloud.contract.stubrunner.StubNotFoundException;
|
||||
import org.springframework.cloud.contract.stubrunner.StubRunnerOptions;
|
||||
import org.springframework.cloud.contract.stubrunner.StubRunnerOptionsBuilder;
|
||||
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
|
||||
|
||||
/**
|
||||
* JUnit 5 extension that allows to download and run stubs.
|
||||
@@ -71,7 +72,9 @@ public class StubRunnerExtension implements BeforeAllCallback, AfterAllCallback,
|
||||
private StubRunnerOptionsBuilder stubRunnerOptionsBuilder = new StubRunnerOptionsBuilder(
|
||||
StubRunnerOptions.fromSystemProps());
|
||||
|
||||
private MessageVerifier verifier = new ExceptionThrowingMessageVerifier();
|
||||
private MessageVerifierSender verifierSender = new ExceptionThrowingMessageVerifier();
|
||||
|
||||
private MessageVerifierReceiver verifierReceiver = new ExceptionThrowingMessageVerifier();
|
||||
|
||||
public StubRunnerExtension() {
|
||||
}
|
||||
@@ -121,7 +124,7 @@ public class StubRunnerExtension implements BeforeAllCallback, AfterAllCallback,
|
||||
}
|
||||
|
||||
private void before() {
|
||||
stubFinder(new BatchStubRunnerFactory(builder().build(), verifier()).buildBatchStubRunner());
|
||||
stubFinder(new BatchStubRunnerFactory(builder().build(), verifierSender()).buildBatchStubRunner());
|
||||
stubFinder().runStubs();
|
||||
}
|
||||
|
||||
@@ -188,8 +191,14 @@ public class StubRunnerExtension implements BeforeAllCallback, AfterAllCallback,
|
||||
}
|
||||
|
||||
@Override
|
||||
public StubRunnerExtension messageVerifier(MessageVerifier messageVerifier) {
|
||||
verifier(messageVerifier);
|
||||
public StubRunnerExtension messageVerifierSender(MessageVerifierSender messageVerifier) {
|
||||
verifierSender(messageVerifier);
|
||||
return this.delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StubRunnerExtension messageVerifierReceiver(MessageVerifierReceiver messageVerifier) {
|
||||
verifierReceiver(messageVerifier);
|
||||
return this.delegate;
|
||||
}
|
||||
|
||||
@@ -326,12 +335,20 @@ public class StubRunnerExtension implements BeforeAllCallback, AfterAllCallback,
|
||||
return this.delegate.stubRunnerOptionsBuilder;
|
||||
}
|
||||
|
||||
MessageVerifier verifier() {
|
||||
return this.delegate.verifier;
|
||||
MessageVerifierSender verifierSender() {
|
||||
return this.delegate.verifierSender;
|
||||
}
|
||||
|
||||
void verifier(MessageVerifier verifier) {
|
||||
this.delegate.verifier = verifier;
|
||||
MessageVerifierReceiver verifierReceiver() {
|
||||
return this.delegate.verifierReceiver;
|
||||
}
|
||||
|
||||
void verifierSender(MessageVerifierSender verifier) {
|
||||
this.delegate.verifierSender = verifier;
|
||||
}
|
||||
|
||||
void verifierReceiver(MessageVerifierReceiver verifier) {
|
||||
this.delegate.verifierReceiver = verifier;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -22,7 +22,8 @@ import java.util.Map;
|
||||
import org.springframework.cloud.contract.stubrunner.HttpServerStubConfigurer;
|
||||
import org.springframework.cloud.contract.stubrunner.StubRunnerOptions;
|
||||
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
|
||||
|
||||
/**
|
||||
* @author Olga Maciaszek-Sharma
|
||||
@@ -31,13 +32,22 @@ import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
|
||||
interface StubRunnerExtensionOptions {
|
||||
|
||||
/**
|
||||
* Pass the {@link MessageVerifier} that this rule should use. If you don't pass
|
||||
* Pass the {@link MessageVerifierSender} that this rule should use. If you don't pass
|
||||
* anything a {@link ExceptionThrowingMessageVerifier} will be used. That means that
|
||||
* an exception will be thrown whenever you try to do sth messaging related.
|
||||
* @param messageVerifier message verifier implementation
|
||||
* @return the stub runner extension
|
||||
*/
|
||||
StubRunnerExtension messageVerifier(MessageVerifier messageVerifier);
|
||||
StubRunnerExtension messageVerifierSender(MessageVerifierSender messageVerifier);
|
||||
|
||||
/**
|
||||
* Pass the {@link MessageVerifierReceiver} that this rule should use. If you don't
|
||||
* pass anything a {@link ExceptionThrowingMessageVerifier} will be used. That means
|
||||
* that an exception will be thrown whenever you try to do sth messaging related.
|
||||
* @param messageVerifier message verifier implementation
|
||||
* @return the stub runner extension
|
||||
*/
|
||||
StubRunnerExtension messageVerifierReceiver(MessageVerifierReceiver messageVerifier);
|
||||
|
||||
/**
|
||||
* Override all options.
|
||||
|
||||
@@ -36,7 +36,8 @@ import org.springframework.cloud.contract.stubrunner.StubFinder;
|
||||
import org.springframework.cloud.contract.stubrunner.StubRunnerOptions;
|
||||
import org.springframework.cloud.contract.stubrunner.StubRunnerOptionsBuilder;
|
||||
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
|
||||
|
||||
/**
|
||||
* JUnit class rule that allows you to download the provided stubs.
|
||||
@@ -54,7 +55,9 @@ public class StubRunnerRule implements TestRule, StubFinder, StubRunnerRuleOptio
|
||||
|
||||
BatchStubRunner stubFinder;
|
||||
|
||||
MessageVerifier verifier = new ExceptionThrowingMessageVerifier();
|
||||
MessageVerifierSender verifierSender = new ExceptionThrowingMessageVerifier();
|
||||
|
||||
MessageVerifierReceiver verifierReceiver = new ExceptionThrowingMessageVerifier();
|
||||
|
||||
StubRunnerRule delegate = this;
|
||||
|
||||
@@ -76,14 +79,20 @@ public class StubRunnerRule implements TestRule, StubFinder, StubRunnerRuleOptio
|
||||
}
|
||||
|
||||
private void before() {
|
||||
stubFinder(new BatchStubRunnerFactory(builder().build(), verifier()).buildBatchStubRunner());
|
||||
stubFinder(new BatchStubRunnerFactory(builder().build(), verifierSender()).buildBatchStubRunner());
|
||||
StubRunnerRule.this.stubFinder().runStubs();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public StubRunnerRule messageVerifier(MessageVerifier messageVerifier) {
|
||||
public StubRunnerRule messageVerifierSender(MessageVerifierSender messageVerifier) {
|
||||
verifier(messageVerifier);
|
||||
return this.delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StubRunnerRule messageVerifierReceiver(MessageVerifierReceiver messageVerifier) {
|
||||
verifier(messageVerifier);
|
||||
return this.delegate;
|
||||
}
|
||||
@@ -270,12 +279,20 @@ public class StubRunnerRule implements TestRule, StubFinder, StubRunnerRuleOptio
|
||||
this.delegate.stubFinder = stubFinder;
|
||||
}
|
||||
|
||||
MessageVerifier verifier() {
|
||||
return this.delegate.verifier;
|
||||
MessageVerifierSender verifierSender() {
|
||||
return this.delegate.verifierSender;
|
||||
}
|
||||
|
||||
void verifier(MessageVerifier verifier) {
|
||||
this.delegate.verifier = verifier;
|
||||
MessageVerifierReceiver verifierReceiver() {
|
||||
return this.delegate.verifierReceiver;
|
||||
}
|
||||
|
||||
void verifier(MessageVerifierSender verifier) {
|
||||
this.delegate.verifierSender = verifier;
|
||||
}
|
||||
|
||||
void verifier(MessageVerifierReceiver verifier) {
|
||||
this.delegate.verifierReceiver = verifier;
|
||||
}
|
||||
|
||||
StubRunnerOptionsBuilder builder() {
|
||||
|
||||
@@ -22,18 +22,28 @@ import java.util.Map;
|
||||
import org.springframework.cloud.contract.stubrunner.HttpServerStubConfigurer;
|
||||
import org.springframework.cloud.contract.stubrunner.StubRunnerOptions;
|
||||
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
|
||||
|
||||
interface StubRunnerRuleOptions {
|
||||
|
||||
/**
|
||||
* Pass the {@link MessageVerifier} that this rule should use. If you don't pass
|
||||
* Pass the {@link MessageVerifierSender} that this rule should use. If you don't pass
|
||||
* anything a {@link ExceptionThrowingMessageVerifier} will be used. That means that
|
||||
* an exception will be thrown whenever you try to do sth messaging related.
|
||||
* @param messageVerifier message verifier implementation
|
||||
* @return the rule
|
||||
*/
|
||||
StubRunnerRule messageVerifier(MessageVerifier messageVerifier);
|
||||
StubRunnerRule messageVerifierSender(MessageVerifierSender messageVerifier);
|
||||
|
||||
/**
|
||||
* Pass the {@link MessageVerifierReceiver} that this rule should use. If you don't
|
||||
* pass anything a {@link ExceptionThrowingMessageVerifier} will be used. That means
|
||||
* that an exception will be thrown whenever you try to do sth messaging related.
|
||||
* @param messageVerifier message verifier implementation
|
||||
* @return the rule
|
||||
*/
|
||||
StubRunnerRule messageVerifierReceiver(MessageVerifierReceiver messageVerifier);
|
||||
|
||||
/**
|
||||
* Override all options.
|
||||
|
||||
@@ -34,7 +34,6 @@ import org.springframework.cloud.contract.stubrunner.StubDownloaderBuilderProvid
|
||||
import org.springframework.cloud.contract.stubrunner.StubRunnerOptions;
|
||||
import org.springframework.cloud.contract.stubrunner.StubRunnerOptionsBuilder;
|
||||
import org.springframework.cloud.contract.verifier.converter.YamlContract;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
|
||||
import org.springframework.cloud.contract.verifier.messaging.noop.NoOpStubMessages;
|
||||
@@ -158,7 +157,7 @@ public class StubRunnerConfiguration {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
class LazyMessageVerifier implements MessageVerifier {
|
||||
class LazyMessageVerifier implements MessageVerifierSender, MessageVerifierReceiver {
|
||||
|
||||
private MessageVerifierSender<?> messageVerifierSender;
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@ import spock.lang.Specification
|
||||
|
||||
import org.springframework.cloud.contract.stubrunner.util.StubsParser
|
||||
import org.springframework.cloud.contract.verifier.converter.YamlContract
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender
|
||||
import org.springframework.cloud.test.TestSocketUtils
|
||||
|
||||
class StubRunnerExecutorSpec extends Specification {
|
||||
@@ -164,7 +165,7 @@ class StubRunnerExecutorSpec extends Specification {
|
||||
executor.shutdown()
|
||||
}
|
||||
|
||||
class MockMessageVerifier implements MessageVerifier {
|
||||
class MockMessageVerifier implements MessageVerifierSender, MessageVerifierReceiver {
|
||||
|
||||
boolean called
|
||||
|
||||
@@ -199,7 +200,7 @@ class StubRunnerExecutorSpec extends Specification {
|
||||
}
|
||||
}
|
||||
|
||||
private class AssertingStubMessages implements MessageVerifier<Object> {
|
||||
private class AssertingStubMessages implements MessageVerifierSender<Object>, MessageVerifierReceiver<Object> {
|
||||
|
||||
@Override
|
||||
void send(Object message, String destination, YamlContract contract) {
|
||||
|
||||
@@ -27,8 +27,8 @@ import spock.lang.Specification
|
||||
import org.springframework.cloud.contract.stubrunner.junit.StubRunnerRule
|
||||
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
|
||||
import org.springframework.cloud.contract.verifier.converter.YamlContract
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
|
||||
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
@@ -47,7 +47,8 @@ class StubRunnerRuleCustomMsgVerifierSpec extends Specification {
|
||||
.stubsMode(StubRunnerProperties.StubsMode.REMOTE)
|
||||
.repoRoot(StubRunnerRuleCustomMsgVerifierSpec.getResource("/m2repo/repository").toURI().toString())
|
||||
.downloadStub("org.springframework.cloud.contract.verifier.stubs", "bootService")
|
||||
.messageVerifier(new MyMessageVerifier())
|
||||
.messageVerifierSender(new MyMessageVerifier())
|
||||
.messageVerifierReceiver(new MyMessageVerifier())
|
||||
|
||||
def 'should use the provided message verifier in the junit rule'() {
|
||||
when:
|
||||
@@ -67,7 +68,7 @@ class StubRunnerRuleCustomMsgVerifierSpec extends Specification {
|
||||
e.message.contains("Failed to send a message with headers")
|
||||
}
|
||||
|
||||
static class MyMessageVerifier implements MessageVerifier {
|
||||
static class MyMessageVerifier implements MessageVerifierSender, MessageVerifierReceiver {
|
||||
|
||||
@Override
|
||||
void send(Object message, String destination, YamlContract contract) {
|
||||
|
||||
@@ -29,7 +29,8 @@ import org.springframework.boot.test.web.client.TestRestTemplate
|
||||
import org.springframework.cloud.contract.stubrunner.StubFinder
|
||||
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner
|
||||
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender
|
||||
import org.springframework.cloud.stream.binder.test.TestChannelBinderConfiguration
|
||||
import org.springframework.context.annotation.Bean
|
||||
import org.springframework.context.annotation.Configuration
|
||||
@@ -37,7 +38,6 @@ import org.springframework.core.env.Environment
|
||||
import org.springframework.http.ResponseEntity
|
||||
import org.springframework.messaging.Message
|
||||
import org.springframework.test.context.ActiveProfiles
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
@@ -56,7 +56,7 @@ class StubRunnerStubsPerConsumerSpec {
|
||||
@Autowired
|
||||
Environment environment
|
||||
@Autowired
|
||||
MessageVerifier<Message<?>> messaging
|
||||
MessageVerifierReceiver<Message<?>> messaging
|
||||
TestRestTemplate template = new TestRestTemplate()
|
||||
|
||||
@Test
|
||||
|
||||
@@ -20,7 +20,6 @@ import java.util.function.Function
|
||||
|
||||
import org.assertj.core.api.BDDAssertions
|
||||
import org.junit.jupiter.api.Test
|
||||
import spock.lang.Specification
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
|
||||
@@ -30,7 +29,7 @@ import org.springframework.boot.test.web.client.TestRestTemplate
|
||||
import org.springframework.cloud.contract.stubrunner.StubFinder
|
||||
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner
|
||||
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver
|
||||
import org.springframework.cloud.stream.binder.test.TestChannelBinderConfiguration
|
||||
import org.springframework.context.annotation.Bean
|
||||
import org.springframework.context.annotation.Configuration
|
||||
@@ -57,7 +56,7 @@ class StubRunnerStubsPerConsumerWithConsumerNameSpec {
|
||||
@Autowired
|
||||
Environment environment
|
||||
@Autowired
|
||||
MessageVerifier<Message<?>> messaging
|
||||
MessageVerifierReceiver<Message<?>> messaging
|
||||
|
||||
TestRestTemplate template = new TestRestTemplate()
|
||||
|
||||
|
||||
@@ -27,7 +27,8 @@ import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.springframework.cloud.contract.stubrunner.junit4.StubRunnerRuleCustomPortJUnitTest;
|
||||
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
|
||||
import org.springframework.cloud.contract.verifier.converter.YamlContract;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
@@ -43,7 +44,7 @@ class StubRunnerJUnit5ExtensionCustomMessageVerifierTests {
|
||||
static StubRunnerExtension stubRunnerExtension = new StubRunnerExtension()
|
||||
.stubsMode(StubRunnerProperties.StubsMode.REMOTE).repoRoot(repoRoot())
|
||||
.downloadStub("org.springframework.cloud.contract.verifier.stubs", "bootService")
|
||||
.messageVerifier(new MyMessageVerifier());
|
||||
.messageVerifierSender(new MyMessageVerifier()).messageVerifierReceiver(new MyMessageVerifier());
|
||||
|
||||
@BeforeAll
|
||||
@AfterAll
|
||||
@@ -74,7 +75,7 @@ class StubRunnerJUnit5ExtensionCustomMessageVerifierTests {
|
||||
assertThat(wrongLabelWithIvyNotation.getMessage()).contains("Failed to send a message with headers");
|
||||
}
|
||||
|
||||
static class MyMessageVerifier implements MessageVerifier {
|
||||
static class MyMessageVerifier implements MessageVerifierSender, MessageVerifierReceiver {
|
||||
|
||||
@Override
|
||||
public void send(Object message, String destination, YamlContract contract) {
|
||||
|
||||
Reference in New Issue
Block a user