Almost there
This commit is contained in:
@@ -16,9 +16,9 @@
|
||||
|
||||
package org.springframework.cloud.contract.stubrunner.server
|
||||
|
||||
import io.restassured.module.mockmvc.RestAssuredMockMvc
|
||||
import groovy.json.JsonSlurper
|
||||
import org.junit.Ignore
|
||||
import io.restassured.module.mockmvc.RestAssuredMockMvc
|
||||
import spock.lang.Specification
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.context.SpringBootContextLoader
|
||||
@@ -26,13 +26,9 @@ import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.cloud.contract.stubrunner.StubRunning
|
||||
import org.springframework.test.context.ActiveProfiles
|
||||
import org.springframework.test.context.ContextConfiguration
|
||||
import spock.lang.Specification
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
// TODO: Boot 2.0
|
||||
@Ignore
|
||||
// tag::boot_usage[]
|
||||
@ContextConfiguration(classes = StubRunnerBoot, loader = SpringBootContextLoader)
|
||||
@SpringBootTest(properties = "spring.cloud.zookeeper.enabled=false")
|
||||
@@ -59,7 +55,7 @@ class StubRunnerBootSpec extends Specification {
|
||||
def response = RestAssuredMockMvc.get("/stubs/${stubId}")
|
||||
then:
|
||||
response.statusCode == 200
|
||||
response.body.as(Integer) > 0
|
||||
Integer.valueOf(response.body.asString()) > 0
|
||||
where:
|
||||
stubId << ['org.springframework.cloud.contract.verifier.stubs:bootService:+:stubs',
|
||||
'org.springframework.cloud.contract.verifier.stubs:bootService:0.0.1-SNAPSHOT:stubs',
|
||||
|
||||
@@ -26,7 +26,6 @@ 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.verifier.messaging.MessageVerifier
|
||||
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierObjectMapper
|
||||
import org.springframework.cloud.stream.annotation.EnableBinding
|
||||
import org.springframework.cloud.stream.messaging.Sink
|
||||
import org.springframework.context.annotation.Configuration
|
||||
@@ -35,7 +34,6 @@ import org.springframework.http.ResponseEntity
|
||||
import org.springframework.messaging.Message
|
||||
import org.springframework.test.annotation.DirtiesContext
|
||||
import org.springframework.test.context.ContextConfiguration
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
@@ -74,7 +72,7 @@ class StubRunnerStubsPerConsumerSpec extends Specification {
|
||||
Message<?> receivedMessage = messaging.receive('output')
|
||||
and:
|
||||
receivedMessage != null
|
||||
new ContractVerifierObjectMapper().writeValueAsString(receivedMessage.payload) == "\"{\\\"bookName\\\":\\\"foo_for_bar\\\"}\""
|
||||
receivedMessage.payload == '''{"bookName":"foo_for_bar"}'''
|
||||
receivedMessage.headers.get('BOOK-NAME') == 'foo_for_bar'
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@ 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.verifier.messaging.MessageVerifier
|
||||
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierObjectMapper
|
||||
import org.springframework.cloud.stream.annotation.EnableBinding
|
||||
import org.springframework.cloud.stream.messaging.Sink
|
||||
import org.springframework.context.annotation.Configuration
|
||||
@@ -71,10 +70,10 @@ class StubRunnerStubsPerConsumerWithConsumerNameSpec extends Specification {
|
||||
when:
|
||||
stubFinder.trigger('return_book_for_foo')
|
||||
then:
|
||||
Message<String> receivedMessage = messaging.receive('output')
|
||||
Message<?> receivedMessage = messaging.receive('output')
|
||||
and:
|
||||
receivedMessage != null
|
||||
new ContractVerifierObjectMapper().writeValueAsString(receivedMessage.payload) == "\"{\\\"bookName\\\":\\\"foo_for_foo\\\"}\""
|
||||
receivedMessage.payload == '''{"bookName":"foo_for_foo"}'''
|
||||
receivedMessage.headers.get('BOOK-NAME') == 'foo_for_foo'
|
||||
}
|
||||
|
||||
|
||||
@@ -19,9 +19,10 @@ package org.springframework.cloud.contract.verifier.messaging.stream;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
|
||||
import org.springframework.cloud.stream.config.BindingProperties;
|
||||
import org.springframework.cloud.stream.config.BindingServiceProperties;
|
||||
@@ -29,6 +30,10 @@ import org.springframework.cloud.stream.test.binder.MessageCollector;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageChannel;
|
||||
import org.springframework.messaging.converter.DefaultContentTypeResolver;
|
||||
import org.springframework.messaging.converter.MappingJackson2MessageConverter;
|
||||
import org.springframework.messaging.support.MessageBuilder;
|
||||
import org.springframework.util.MimeTypeUtils;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
@@ -41,7 +46,6 @@ public class StreamStubMessages implements MessageVerifier<Message<?>> {
|
||||
private final MessageCollector messageCollector;
|
||||
private final ContractVerifierStreamMessageBuilder builder = new ContractVerifierStreamMessageBuilder();
|
||||
|
||||
@Autowired
|
||||
public StreamStubMessages(ApplicationContext context) {
|
||||
this.context = context;
|
||||
this.messageCollector = context.getBean(MessageCollector.class);
|
||||
@@ -71,7 +75,12 @@ public class StreamStubMessages implements MessageVerifier<Message<?>> {
|
||||
try {
|
||||
MessageChannel messageChannel = this.context
|
||||
.getBean(resolvedDestination(destination), MessageChannel.class);
|
||||
return this.messageCollector.forChannel(messageChannel).poll(timeout, timeUnit);
|
||||
Message<?> message = this.messageCollector.forChannel(messageChannel).poll(timeout, timeUnit);
|
||||
if (message == null) {
|
||||
return message;
|
||||
}
|
||||
Object fromMessage = converter().fromMessage(message, String.class);
|
||||
return MessageBuilder.createMessage(fromMessage, message.getHeaders());
|
||||
}
|
||||
catch (Exception e) {
|
||||
log.error("Exception occurred while trying to read a message from "
|
||||
@@ -110,4 +119,26 @@ public class StreamStubMessages implements MessageVerifier<Message<?>> {
|
||||
return receive(destination, 5, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
private MappingJackson2MessageConverter converter() {
|
||||
ObjectMapper mapper = null;
|
||||
try {
|
||||
mapper = this.context.getBean(ObjectMapper.class);
|
||||
} catch (NoSuchBeanDefinitionException e) {
|
||||
|
||||
}
|
||||
MappingJackson2MessageConverter converter = createJacksonConverter();
|
||||
if (mapper != null) {
|
||||
converter.setObjectMapper(mapper);
|
||||
}
|
||||
return converter;
|
||||
}
|
||||
|
||||
protected MappingJackson2MessageConverter createJacksonConverter() {
|
||||
DefaultContentTypeResolver resolver = new DefaultContentTypeResolver();
|
||||
resolver.setDefaultMimeType(MimeTypeUtils.APPLICATION_JSON);
|
||||
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
|
||||
converter.setContentTypeResolver(resolver);
|
||||
return converter;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user