Search in sources :

Example 1 with Sink

use of org.springframework.cloud.stream.messaging.Sink in project spring-cloud-stream by spring-cloud.

the class StreamListenerWithConditionsTest method testAnnotatedArgumentsWithConditionalClass.

@Test
public void testAnnotatedArgumentsWithConditionalClass() throws Exception {
    ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithAnnotatedArguments.class, "--server.port=0");
    TestPojoWithAnnotatedArguments testPojoWithAnnotatedArguments = context.getBean(TestPojoWithAnnotatedArguments.class);
    Sink sink = context.getBean(Sink.class);
    String id = UUID.randomUUID().toString();
    sink.input().send(MessageBuilder.withPayload("{\"foo\":\"barbar" + id + "\"}").setHeader("contentType", "application/json").setHeader("testHeader", "testValue").setHeader("type", "foo").build());
    sink.input().send(MessageBuilder.withPayload("{\"bar\":\"foofoo" + id + "\"}").setHeader("contentType", "application/json").setHeader("testHeader", "testValue").setHeader("type", "bar").build());
    sink.input().send(MessageBuilder.withPayload("{\"bar\":\"foofoo" + id + "\"}").setHeader("contentType", "application/json").setHeader("testHeader", "testValue").setHeader("type", "qux").build());
    assertThat(testPojoWithAnnotatedArguments.receivedFoo).hasSize(1);
    assertThat(testPojoWithAnnotatedArguments.receivedFoo.get(0)).hasFieldOrPropertyWithValue("foo", "barbar" + id);
    assertThat(testPojoWithAnnotatedArguments.receivedBar).hasSize(1);
    assertThat(testPojoWithAnnotatedArguments.receivedBar.get(0)).hasFieldOrPropertyWithValue("bar", "foofoo" + id);
    context.close();
}
Also used : ConfigurableApplicationContext(org.springframework.context.ConfigurableApplicationContext) Sink(org.springframework.cloud.stream.messaging.Sink) Test(org.junit.Test)

Example 2 with Sink

use of org.springframework.cloud.stream.messaging.Sink in project spring-cloud-stream by spring-cloud.

the class StreamListenerContentTypeConversionTests method testContentTypeConversion.

@Test
public void testContentTypeConversion() throws Exception {
    ConfigurableApplicationContext context = SpringApplication.run(TestSinkWithContentTypeConversion.class, "--server.port=0");
    @SuppressWarnings("unchecked") TestSinkWithContentTypeConversion testSink = context.getBean(TestSinkWithContentTypeConversion.class);
    Sink sink = context.getBean(Sink.class);
    String id = UUID.randomUUID().toString();
    sink.input().send(MessageBuilder.withPayload("{\"foo\":\"barbar" + id + "\"}").setHeader("contentType", "application/json").build());
    assertThat(testSink.latch.await(10, TimeUnit.SECONDS));
    assertThat(testSink.receivedArguments).hasSize(1);
    assertThat(testSink.receivedArguments.get(0)).hasFieldOrPropertyWithValue("foo", "barbar" + id);
    context.close();
}
Also used : ConfigurableApplicationContext(org.springframework.context.ConfigurableApplicationContext) Sink(org.springframework.cloud.stream.messaging.Sink) Test(org.junit.Test)

Example 3 with Sink

use of org.springframework.cloud.stream.messaging.Sink in project spring-cloud-stream by spring-cloud.

the class StreamListenerAnnotatedMethodArgumentsTests method testAnnotatedArguments.

@Test
@SuppressWarnings("unchecked")
public void testAnnotatedArguments() throws Exception {
    ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithAnnotatedArguments.class, "--server.port=0");
    TestPojoWithAnnotatedArguments testPojoWithAnnotatedArguments = context.getBean(TestPojoWithAnnotatedArguments.class);
    Sink sink = context.getBean(Sink.class);
    String id = UUID.randomUUID().toString();
    sink.input().send(MessageBuilder.withPayload("{\"foo\":\"barbar" + id + "\"}").setHeader("contentType", MimeType.valueOf("application/json")).setHeader("testHeader", "testValue").build());
    assertThat(testPojoWithAnnotatedArguments.receivedArguments).hasSize(3);
    assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(0)).isInstanceOf(StreamListenerTestUtils.FooPojo.class);
    assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(0)).hasFieldOrPropertyWithValue("foo", "barbar" + id);
    assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(1)).isInstanceOf(Map.class);
    assertThat((Map<String, Object>) testPojoWithAnnotatedArguments.receivedArguments.get(1)).containsEntry(MessageHeaders.CONTENT_TYPE, MimeType.valueOf("application/json"));
    assertThat((Map<String, String>) testPojoWithAnnotatedArguments.receivedArguments.get(1)).containsEntry("testHeader", "testValue");
    assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(2)).isEqualTo("application/json");
    context.close();
}
Also used : ConfigurableApplicationContext(org.springframework.context.ConfigurableApplicationContext) Sink(org.springframework.cloud.stream.messaging.Sink) Map(java.util.Map) Test(org.junit.Test)

Example 4 with Sink

use of org.springframework.cloud.stream.messaging.Sink in project spring-cloud-stream by spring-cloud.

the class StreamListenerAnnotationBeanPostProcessorOverrideTest method testOverrideStreamListenerAnnotationBeanPostProcessor.

@Test
@SuppressWarnings("unchecked")
public void testOverrideStreamListenerAnnotationBeanPostProcessor() throws Exception {
    ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithAnnotatedArguments.class, "--server.port=0");
    TestPojoWithAnnotatedArguments testPojoWithAnnotatedArguments = context.getBean(TestPojoWithAnnotatedArguments.class);
    Sink sink = context.getBean(Sink.class);
    String id = UUID.randomUUID().toString();
    sink.input().send(MessageBuilder.withPayload("{\"foo\":\"barbar" + id + "\"}").setHeader("contentType", "application/json").setHeader("testHeader", "testValue").setHeader("type", "foo").build());
    sink.input().send(MessageBuilder.withPayload("{\"bar\":\"foofoo" + id + "\"}").setHeader("contentType", "application/json").setHeader("testHeader", "testValue").setHeader("type", "bar").build());
    assertThat(testPojoWithAnnotatedArguments.receivedFoo).hasSize(1);
    assertThat(testPojoWithAnnotatedArguments.receivedFoo.get(0)).hasFieldOrPropertyWithValue("foo", "barbar" + id);
    context.close();
}
Also used : ConfigurableApplicationContext(org.springframework.context.ConfigurableApplicationContext) Sink(org.springframework.cloud.stream.messaging.Sink) Test(org.junit.Test)

Example 5 with Sink

use of org.springframework.cloud.stream.messaging.Sink in project spring-cloud-stream by spring-cloud.

the class StreamListenerAsMetaAnnotationTests method testAnnotation.

@Test
public void testAnnotation() {
    ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithAnnotatedArguments.class, "--server.port=0");
    TestPojoWithAnnotatedArguments testPojoWithAnnotatedArguments = context.getBean(TestPojoWithAnnotatedArguments.class);
    Sink sink = context.getBean(Sink.class);
    String id = UUID.randomUUID().toString();
    sink.input().send(MessageBuilder.withPayload("{\"foo\":\"barbar" + id + "\"}").setHeader("contentType", "application/json").setHeader("testHeader", "testValue").setHeader("type", "foo").build());
    assertThat(testPojoWithAnnotatedArguments.receivedFoo).hasSize(1);
    assertThat(testPojoWithAnnotatedArguments.receivedFoo.get(0)).hasFieldOrPropertyWithValue("foo", "barbar" + id);
    context.close();
}
Also used : ConfigurableApplicationContext(org.springframework.context.ConfigurableApplicationContext) Sink(org.springframework.cloud.stream.messaging.Sink) Test(org.junit.Test)

Aggregations

Sink (org.springframework.cloud.stream.messaging.Sink)12 ConfigurableApplicationContext (org.springframework.context.ConfigurableApplicationContext)12 Test (org.junit.Test)11 MessageCollector (org.springframework.cloud.stream.test.binder.MessageCollector)5 Source (org.springframework.cloud.stream.messaging.Source)4 Map (java.util.Map)1 DirectChannel (org.springframework.integration.channel.DirectChannel)1 Message (org.springframework.messaging.Message)1 MessageChannel (org.springframework.messaging.MessageChannel)1