diff --git a/spring-cloud-stream-binders/pom.xml b/spring-cloud-stream-binders/pom.xml index 9f0ec5fd2..6c82410ce 100644 --- a/spring-cloud-stream-binders/pom.xml +++ b/spring-cloud-stream-binders/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 spring-cloud-stream-binders-parent pom @@ -26,10 +27,5 @@ org.springframework.boot spring-boot-starter-logging - - org.springframework.boot - spring-boot-starter-test - test - diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/KafkaBinderTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/KafkaBinderTests.java index 2411f0773..08ca966f1 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/KafkaBinderTests.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/KafkaBinderTests.java @@ -26,7 +26,6 @@ import java.util.concurrent.TimeUnit; import kafka.admin.AdminUtils; import kafka.api.TopicMetadata; -import org.hamcrest.collection.IsCollectionWithSize; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; @@ -59,22 +58,9 @@ import org.springframework.retry.backoff.FixedBackOffPolicy; import org.springframework.retry.policy.SimpleRetryPolicy; import org.springframework.retry.support.RetryTemplate; -import static org.hamcrest.Matchers.arrayWithSize; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasItemInArray; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.nullValue; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; - /** * Integration tests for the {@link KafkaMessageChannelBinder}. * @author Eric Bottard @@ -151,7 +137,7 @@ public class KafkaBinderTests extends KafkaTestBinder binder = getBinder(); DirectChannel moduleOutputChannel = new DirectChannel(); DirectChannel moduleInputChannel = new DirectChannel(); - QueueChannel dlqChannel = new QueueChannel(); + QueueChannel dlqChannel = new QueueChannel(); FailingInvocationCountingMessageHandler handler = new FailingInvocationCountingMessageHandler(); moduleInputChannel.subscribe(handler); ExtendedProducerProperties producerProperties = createProducerProperties(); @@ -164,8 +150,8 @@ public class KafkaBinderTests extends long uniqueBindingId = System.currentTimeMillis(); Binding producerBinding = binder.bindProducer("retryTest." + uniqueBindingId + ".0", moduleOutputChannel, producerProperties); - Binding consumerBinding = binder.bindConsumer("retryTest." + uniqueBindingId + ".0", "testGroup", - moduleInputChannel, consumerProperties); + Binding consumerBinding = binder.bindConsumer("retryTest." + uniqueBindingId + ".0", + "testGroup", moduleInputChannel, consumerProperties); ExtendedConsumerProperties dlqConsumerProperties = createConsumerProperties(); dlqConsumerProperties.setMaxAttempts(1); @@ -178,9 +164,9 @@ public class KafkaBinderTests extends moduleOutputChannel.send(testMessage); Message receivedMessage = receive(dlqChannel, 3); - assertNotNull(receivedMessage); - assertEquals(testMessagePayload, receivedMessage.getPayload()); - assertThat(handler.getInvocationCount(), equalTo(consumerProperties.getMaxAttempts())); + assertThat(receivedMessage).isNotNull(); + assertThat(receivedMessage.getPayload()).isEqualTo(testMessagePayload); + assertThat(handler.getInvocationCount()).isEqualTo(consumerProperties.getMaxAttempts()); dlqConsumerBinding.unbind(); consumerBinding.unbind(); producerBinding.unbind(); @@ -209,13 +195,13 @@ public class KafkaBinderTests extends Message testMessage = MessageBuilder.withPayload(testMessagePayload).build(); moduleOutputChannel.send(testMessage); - assertTrue(handler.getLatch().await((int) (timeoutMultiplier * 1000), TimeUnit.MILLISECONDS)); + assertThat(handler.getLatch().await((int) (timeoutMultiplier * 1000), TimeUnit.MILLISECONDS)); // first attempt fails - assertThat(handler.getReceivedMessages().entrySet(), hasSize(1)); + assertThat(handler.getReceivedMessages().entrySet()).hasSize(1); Message receivedMessage = handler.getReceivedMessages().entrySet().iterator().next().getValue(); - assertNotNull(receivedMessage); - assertEquals(testMessagePayload, receivedMessage.getPayload()); - assertThat(handler.getInvocationCount(), equalTo(consumerProperties.getMaxAttempts())); + assertThat(receivedMessage).isNotNull(); + assertThat(receivedMessage.getPayload()).isEqualTo(testMessagePayload); + assertThat(handler.getInvocationCount()).isEqualTo(consumerProperties.getMaxAttempts()); consumerBinding.unbind(); // on the second attempt the message is redelivered @@ -227,9 +213,9 @@ public class KafkaBinderTests extends moduleOutputChannel.send(testMessage2); Message firstReceived = receive(successfulInputChannel); - assertEquals(testMessagePayload, firstReceived.getPayload()); + assertThat(firstReceived.getPayload()).isEqualTo(testMessagePayload); Message secondReceived = receive(successfulInputChannel); - assertEquals(testMessage2Payload, secondReceived.getPayload()); + assertThat(secondReceived.getPayload()).isEqualTo(testMessage2Payload); consumerBinding.unbind(); producerBinding.unbind(); } @@ -264,20 +250,19 @@ public class KafkaBinderTests extends moduleOutputChannel.send(testMessage); Message dlqMessage = receive(dlqChannel, 3); - assertNotNull(dlqMessage); - assertEquals(testMessagePayload, dlqMessage.getPayload()); + assertThat(dlqMessage).isNotNull(); + assertThat(dlqMessage.getPayload()).isEqualTo(testMessagePayload); // first attempt fails - assertThat(handler.getReceivedMessages().entrySet(), hasSize(1)); + assertThat(handler.getReceivedMessages().entrySet()).hasSize(1); Message handledMessage = handler.getReceivedMessages().entrySet().iterator().next().getValue(); - assertNotNull(handledMessage); - assertEquals(testMessagePayload, handledMessage.getPayload()); - assertThat(handler.getInvocationCount(), equalTo(consumerProperties.getMaxAttempts())); + assertThat(handledMessage).isNotNull(); + assertThat(handledMessage.getPayload()).isEqualTo(testMessagePayload); + assertThat(handler.getInvocationCount()).isEqualTo(consumerProperties.getMaxAttempts()); dlqConsumerBinding.unbind(); consumerBinding.unbind(); - // on the second attempt the message is not redelivered because the DLQ is set QueueChannel successfulInputChannel = new QueueChannel(); consumerBinding = binder.bindConsumer("retryTest." + uniqueBindingId + ".0", "testGroup", @@ -287,7 +272,7 @@ public class KafkaBinderTests extends moduleOutputChannel.send(testMessage2); Message receivedMessage = receive(successfulInputChannel); - assertEquals(testMessage2Payload, receivedMessage.getPayload()); + assertThat(receivedMessage.getPayload()).isEqualTo(testMessage2Payload); consumerBinding.unbind(); producerBinding.unbind(); @@ -301,28 +286,28 @@ public class KafkaBinderTests extends @Test public void testCompression() throws Exception { final ProducerMetadata.CompressionType[] codecs = new ProducerMetadata.CompressionType[] { - ProducerMetadata.CompressionType.none, - ProducerMetadata.CompressionType.gzip, + ProducerMetadata.CompressionType.none, ProducerMetadata.CompressionType.gzip, ProducerMetadata.CompressionType.snappy }; - - byte[] ratherBigPayload = new byte[2048]; - Arrays.fill(ratherBigPayload, (byte) 65); + byte[] testPayload = new byte[2048]; + Arrays.fill(testPayload, (byte) 65); KafkaTestBinder binder = getBinder(); - for (ProducerMetadata.CompressionType codec : codecs) { DirectChannel moduleOutputChannel = new DirectChannel(); QueueChannel moduleInputChannel = new QueueChannel(); ExtendedProducerProperties producerProperties = createProducerProperties(); producerProperties.getExtension().setCompressionType(codec); - Binding producerBinding = binder.bindProducer("foo.0", moduleOutputChannel, producerProperties); - Binding consumerBinding = binder.bindConsumer("foo.0", "test", moduleInputChannel, createConsumerProperties()); - Message message = org.springframework.integration.support.MessageBuilder.withPayload(ratherBigPayload).build(); + Binding producerBinding = binder.bindProducer("foo.0", moduleOutputChannel, + producerProperties); + Binding consumerBinding = binder.bindConsumer("foo.0", "test", moduleInputChannel, + createConsumerProperties()); + Message message = org.springframework.integration.support.MessageBuilder.withPayload(testPayload) + .build(); // Let the consumer actually bind to the producer before sending a msg binderBindUnbindLatency(); moduleOutputChannel.send(message); Message inbound = receive(moduleInputChannel); - assertNotNull(inbound); - assertArrayEquals(ratherBigPayload, (byte[]) inbound.getPayload()); + assertThat(inbound).isNotNull(); + assertThat((byte[]) inbound.getPayload()).containsExactly(testPayload); producerBinding.unbind(); consumerBinding.unbind(); } @@ -331,8 +316,8 @@ public class KafkaBinderTests extends @Test public void testCustomPartitionCountOverridesDefaultIfLarger() throws Exception { - byte[] ratherBigPayload = new byte[2048]; - Arrays.fill(ratherBigPayload, (byte) 65); + byte[] testPayload = new byte[2048]; + Arrays.fill(testPayload, (byte) 65); KafkaBinderConfigurationProperties binderConfiguration = createConfigurationProperties(); binderConfiguration.setMinPartitionCount(10); KafkaTestBinder binder = new KafkaTestBinder(binderConfiguration); @@ -343,18 +328,21 @@ public class KafkaBinderTests extends producerProperties.setPartitionCount(10); ExtendedConsumerProperties consumerProperties = createConsumerProperties(); long uniqueBindingId = System.currentTimeMillis(); - Binding producerBinding = binder.bindProducer("foo" + uniqueBindingId + ".0", moduleOutputChannel, producerProperties); - Binding consumerBinding = binder.bindConsumer("foo" + uniqueBindingId + ".0", null, moduleInputChannel, consumerProperties); - Message message = org.springframework.integration.support.MessageBuilder.withPayload(ratherBigPayload).build(); + Binding producerBinding = binder.bindProducer("foo" + uniqueBindingId + ".0", + moduleOutputChannel, producerProperties); + Binding consumerBinding = binder.bindConsumer("foo" + uniqueBindingId + ".0", null, + moduleInputChannel, consumerProperties); + Message message = org.springframework.integration.support.MessageBuilder.withPayload(testPayload) + .build(); // Let the consumer actually bind to the producer before sending a msg binderBindUnbindLatency(); moduleOutputChannel.send(message); Message inbound = receive(moduleInputChannel); - assertNotNull(inbound); - assertArrayEquals(ratherBigPayload, (byte[]) inbound.getPayload()); - Collection partitions = binder.getCoreBinder().getConnectionFactory().getPartitions( - "foo" + uniqueBindingId + ".0"); - assertThat(partitions, hasSize(10)); + assertThat(inbound).isNotNull(); + assertThat((byte[]) inbound.getPayload()).containsExactly(testPayload); + Collection partitions = binder.getCoreBinder().getConnectionFactory() + .getPartitions("foo" + uniqueBindingId + ".0"); + assertThat(partitions).hasSize(10); producerBinding.unbind(); consumerBinding.unbind(); } @@ -362,8 +350,8 @@ public class KafkaBinderTests extends @Test public void testCustomPartitionCountDoesNotOverridePartitioningIfSmaller() throws Exception { - byte[] ratherBigPayload = new byte[2048]; - Arrays.fill(ratherBigPayload, (byte) 65); + byte[] testPayload = new byte[2048]; + Arrays.fill(testPayload, (byte) 65); KafkaBinderConfigurationProperties binderConfiguration = createConfigurationProperties(); binderConfiguration.setMinPartitionCount(6); KafkaTestBinder binder = new KafkaTestBinder(binderConfiguration); @@ -374,18 +362,21 @@ public class KafkaBinderTests extends producerProperties.setPartitionKeyExpression(spelExpressionParser.parseExpression("payload")); ExtendedConsumerProperties consumerProperties = createConsumerProperties(); long uniqueBindingId = System.currentTimeMillis(); - Binding producerBinding = binder.bindProducer("foo" + uniqueBindingId + ".0", moduleOutputChannel, producerProperties); - Binding consumerBinding = binder.bindConsumer("foo" + uniqueBindingId + ".0", null, moduleInputChannel, consumerProperties); - Message message = org.springframework.integration.support.MessageBuilder.withPayload(ratherBigPayload).build(); + Binding producerBinding = binder.bindProducer("foo" + uniqueBindingId + ".0", + moduleOutputChannel, producerProperties); + Binding consumerBinding = binder.bindConsumer("foo" + uniqueBindingId + ".0", null, + moduleInputChannel, consumerProperties); + Message message = org.springframework.integration.support.MessageBuilder.withPayload(testPayload) + .build(); // Let the consumer actually bind to the producer before sending a msg binderBindUnbindLatency(); moduleOutputChannel.send(message); Message inbound = receive(moduleInputChannel); - assertNotNull(inbound); - assertArrayEquals(ratherBigPayload, (byte[]) inbound.getPayload()); - Collection partitions = binder.getCoreBinder().getConnectionFactory().getPartitions( - "foo" + uniqueBindingId + ".0"); - assertThat(partitions, hasSize(6)); + assertThat(inbound).isNotNull(); + assertThat((byte[]) inbound.getPayload()).containsExactly(testPayload); + Collection partitions = binder.getCoreBinder().getConnectionFactory() + .getPartitions("foo" + uniqueBindingId + ".0"); + assertThat(partitions).hasSize(6); producerBinding.unbind(); consumerBinding.unbind(); } @@ -393,8 +384,8 @@ public class KafkaBinderTests extends @Test public void testCustomPartitionCountOverridesPartitioningIfLarger() throws Exception { - byte[] ratherBigPayload = new byte[2048]; - Arrays.fill(ratherBigPayload, (byte) 65); + byte[] testPayload = new byte[2048]; + Arrays.fill(testPayload, (byte) 65); KafkaBinderConfigurationProperties binderConfiguration = createConfigurationProperties(); binderConfiguration.setMinPartitionCount(4); KafkaTestBinder binder = new KafkaTestBinder(binderConfiguration); @@ -406,18 +397,21 @@ public class KafkaBinderTests extends producerProperties.setPartitionKeyExpression(spelExpressionParser.parseExpression("payload")); ExtendedConsumerProperties consumerProperties = createConsumerProperties(); long uniqueBindingId = System.currentTimeMillis(); - Binding producerBinding = binder.bindProducer("foo" + uniqueBindingId + ".0", moduleOutputChannel, producerProperties); - Binding consumerBinding = binder.bindConsumer("foo" + uniqueBindingId + ".0", null, moduleInputChannel, consumerProperties); - Message message = org.springframework.integration.support.MessageBuilder.withPayload(ratherBigPayload).build(); + Binding producerBinding = binder.bindProducer("foo" + uniqueBindingId + ".0", + moduleOutputChannel, producerProperties); + Binding consumerBinding = binder.bindConsumer("foo" + uniqueBindingId + ".0", null, + moduleInputChannel, consumerProperties); + Message message = org.springframework.integration.support.MessageBuilder.withPayload(testPayload) + .build(); // Let the consumer actually bind to the producer before sending a msg binderBindUnbindLatency(); moduleOutputChannel.send(message); Message inbound = receive(moduleInputChannel); - assertNotNull(inbound); - assertArrayEquals(ratherBigPayload, (byte[]) inbound.getPayload()); - Collection partitions = binder.getCoreBinder().getConnectionFactory().getPartitions( - "foo" + uniqueBindingId + ".0"); - assertThat(partitions, hasSize(5)); + assertThat(inbound).isNotNull(); + assertThat((byte[]) inbound.getPayload()).containsExactly(testPayload); + Collection partitions = binder.getCoreBinder().getConnectionFactory() + .getPartitions("foo" + uniqueBindingId + ".0"); + assertThat(partitions).hasSize(5); producerBinding.unbind(); consumerBinding.unbind(); } @@ -439,13 +433,13 @@ public class KafkaBinderTests extends output.send(new GenericMessage<>(testPayload1.getBytes())); binder.bindConsumer(testTopicName, "startOffsets", input1, createConsumerProperties()); Message receivedMessage1 = (Message) receive(input1); - assertThat(receivedMessage1, not(nullValue())); - assertThat(new String(receivedMessage1.getPayload()), equalTo(testPayload1)); + assertThat(receivedMessage1).isNotNull(); + assertThat(new String(receivedMessage1.getPayload())).isEqualTo(testPayload1); String testPayload2 = "foo-" + UUID.randomUUID().toString(); output.send(new GenericMessage<>(testPayload2.getBytes())); Message receivedMessage2 = (Message) receive(input1); - assertThat(receivedMessage2, not(nullValue())); - assertThat(new String(receivedMessage2.getPayload()), equalTo(testPayload2)); + assertThat(receivedMessage2).isNotNull(); + assertThat(new String(receivedMessage2.getPayload())).isEqualTo(testPayload2); } @Test @@ -463,12 +457,12 @@ public class KafkaBinderTests extends properties.getExtension().setStartOffset(KafkaMessageChannelBinder.StartOffset.earliest); binder.bindConsumer(testTopicName, "startOffsets", input1, properties); Message receivedMessage1 = (Message) receive(input1); - assertThat(receivedMessage1, not(nullValue())); + assertThat(receivedMessage1).isNotNull(); String testPayload2 = "foo-" + UUID.randomUUID().toString(); output.send(new GenericMessage<>(testPayload2.getBytes())); Message receivedMessage2 = (Message) receive(input1); - assertThat(receivedMessage2, not(nullValue())); - assertThat(new String(receivedMessage2.getPayload()), equalTo(testPayload2)); + assertThat(receivedMessage2).isNotNull(); + assertThat(new String(receivedMessage2.getPayload())).isEqualTo(testPayload2); } @Test @@ -480,21 +474,22 @@ public class KafkaBinderTests extends String testTopicName = UUID.randomUUID().toString(); - Binding producerBinding = binder.bindProducer(testTopicName, output, createProducerProperties()); + Binding producerBinding = binder.bindProducer(testTopicName, output, + createProducerProperties()); String testPayload1 = "foo-" + UUID.randomUUID().toString(); output.send(new GenericMessage<>(testPayload1.getBytes())); ExtendedConsumerProperties properties = createConsumerProperties(); properties.getExtension().setResetOffsets(true); properties.getExtension().setStartOffset(KafkaMessageChannelBinder.StartOffset.earliest); - Binding consumerBinding = - binder.bindConsumer(testTopicName, "startOffsets", input1, properties); + Binding consumerBinding = binder.bindConsumer(testTopicName, "startOffsets", input1, + properties); Message receivedMessage1 = (Message) receive(input1); - assertThat(receivedMessage1, not(nullValue())); + assertThat(receivedMessage1).isNotNull(); String testPayload2 = "foo-" + UUID.randomUUID().toString(); output.send(new GenericMessage<>(testPayload2.getBytes())); Message receivedMessage2 = (Message) receive(input1); - assertThat(receivedMessage2, not(nullValue())); - assertThat(new String(receivedMessage2.getPayload()), equalTo(testPayload2)); + assertThat(receivedMessage2).isNotNull(); + assertThat(new String(receivedMessage2.getPayload())).isEqualTo(testPayload2); consumerBinding.unbind(); String testPayload3 = "foo-" + UUID.randomUUID().toString(); @@ -503,17 +498,16 @@ public class KafkaBinderTests extends ExtendedConsumerProperties properties2 = createConsumerProperties(); properties2.getExtension().setResetOffsets(true); properties2.getExtension().setStartOffset(KafkaMessageChannelBinder.StartOffset.earliest); - consumerBinding = - binder.bindConsumer(testTopicName, "startOffsets", input1, properties2); + consumerBinding = binder.bindConsumer(testTopicName, "startOffsets", input1, properties2); Message receivedMessage4 = (Message) receive(input1); - assertThat(receivedMessage4, not(nullValue())); - assertThat(new String(receivedMessage4.getPayload()), equalTo(testPayload1)); + assertThat(receivedMessage4).isNotNull(); + assertThat(new String(receivedMessage4.getPayload())).isEqualTo(testPayload1); Message receivedMessage5 = (Message) receive(input1); - assertThat(receivedMessage5, not(nullValue())); - assertThat(new String(receivedMessage5.getPayload()), equalTo(testPayload2)); + assertThat(receivedMessage5).isNotNull(); + assertThat(new String(receivedMessage5.getPayload())).isEqualTo(testPayload2); Message receivedMessage6 = (Message) receive(input1); - assertThat(receivedMessage6, not(nullValue())); - assertThat(new String(receivedMessage6.getPayload()), equalTo(testPayload3)); + assertThat(receivedMessage6).isNotNull(); + assertThat(new String(receivedMessage6.getPayload())).isEqualTo(testPayload3); consumerBinding.unbind(); producerBinding.unbind(); } @@ -531,28 +525,29 @@ public class KafkaBinderTests extends QueueChannel input1 = new QueueChannel(); String testTopicName = UUID.randomUUID().toString(); - Binding producerBinding = binder.bindProducer(testTopicName, output, createProducerProperties()); + Binding producerBinding = binder.bindProducer(testTopicName, output, + createProducerProperties()); String testPayload1 = "foo-" + UUID.randomUUID().toString(); output.send(new GenericMessage<>(testPayload1.getBytes())); ExtendedConsumerProperties firstConsumerProperties = createConsumerProperties(); - Binding consumerBinding = binder.bindConsumer(testTopicName, "startOffsets", input1, firstConsumerProperties); + Binding consumerBinding = binder.bindConsumer(testTopicName, "startOffsets", input1, + firstConsumerProperties); Message receivedMessage1 = (Message) receive(input1); - assertThat(receivedMessage1, not(nullValue())); + assertThat(receivedMessage1).isNotNull(); String testPayload2 = "foo-" + UUID.randomUUID().toString(); output.send(new GenericMessage<>(testPayload2.getBytes())); Message receivedMessage2 = (Message) receive(input1); - assertThat(receivedMessage2, not(nullValue())); - assertThat(new String(receivedMessage2.getPayload()), equalTo(testPayload2)); + assertThat(receivedMessage2).isNotNull(); + assertThat(new String(receivedMessage2.getPayload())).isNotNull(); consumerBinding.unbind(); String testPayload3 = "foo-" + UUID.randomUUID().toString(); output.send(new GenericMessage<>(testPayload3.getBytes())); - consumerBinding = - binder.bindConsumer(testTopicName, "startOffsets", input1, createConsumerProperties()); + consumerBinding = binder.bindConsumer(testTopicName, "startOffsets", input1, createConsumerProperties()); Message receivedMessage3 = (Message) receive(input1); - assertThat(receivedMessage3, not(nullValue())); - assertThat(new String(receivedMessage3.getPayload()), equalTo(testPayload3)); + assertThat(receivedMessage3).isNotNull(); + assertThat(new String(receivedMessage3.getPayload())).isEqualTo(testPayload3); consumerBinding.unbind(); producerBinding.unbind(); } @@ -572,8 +567,10 @@ public class KafkaBinderTests extends DirectFieldAccessor accessor = new DirectFieldAccessor(extractEndpoint(producerBinding)); MessageHandler handler = (MessageHandler) accessor.getPropertyValue("handler"); DirectFieldAccessor accessor1 = new DirectFieldAccessor(handler); - ProducerConfiguration producerConfiguration = (ProducerConfiguration) accessor1.getPropertyValue("producerConfiguration"); - assertTrue("Kafka Sync Producer should have been enabled.", producerConfiguration.getProducerMetadata().isSync()); + ProducerConfiguration producerConfiguration = (ProducerConfiguration) accessor1 + .getPropertyValue("producerConfiguration"); + assertThat(producerConfiguration.getProducerMetadata().isSync()) + .withFailMessage("Kafka Sync Producer should have been enabled."); producerBinding.unbind(); } @@ -594,14 +591,14 @@ public class KafkaBinderTests extends binder.setMetadataRetryOperations(metatadataRetrievalRetryOperations); DirectChannel output = new DirectChannel(); ExtendedConsumerProperties consumerProperties = createConsumerProperties(); - String testTopicName = "nonexisting" + System.currentTimeMillis(); + String testTopicName = "nonexisting" + System.currentTimeMillis(); try { binder.doBindConsumer(testTopicName, "test", output, consumerProperties); fail(); } catch (Exception e) { - assertTrue(e instanceof BinderException); - assertThat(e.getMessage(), containsString("Topic " + testTopicName + " does not exist")); + assertThat(e).isInstanceOf(BinderException.class); + assertThat(e).hasMessageContaining("Topic " + testTopicName + " does not exist"); } try { @@ -609,13 +606,13 @@ public class KafkaBinderTests extends fail(); } catch (Exception e) { - assertThat(e, instanceOf(TopicNotFoundException.class)); + assertThat(e).isInstanceOf(TopicNotFoundException.class); } } @Test public void testAutoConfigureTopicsDisabledSucceedsIfTopicExisting() throws Exception { - String testTopicName = "existing" + System.currentTimeMillis(); + String testTopicName = "existing" + System.currentTimeMillis(); AdminUtils.createTopic(kafkaTestSupport.getZkClient(), testTopicName, 5, 1, new Properties()); KafkaBinderConfigurationProperties configurationProperties = createConfigurationProperties(); configurationProperties.setAutoCreateTopics(false); @@ -632,7 +629,7 @@ public class KafkaBinderTests extends @Test public void testAutoAddPartitionsDisabledFailsIfTopicUnderpartitioned() throws Exception { - String testTopicName = "existing" + System.currentTimeMillis(); + String testTopicName = "existing" + System.currentTimeMillis(); AdminUtils.createTopic(kafkaTestSupport.getZkClient(), testTopicName, 1, 1, new Properties()); KafkaBinderConfigurationProperties configurationProperties = createConfigurationProperties(); configurationProperties.setAutoAddPartitions(false); @@ -650,16 +647,16 @@ public class KafkaBinderTests extends binder.doBindConsumer(testTopicName, "test", output, consumerProperties); } catch (Exception e) { - assertThat(e, instanceOf(BinderException.class)); - assertThat(e.getMessage(), - containsString("The number of expected partitions was: 3, but 1 has been found instead")); + assertThat(e).isInstanceOf(BinderException.class); + assertThat(e) + .hasMessageContaining("The number of expected partitions was: 3, but 1 has been found instead"); } } @Test public void testAutoAddPartitionsDisabledSucceedsIfTopicPartitionedCorrectly() throws Exception { - String testTopicName = "existing" + System.currentTimeMillis(); + String testTopicName = "existing" + System.currentTimeMillis(); AdminUtils.createTopic(kafkaTestSupport.getZkClient(), testTopicName, 6, 1, new Properties()); KafkaBinderConfigurationProperties configurationProperties = createConfigurationProperties(); configurationProperties.setAutoAddPartitions(false); @@ -682,14 +679,13 @@ public class KafkaBinderTests extends Binding binding = binder.doBindConsumer(testTopicName, "test", output, consumerProperties); - Partition[] listenedPartitions - = TestUtils.getPropertyValue(binding, "endpoint.val$messageListenerContainer.partitions", Partition[].class); + Partition[] listenedPartitions = TestUtils.getPropertyValue(binding, + "endpoint.val$messageListenerContainer.partitions", Partition[].class); - assertThat(listenedPartitions, arrayWithSize(2)); - assertThat(listenedPartitions, hasItemInArray(new Partition(testTopicName, 2))); - assertThat(listenedPartitions, hasItemInArray(new Partition(testTopicName, 5))); + assertThat(listenedPartitions).hasSize(2); + assertThat(listenedPartitions).contains(new Partition(testTopicName, 2), new Partition(testTopicName, 5)); Collection partitions = binder.getConnectionFactory().getPartitions(testTopicName); - assertThat(partitions, IsCollectionWithSize.hasSize(6)); + assertThat(partitions).hasSize(6); binding.unbind(); } @@ -710,14 +706,14 @@ public class KafkaBinderTests extends binder.setMetadataRetryOperations(metatadataRetrievalRetryOperations); DirectChannel output = new DirectChannel(); ExtendedConsumerProperties consumerProperties = createConsumerProperties(); - String testTopicName = "nonexisting" + System.currentTimeMillis(); + String testTopicName = "nonexisting" + System.currentTimeMillis(); Binding binding = binder.doBindConsumer(testTopicName, "test", output, consumerProperties); binding.unbind(); } @Test public void testPartitionCountNotReduced() throws Exception { - String testTopicName = "existing" + System.currentTimeMillis(); + String testTopicName = "existing" + System.currentTimeMillis(); AdminUtils.createTopic(kafkaTestSupport.getZkClient(), testTopicName, 6, 1, new Properties()); KafkaBinderConfigurationProperties configurationProperties = createConfigurationProperties(); configurationProperties.setAutoAddPartitions(true); @@ -736,13 +732,14 @@ public class KafkaBinderTests extends ExtendedConsumerProperties consumerProperties = createConsumerProperties(); Binding binding = binder.doBindConsumer(testTopicName, "test", output, consumerProperties); binding.unbind(); - TopicMetadata topicMetadata = AdminUtils.fetchTopicMetadataFromZk(testTopicName, kafkaTestSupport.getZkClient()); - assertThat(topicMetadata.partitionsMetadata().size(), equalTo(6)); + TopicMetadata topicMetadata = AdminUtils.fetchTopicMetadataFromZk(testTopicName, + kafkaTestSupport.getZkClient()); + assertThat(topicMetadata.partitionsMetadata().size()).isEqualTo(6); } @Test public void testPartitionCountIncreasedIfAutoAddPartitionsSet() throws Exception { - String testTopicName = "existing" + System.currentTimeMillis(); + String testTopicName = "existing" + System.currentTimeMillis(); AdminUtils.createTopic(kafkaTestSupport.getZkClient(), testTopicName, 1, 1, new Properties()); KafkaBinderConfigurationProperties configurationProperties = createConfigurationProperties(); configurationProperties.setMinPartitionCount(6); @@ -762,8 +759,9 @@ public class KafkaBinderTests extends ExtendedConsumerProperties consumerProperties = createConsumerProperties(); Binding binding = binder.doBindConsumer(testTopicName, "test", output, consumerProperties); binding.unbind(); - TopicMetadata topicMetadata = AdminUtils.fetchTopicMetadataFromZk(testTopicName, kafkaTestSupport.getZkClient()); - assertThat(topicMetadata.partitionsMetadata().size(), equalTo(6)); + TopicMetadata topicMetadata = AdminUtils.fetchTopicMetadataFromZk(testTopicName, + kafkaTestSupport.getZkClient()); + assertThat(topicMetadata.partitionsMetadata().size()).isEqualTo(6); } private static final class FailingInvocationCountingMessageHandler implements MessageHandler { @@ -786,7 +784,8 @@ public class KafkaBinderTests extends public void handleMessage(Message message) throws MessagingException { invocationCount++; Long offset = message.getHeaders().get(KafkaHeaders.OFFSET, Long.class); - // using the offset as key allows to ensure that we don't store duplicate messages on retry + // using the offset as key allows to ensure that we don't store duplicate + // messages on retry if (!receivedMessages.containsKey(offset)) { receivedMessages.put(offset, message); latch.countDown(); diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/RawModeKafkaBinderTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/RawModeKafkaBinderTests.java index a30604a57..775d2428e 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/RawModeKafkaBinderTests.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-kafka/src/test/java/org/springframework/cloud/stream/binder/kafka/RawModeKafkaBinderTests.java @@ -21,7 +21,6 @@ import java.util.Arrays; import org.junit.Ignore; import org.junit.Test; -import org.springframework.cloud.stream.binder.BinderHeaders; import org.springframework.cloud.stream.binder.Binding; import org.springframework.cloud.stream.binder.ExtendedConsumerProperties; import org.springframework.cloud.stream.binder.ExtendedProducerProperties; @@ -35,13 +34,7 @@ import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.support.GenericMessage; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.containsString; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; /** * @author Marius Bogoevici @@ -88,14 +81,14 @@ public class RawModeKafkaBinderTests extends KafkaBinderTests { output.send(new GenericMessage<>(new byte[] { (byte) 2 })); Message receive0 = receive(input0); - assertNotNull(receive0); + assertThat(receive0).isNotNull(); Message receive1 = receive(input1); - assertNotNull(receive1); + assertThat(receive1).isNotNull(); Message receive2 = receive(input2); - assertNotNull(receive2); + assertThat(receive2).isNotNull(); assertThat(Arrays.asList(((byte[]) receive0.getPayload())[0], ((byte[]) receive1.getPayload())[0], - ((byte[]) receive2.getPayload())[0]), containsInAnyOrder((byte) 0, (byte) 1, (byte) 2)); + ((byte[]) receive2.getPayload())[0])).containsExactlyInAnyOrder((byte) 0, (byte) 1, (byte) 2); input0Binding.unbind(); input1Binding.unbind(); @@ -118,7 +111,7 @@ public class RawModeKafkaBinderTests extends KafkaBinderTests { Binding outputBinding = binder.bindProducer("part.0", output, properties); try { AbstractEndpoint endpoint = extractEndpoint(outputBinding); - assertThat(getEndpointRouting(endpoint), containsString("part.0-' + headers['partition']")); + assertThat(getEndpointRouting(endpoint)).contains("part.0-' + headers['partition']"); } catch (UnsupportedOperationException ignored) { @@ -142,29 +135,21 @@ public class RawModeKafkaBinderTests extends KafkaBinderTests { input2.setBeanName("test.input2S"); Binding input2Binding = binder.bindConsumer("part.0", "test", input2, consumerProperties); - Message message2 = MessageBuilder.withPayload(new byte[]{2}) + Message message2 = MessageBuilder.withPayload(new byte[] { 2 }) .setHeader(IntegrationMessageHeaderAccessor.CORRELATION_ID, "foo") .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, 42) - .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_SIZE, 43) - .build(); + .setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_SIZE, 43).build(); output.send(message2); - output.send(new GenericMessage<>(new byte[]{1})); - output.send(new GenericMessage<>(new byte[]{0})); - + output.send(new GenericMessage<>(new byte[] { 1 })); + output.send(new GenericMessage<>(new byte[] { 0 })); Message receive0 = receive(input0); - assertNotNull(receive0); + assertThat(receive0).isNotNull(); Message receive1 = receive(input1); - assertNotNull(receive1); + assertThat(receive1).isNotNull(); Message receive2 = receive(input2); - assertNotNull(receive2); - - - assertThat(Arrays.asList( - ((byte[]) receive0.getPayload())[0], - ((byte[]) receive1.getPayload())[0], - ((byte[]) receive2.getPayload())[0]), - containsInAnyOrder((byte) 0, (byte) 1, (byte) 2)); - + assertThat(receive2).isNotNull(); + assertThat(Arrays.asList(((byte[]) receive0.getPayload())[0], ((byte[]) receive1.getPayload())[0], + ((byte[]) receive2.getPayload())[0])).containsExactlyInAnyOrder((byte) 0, (byte) 1, (byte) 2); input0Binding.unbind(); input1Binding.unbind(); input2Binding.unbind(); @@ -182,14 +167,15 @@ public class RawModeKafkaBinderTests extends KafkaBinderTests { Binding producerBinding = binder.bindProducer("foo.0", moduleOutputChannel, producerProperties); ExtendedConsumerProperties consumerProperties = createConsumerProperties(); consumerProperties.setHeaderMode(HeaderMode.raw); - Binding consumerBinding = binder.bindConsumer("foo.0", "test", moduleInputChannel, consumerProperties); + Binding consumerBinding = binder.bindConsumer("foo.0", "test", moduleInputChannel, + consumerProperties); Message message = MessageBuilder.withPayload("foo".getBytes()).build(); // Let the consumer actually bind to the producer before sending a msg binderBindUnbindLatency(); moduleOutputChannel.send(message); Message inbound = receive(moduleInputChannel); - assertNotNull(inbound); - assertEquals("foo", new String((byte[]) inbound.getPayload())); + assertThat(inbound).isNotNull(); + assertThat(new String((byte[]) inbound.getPayload())).isEqualTo("foo"); producerBinding.unbind(); consumerBinding.unbind(); } @@ -215,13 +201,16 @@ public class RawModeKafkaBinderTests extends KafkaBinderTests { Binding producerBinding = binder.bindProducer("baz.0", moduleOutputChannel, producerProperties); ExtendedConsumerProperties consumerProperties = createConsumerProperties(); consumerProperties.setHeaderMode(HeaderMode.raw); - Binding input1Binding = binder.bindConsumer("baz.0", "test", module1InputChannel, consumerProperties); + Binding input1Binding = binder.bindConsumer("baz.0", "test", module1InputChannel, + consumerProperties); // A new module is using the tap as an input channel String fooTapName = "baz.0"; - Binding input2Binding = binder.bindConsumer(fooTapName, "tap1", module2InputChannel, consumerProperties); + Binding input2Binding = binder.bindConsumer(fooTapName, "tap1", module2InputChannel, + consumerProperties); // Another new module is using tap as an input channel String barTapName = "baz.0"; - Binding input3Binding = binder.bindConsumer(barTapName, "tap2", module3InputChannel, consumerProperties); + Binding input3Binding = binder.bindConsumer(barTapName, "tap2", module3InputChannel, + consumerProperties); Message message = MessageBuilder.withPayload("foo".getBytes()).build(); boolean success = false; @@ -229,20 +218,20 @@ public class RawModeKafkaBinderTests extends KafkaBinderTests { while (!success) { moduleOutputChannel.send(message); Message inbound = receive(module1InputChannel); - assertNotNull(inbound); - assertEquals("foo", new String((byte[]) inbound.getPayload())); + assertThat(inbound).isNotNull(); + assertThat(new String((byte[]) inbound.getPayload())).isEqualTo("foo"); Message tapped1 = receive(module2InputChannel); Message tapped2 = receive(module3InputChannel); if (tapped1 == null || tapped2 == null) { // listener may not have started - assertFalse("Failed to receive tap after retry", retried); + assertThat(retried).isFalse().withFailMessage("Failed to receive tap after retry"); retried = true; continue; } success = true; - assertEquals("foo", new String((byte[]) tapped1.getPayload())); - assertEquals("foo", new String((byte[]) tapped2.getPayload())); + assertThat(new String((byte[]) tapped1.getPayload())).isEqualTo("foo"); + assertThat(new String((byte[]) tapped2.getPayload())).isEqualTo("foo"); } // delete one tap stream is deleted input3Binding.unbind(); @@ -251,31 +240,23 @@ public class RawModeKafkaBinderTests extends KafkaBinderTests { // other tap still receives messages Message tapped = receive(module2InputChannel); - assertNotNull(tapped); + assertThat(tapped).isNotNull(); // removed tap does not - assertNull(receive(module3InputChannel)); + assertThat(receive(module3InputChannel)).isNull(); // re-subscribed tap does receive the message input3Binding = binder.bindConsumer(barTapName, "tap2", module3InputChannel, createConsumerProperties()); - assertNotNull(receive(module3InputChannel)); + assertThat(receive(module3InputChannel)).isNotNull(); // clean up input1Binding.unbind(); input2Binding.unbind(); input3Binding.unbind(); producerBinding.unbind(); - assertFalse(extractEndpoint(input1Binding).isRunning()); - assertFalse(extractEndpoint(input2Binding).isRunning()); - assertFalse(extractEndpoint(input3Binding).isRunning()); - assertFalse(extractEndpoint(producerBinding).isRunning()); + assertThat(extractEndpoint(input1Binding).isRunning()).isFalse(); + assertThat(extractEndpoint(input2Binding).isRunning()).isFalse(); + assertThat(extractEndpoint(input3Binding).isRunning()).isFalse(); + assertThat(extractEndpoint(producerBinding).isRunning()).isFalse(); } - - private void assertMessageReceive(QueueChannel moduleInputChannel, String payload) { - Message inbound = receive(moduleInputChannel); - assertNotNull(inbound); - assertEquals(payload, new String((byte[]) inbound.getPayload())); - assertNull(inbound.getHeaders().get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); - } - } diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/LocalizedQueueConnectionFactoryIntegrationTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/LocalizedQueueConnectionFactoryIntegrationTests.java index b336af862..3d8ddc06d 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/LocalizedQueueConnectionFactoryIntegrationTests.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/LocalizedQueueConnectionFactoryIntegrationTests.java @@ -30,7 +30,7 @@ import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.cloud.stream.test.junit.rabbit.RabbitTestSupport; -import static org.junit.Assert.assertEquals; +import static org.assertj.core.api.Assertions.assertThat; /** @@ -65,7 +65,7 @@ public class LocalizedQueueConnectionFactoryIntegrationTests { ConnectionFactory targetConnectionFactory = this.lqcf.getTargetConnectionFactory("[" + queue.getName() + "]"); RabbitTemplate template = new RabbitTemplate(targetConnectionFactory); template.convertAndSend("", queue.getName(), "foo"); - assertEquals("foo", template.receiveAndConvert(queue.getName())); + assertThat(template.receiveAndConvert(queue.getName())).isEqualTo("foo"); ((CachingConnectionFactory) targetConnectionFactory).destroy(); admin.deleteQueue(queue.getName()); } diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/RabbitBinderCleanerTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/RabbitBinderCleanerTests.java index 927a1f8f6..715ff7fe1 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/RabbitBinderCleanerTests.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/RabbitBinderCleanerTests.java @@ -39,10 +39,7 @@ import org.springframework.cloud.stream.test.junit.rabbit.RabbitTestSupport; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; -import static org.hamcrest.Matchers.containsString; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; /** @@ -116,7 +113,7 @@ public class RabbitBinderCleanerTests { fail("Expected exception"); } catch (RabbitAdminException e) { - assertEquals("Queue " + queueName + " is in use", e.getMessage()); + assertThat(e).hasMessageContaining("Queue " + queueName + " is in use"); } channel.basicCancel(consumerTag); waitForConsumerStateNot(queueName, 1); @@ -125,8 +122,8 @@ public class RabbitBinderCleanerTests { fail("Expected exception"); } catch (RabbitAdminException e) { - assertThat(e.getMessage(), containsString("Cannot delete exchange ")); - assertThat(e.getMessage(), containsString("; it has bindings:")); + assertThat(e).hasMessageContaining("Cannot delete exchange "); + assertThat(e).hasMessageContaining("; it has bindings:"); } return null; } @@ -144,7 +141,7 @@ public class RabbitBinderCleanerTests { } Thread.sleep(100); } - assertTrue("Consumer state remained at " + state + " after 10 seconds", n < 100); + assertThat(n < 100).withFailMessage("Consumer state remained at " + state + " after 10 seconds"); } }); @@ -153,27 +150,27 @@ public class RabbitBinderCleanerTests { rabbitAdmin.deleteQueue(foreignQueue); connectionFactory.destroy(); Map> cleanedMap = cleaner.clean(stream1, false); - assertEquals(2, cleanedMap.size()); + assertThat(cleanedMap).hasSize(2); List cleanedQueues = cleanedMap.get("queues"); // should *not* clean stream2 - assertEquals(10, cleanedQueues.size()); + assertThat(cleanedQueues).hasSize(10); for (int i = 0; i < 5; i++) { - assertEquals(BINDER_PREFIX + stream1 + ".default." + i, cleanedQueues.get(i * 2)); - assertEquals(BINDER_PREFIX + stream1 + ".default." + i + ".dlq", cleanedQueues.get(i * 2 + 1)); + assertThat(cleanedQueues.get(i * 2)).isEqualTo(BINDER_PREFIX + stream1 + ".default." + i); + assertThat(cleanedQueues.get(i * 2 + 1)).isEqualTo(BINDER_PREFIX + stream1 + ".default." + i + ".dlq"); } List cleanedExchanges = cleanedMap.get("exchanges"); - assertEquals(6, cleanedExchanges.size()); + assertThat(cleanedExchanges).hasSize(6); // wild card *should* clean stream2 cleanedMap = cleaner.clean(stream1 + "*", false); - assertEquals(2, cleanedMap.size()); + assertThat(cleanedMap).hasSize(2); cleanedQueues = cleanedMap.get("queues"); - assertEquals(5, cleanedQueues.size()); + assertThat(cleanedQueues).hasSize(5); for (int i = 0; i < 5; i++) { - assertEquals(BINDER_PREFIX + stream2 + ".default." + i, cleanedQueues.get(i)); + assertThat(cleanedQueues.get(i)).isEqualTo(BINDER_PREFIX + stream2 + ".default." + i); } cleanedExchanges = cleanedMap.get("exchanges"); - assertEquals(6, cleanedExchanges.size()); + assertThat(cleanedExchanges).hasSize(6); } public static class AmqpQueue { diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/RabbitBinderTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/RabbitBinderTests.java index 58c34ae19..0f828928d 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/RabbitBinderTests.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-rabbit/src/test/java/org/springframework/cloud/stream/binder/rabbit/RabbitBinderTests.java @@ -63,15 +63,7 @@ import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.MessagingException; import org.springframework.messaging.support.GenericMessage; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.startsWith; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -81,7 +73,8 @@ import static org.mockito.Mockito.when; * @author Gary Russell * @author David Turanski */ -public class RabbitBinderTests extends PartitionCapableBinderTests, ExtendedProducerProperties> { +public class RabbitBinderTests extends + PartitionCapableBinderTests, ExtendedProducerProperties> { private final String CLASS_UNDER_TEST_NAME = RabbitMessageChannelBinder.class.getSimpleName(); @@ -118,10 +111,12 @@ public class RabbitBinderTests extends PartitionCapableBinderTests producerBinding = binder.bindProducer("bad.0", moduleOutputChannel, createProducerProperties()); - Binding consumerBinding = binder.bindConsumer("bad.0", "test", moduleInputChannel, createConsumerProperties()); - Message message = MessageBuilder.withPayload("bad").setHeader(MessageHeaders.CONTENT_TYPE, - "foo/bar").build(); + Binding producerBinding = binder.bindProducer("bad.0", moduleOutputChannel, + createProducerProperties()); + Binding consumerBinding = binder.bindConsumer("bad.0", "test", moduleInputChannel, + createConsumerProperties()); + Message message = MessageBuilder.withPayload("bad").setHeader(MessageHeaders.CONTENT_TYPE, "foo/bar") + .build(); final CountDownLatch latch = new CountDownLatch(3); moduleInputChannel.subscribe(new MessageHandler() { @@ -132,7 +127,7 @@ public class RabbitBinderTests extends PartitionCapableBinderTests producerBinding = binder.bindProducer("props.0", new DirectChannel(), createProducerProperties()); + Binding producerBinding = binder.bindProducer("props.0", new DirectChannel(), + createProducerProperties()); @SuppressWarnings("unchecked") AbstractEndpoint endpoint = extractEndpoint(producerBinding); MessageDeliveryMode mode = TestUtils.getPropertyValue(endpoint, "handler.delegate.defaultDeliveryMode", MessageDeliveryMode.class); - assertEquals(MessageDeliveryMode.PERSISTENT, mode); + assertThat(mode).isEqualTo(MessageDeliveryMode.PERSISTENT); List requestHeaders = TestUtils.getPropertyValue(endpoint, "handler.delegate.headerMapper.requestHeaderMatcher.matchers", List.class); - assertEquals(2, requestHeaders.size()); + assertThat(requestHeaders).hasSize(2); producerBinding.unbind(); - assertFalse(endpoint.isRunning()); - assertFalse(TestUtils.getPropertyValue(endpoint, "handler.delegate.amqpTemplate.transactional", Boolean.class)); + assertThat(endpoint.isRunning()).isFalse(); + assertThat(TestUtils.getPropertyValue(endpoint, "handler.delegate.amqpTemplate.transactional", Boolean.class)) + .isFalse(); ExtendedProducerProperties properties = createProducerProperties(); properties.getExtension().setPrefix("foo."); properties.getExtension().setDeliveryMode(MessageDeliveryMode.NON_PERSISTENT); - properties.getExtension().setRequestHeaderPatterns(new String[] {"foo"}); + properties.getExtension().setRequestHeaderPatterns(new String[] { "foo" }); properties.setPartitionKeyExpression(spelExpressionParser.parseExpression("'foo'")); properties.setPartitionKeyExtractorClass(TestPartitionKeyExtractorClass.class); properties.setPartitionSelectorExpression(spelExpressionParser.parseExpression("0")); @@ -217,18 +213,16 @@ public class RabbitBinderTests extends PartitionCapableBinderTests consumerBinding = binder.bindConsumer("durabletest.0", "tgroup", moduleInputChannel, properties); + Binding consumerBinding = binder.bindConsumer("durabletest.0", "tgroup", moduleInputChannel, + properties); RabbitTemplate template = new RabbitTemplate(this.rabbitAvailableRule.getResource()); template.convertAndSend(TEST_PREFIX + "durabletest.0", "", "foo"); @@ -262,15 +257,15 @@ public class RabbitBinderTests extends PartitionCapableBinderTests consumerBinding = binder.bindConsumer("nondurabletest.0", "tgroup", moduleInputChannel, properties); + Binding consumerBinding = binder.bindConsumer("nondurabletest.0", "tgroup", moduleInputChannel, + properties); consumerBinding.unbind(); - assertNull(admin.getQueueProperties(TEST_PREFIX + "nondurabletest.0.dlq")); + assertThat(admin.getQueueProperties(TEST_PREFIX + "nondurabletest.0.dlq")).isNull(); } @Test @@ -319,7 +315,8 @@ public class RabbitBinderTests extends PartitionCapableBinderTests consumerBinding = binder.bindConsumer("dlqtest", "default", moduleInputChannel, properties); + Binding consumerBinding = binder.bindConsumer("dlqtest", "default", moduleInputChannel, + properties); RabbitTemplate template = new RabbitTemplate(this.rabbitAvailableRule.getResource()); template.convertAndSend("", TEST_PREFIX + "dlqtest.default", "foo"); @@ -328,21 +325,21 @@ public class RabbitBinderTests extends PartitionCapableBinderTests input0Binding = binder.bindConsumer("partDLQ.0", "dlqPartGrp", input0, properties); - Binding defaultConsumerBinding1 = - binder.bindConsumer("partDLQ.0", "default", new QueueChannel(), properties); + Binding defaultConsumerBinding1 = binder.bindConsumer("partDLQ.0", "default", + new QueueChannel(), properties); properties.setInstanceIndex(1); DirectChannel input1 = new DirectChannel(); input1.setBeanName("test.input1DLQ"); Binding input1Binding = binder.bindConsumer("partDLQ.0", "dlqPartGrp", input1, properties); - Binding defaultConsumerBinding2 = binder.bindConsumer("partDLQ.0", "default", new QueueChannel(), properties); + Binding defaultConsumerBinding2 = binder.bindConsumer("partDLQ.0", "default", + new QueueChannel(), properties); ExtendedProducerProperties producerProperties = createProducerProperties(); producerProperties.getExtension().setPrefix("bindertest."); @@ -402,13 +400,13 @@ public class RabbitBinderTests extends PartitionCapableBinderTests(1)); - assertTrue(latch1.await(10, TimeUnit.SECONDS)); + output.send(new GenericMessage<>(1)); + assertThat(latch1.await(10, TimeUnit.SECONDS)).isTrue(); - output.send(new GenericMessage(0)); - assertTrue(latch0.await(10, TimeUnit.SECONDS)); + output.send(new GenericMessage<>(0)); + assertThat(latch0.await(10, TimeUnit.SECONDS)).isTrue(); - output.send(new GenericMessage(1)); + output.send(new GenericMessage<>(1)); RabbitTemplate template = new RabbitTemplate(this.rabbitAvailableRule.getResource()); template.setReceiveTimeout(10000); @@ -416,13 +414,13 @@ public class RabbitBinderTests extends PartitionCapableBinderTests(0)); + output.send(new GenericMessage<>(0)); received = template.receive(streamDLQName); - assertNotNull(received); - assertEquals(0, received.getMessageProperties().getHeaders().get("partition")); + assertThat(received).isNotNull(); + assertThat(received.getMessageProperties().getHeaders()).containsEntry("partition", 0); input0Binding.unbind(); input1Binding.unbind(); @@ -455,13 +453,17 @@ public class RabbitBinderTests extends PartitionCapableBinderTests input0Binding = binder.bindConsumer("partDLQ.1", "dlqPartGrp", input0, consumerProperties); - Binding defaultConsumerBinding1 = binder.bindConsumer("partDLQ.1", "defaultConsumer", new QueueChannel(), consumerProperties); + Binding input0Binding = binder.bindConsumer("partDLQ.1", "dlqPartGrp", input0, + consumerProperties); + Binding defaultConsumerBinding1 = binder.bindConsumer("partDLQ.1", "defaultConsumer", + new QueueChannel(), consumerProperties); consumerProperties.setInstanceIndex(1); DirectChannel input1 = new DirectChannel(); input1.setBeanName("test.input1DLQ"); - Binding input1Binding = binder.bindConsumer("partDLQ.1", "dlqPartGrp", input1, consumerProperties); - Binding defaultConsumerBinding2 = binder.bindConsumer("partDLQ.1", "defaultConsumer", new QueueChannel(), consumerProperties); + Binding input1Binding = binder.bindConsumer("partDLQ.1", "dlqPartGrp", input1, + consumerProperties); + Binding defaultConsumerBinding2 = binder.bindConsumer("partDLQ.1", "defaultConsumer", + new QueueChannel(), consumerProperties); final CountDownLatch latch0 = new CountDownLatch(1); input0.subscribe(new MessageHandler() { @@ -490,10 +492,10 @@ public class RabbitBinderTests extends PartitionCapableBinderTests(1)); - assertTrue(latch1.await(10, TimeUnit.SECONDS)); + assertThat(latch1.await(10, TimeUnit.SECONDS)).isTrue(); output.send(new GenericMessage(0)); - assertTrue(latch0.await(10, TimeUnit.SECONDS)); + assertThat(latch0.await(10, TimeUnit.SECONDS)).isTrue(); output.send(new GenericMessage(1)); @@ -503,13 +505,13 @@ public class RabbitBinderTests extends PartitionCapableBinderTests(0)); received = template.receive(streamDLQName); - assertNotNull(received); - assertEquals(0, received.getMessageProperties().getHeaders().get("partition")); + assertThat(received).isNotNull(); + assertThat(received.getMessageProperties().getHeaders()).containsEntry("partition", 0); input0Binding.unbind(); input1Binding.unbind(); @@ -546,7 +548,8 @@ public class RabbitBinderTests extends PartitionCapableBinderTests consumerBinding = binder.bindConsumer("dlqpubtest", "default", moduleInputChannel, properties); + Binding consumerBinding = binder.bindConsumer("dlqpubtest", "default", moduleInputChannel, + properties); RabbitTemplate template = new RabbitTemplate(this.rabbitAvailableRule.getResource()); template.convertAndSend("", TEST_PREFIX + "dlqpubtest.default", "foo"); @@ -555,13 +558,13 @@ public class RabbitBinderTests extends PartitionCapableBinderTests("foo".getBytes())); output.send(new GenericMessage<>("bar".getBytes())); Object out = spyOn("batching.0.default").receive(false); - assertThat(out, instanceOf(byte[].class)); - assertEquals("\u0000\u0000\u0000\u0003foo\u0000\u0000\u0000\u0003bar", new String((byte[]) out)); + assertThat(out).isInstanceOf(byte[].class); + assertThat(new String((byte[]) out)).isEqualTo("\u0000\u0000\u0000\u0003foo\u0000\u0000\u0000\u0003bar"); ArgumentCaptor captor = ArgumentCaptor.forClass(Object.class); verify(logger).trace(captor.capture()); - assertThat(captor.getValue().toString(), containsString("Compressed 14 to ")); + assertThat(captor.getValue().toString()).contains(("Compressed 14 to ")); QueueChannel input = new QueueChannel(); input.setBeanName("batchingConsumer"); - Binding consumerBinding = binder.bindConsumer("batching.0", "test", input, createConsumerProperties()); + Binding consumerBinding = binder.bindConsumer("batching.0", "test", input, + createConsumerProperties()); output.send(new GenericMessage<>("foo".getBytes())); output.send(new GenericMessage<>("bar".getBytes())); Message in = (Message) input.receive(10000); - assertNotNull(in); - assertEquals("foo", new String(in.getPayload())); + assertThat(in).isNotNull(); + assertThat(new String(in.getPayload())).isEqualTo("foo"); in = (Message) input.receive(10000); - assertNotNull(in); - assertEquals("bar", new String(in.getPayload())); - assertNull(in.getHeaders().get(AmqpHeaders.DELIVERY_MODE)); + assertThat(in).isNotNull(); + assertThat(new String(in.getPayload())).isEqualTo("bar"); + assertThat(in.getHeaders().get(AmqpHeaders.DELIVERY_MODE)).isNull(); producerBinding.unbind(); consumerBinding.unbind(); } /* - * Test late binding due to broker down; queues with and without DLQs, and - * partitioned queues. + * Test late binding due to broker down; queues with and without DLQs, and partitioned + * queues. */ @Test public void testLateBinding() throws Exception { @@ -642,14 +647,16 @@ public class RabbitBinderTests extends PartitionCapableBinderTests rabbitConsumerProperties = createConsumerProperties(); rabbitConsumerProperties.getExtension().setPrefix("latebinder."); - Binding late0ConsumerBinding = binder.bindConsumer("late.0", "test", moduleInputChannel, rabbitConsumerProperties); + Binding late0ConsumerBinding = binder.bindConsumer("late.0", "test", moduleInputChannel, + rabbitConsumerProperties); properties.setPartitionKeyExpression(spelExpressionParser.parseExpression("payload.equals('0') ? 0 : 1")); properties.setPartitionSelectorExpression(spelExpressionParser.parseExpression("hashCode()")); properties.setPartitionCount(2); MessageChannel partOutputChannel = new DirectChannel(); - Binding partlate0ProducerBinding = binder.bindProducer("partlate.0", partOutputChannel, properties); + Binding partlate0ProducerBinding = binder.bindProducer("partlate.0", partOutputChannel, + properties); QueueChannel partInputChannel0 = new QueueChannel(); QueueChannel partInputChannel1 = new QueueChannel(); @@ -658,57 +665,64 @@ public class RabbitBinderTests extends PartitionCapableBinderTests partlate0Consumer0Binding = binder.bindConsumer("partlate.0", "test", partInputChannel0, partLateConsumerProperties); + Binding partlate0Consumer0Binding = binder.bindConsumer("partlate.0", "test", partInputChannel0, + partLateConsumerProperties); partLateConsumerProperties.setInstanceIndex(1); - Binding partlate0Consumer1Binding = binder.bindConsumer("partlate.0", "test", partInputChannel1, partLateConsumerProperties); + Binding partlate0Consumer1Binding = binder.bindConsumer("partlate.0", "test", partInputChannel1, + partLateConsumerProperties); ExtendedProducerProperties noDlqProducerProperties = createProducerProperties(); noDlqProducerProperties.getExtension().setPrefix("latebinder."); MessageChannel noDLQOutputChannel = new DirectChannel(); - Binding noDlqProducerBinding = binder.bindProducer("lateNoDLQ.0", noDLQOutputChannel, noDlqProducerProperties); + Binding noDlqProducerBinding = binder.bindProducer("lateNoDLQ.0", noDLQOutputChannel, + noDlqProducerProperties); QueueChannel noDLQInputChannel = new QueueChannel(); ExtendedConsumerProperties noDlqConsumerProperties = createConsumerProperties(); noDlqConsumerProperties.getExtension().setPrefix("latebinder."); - Binding noDlqConsumerBinding = binder.bindConsumer("lateNoDLQ.0", "test", noDLQInputChannel, noDlqConsumerProperties); + Binding noDlqConsumerBinding = binder.bindConsumer("lateNoDLQ.0", "test", noDLQInputChannel, + noDlqConsumerProperties); MessageChannel outputChannel = new DirectChannel(); - Binding pubSubProducerBinding = binder.bindProducer("latePubSub", outputChannel, noDlqProducerProperties); + Binding pubSubProducerBinding = binder.bindProducer("latePubSub", outputChannel, + noDlqProducerProperties); QueueChannel pubSubInputChannel = new QueueChannel(); noDlqConsumerProperties.getExtension().setDurableSubscription(false); - Binding nonDurableConsumerBinding = binder.bindConsumer("latePubSub", "lategroup", pubSubInputChannel, noDlqConsumerProperties); + Binding nonDurableConsumerBinding = binder.bindConsumer("latePubSub", "lategroup", + pubSubInputChannel, noDlqConsumerProperties); QueueChannel durablePubSubInputChannel = new QueueChannel(); noDlqConsumerProperties.getExtension().setDurableSubscription(true); - Binding durableConsumerBinding = binder.bindConsumer("latePubSub", "lateDurableGroup", durablePubSubInputChannel, noDlqConsumerProperties); + Binding durableConsumerBinding = binder.bindConsumer("latePubSub", "lateDurableGroup", + durablePubSubInputChannel, noDlqConsumerProperties); proxy.start(); moduleOutputChannel.send(new GenericMessage<>("foo")); Message message = moduleInputChannel.receive(10000); - assertNotNull(message); - assertEquals("foo", message.getPayload()); + assertThat(message).isNotNull(); + assertThat(message.getPayload()).isNotNull(); noDLQOutputChannel.send(new GenericMessage<>("bar")); message = noDLQInputChannel.receive(10000); - assertNotNull(message); - assertEquals("bar", message.getPayload()); + assertThat(message); + assertThat(message.getPayload()).isEqualTo("bar"); outputChannel.send(new GenericMessage<>("baz")); message = pubSubInputChannel.receive(10000); - assertNotNull(message); - assertEquals("baz", message.getPayload()); + assertThat(message); + assertThat(message.getPayload()).isEqualTo("baz"); message = durablePubSubInputChannel.receive(10000); - assertNotNull(message); - assertEquals("baz", message.getPayload()); + assertThat(message).isNotNull(); + assertThat(message.getPayload()).isEqualTo("baz"); partOutputChannel.send(new GenericMessage<>("0")); partOutputChannel.send(new GenericMessage<>("1")); message = partInputChannel0.receive(10000); - assertNotNull(message); - assertEquals("0", message.getPayload()); + assertThat(message).isNotNull(); + assertThat(message.getPayload()).isEqualTo("0"); message = partInputChannel1.receive(10000); - assertNotNull(message); - assertEquals("1", message.getPayload()); + assertThat(message).isNotNull(); + assertThat(message.getPayload()).isEqualTo("1"); late0ProducerBinding.unbind(); late0ConsumerBinding.unbind(); @@ -734,41 +748,39 @@ public class RabbitBinderTests extends PartitionCapableBinderTests requestMatchers = TestUtils.getPropertyValue(endpoint, - "headerMapper.requestHeaderMatcher.matchers", + List requestMatchers = TestUtils.getPropertyValue(endpoint, "headerMapper.requestHeaderMatcher.matchers", List.class); - assertEquals(1, requestMatchers.size()); - assertEquals("foo", TestUtils.getPropertyValue(requestMatchers.get(0), "pattern")); + assertThat(requestMatchers).hasSize(1); + assertThat(TestUtils.getPropertyValue(requestMatchers.get(0), "pattern")).isEqualTo("foo"); return container; } private void verifyFooRequestProducer(AbstractEndpoint endpoint) { List requestMatchers = TestUtils.getPropertyValue(endpoint, - "handler.delegate.headerMapper.requestHeaderMatcher.matchers", - List.class); - assertEquals(1, requestMatchers.size()); - assertEquals("foo", TestUtils.getPropertyValue(requestMatchers.get(0), "pattern")); + "handler.delegate.headerMapper.requestHeaderMatcher.matchers", List.class); + assertThat(requestMatchers).hasSize(1); + assertThat(TestUtils.getPropertyValue(requestMatchers.get(0), "pattern")).isEqualTo("foo"); } @Override protected String getEndpointRouting(AbstractEndpoint endpoint) { - return TestUtils.getPropertyValue(endpoint, "handler.delegate.routingKeyExpression", - SpelExpression.class).getExpressionString(); + return TestUtils.getPropertyValue(endpoint, "handler.delegate.routingKeyExpression", SpelExpression.class) + .getExpressionString(); } @Override @@ -778,8 +790,8 @@ public class RabbitBinderTests extends PartitionCapableBinderTests binderFactory = context.getBean(BinderFactory.class); Binder binder = binderFactory.getBinder(null); - assertThat(binder, instanceOf(RabbitMessageChannelBinder.class)); + assertThat(binder).isInstanceOf(RabbitMessageChannelBinder.class); DirectFieldAccessor binderFieldAccessor = new DirectFieldAccessor(binder); ConnectionFactory binderConnectionFactory = (ConnectionFactory) binderFieldAccessor .getPropertyValue("connectionFactory"); - assertThat(binderConnectionFactory, instanceOf(CachingConnectionFactory.class)); + assertThat(binderConnectionFactory).isInstanceOf(CachingConnectionFactory.class); ConnectionFactory connectionFactory = context.getBean(ConnectionFactory.class); - assertThat(binderConnectionFactory, is(connectionFactory)); + assertThat(binderConnectionFactory).isSameAs(connectionFactory); CompositeHealthIndicator bindersHealthIndicator = context.getBean("bindersHealthIndicator", CompositeHealthIndicator.class); DirectFieldAccessor directFieldAccessor = new DirectFieldAccessor(bindersHealthIndicator); - assertNotNull(bindersHealthIndicator); + assertThat(bindersHealthIndicator).isNotNull(); @SuppressWarnings("unchecked") Map healthIndicators = (Map) directFieldAccessor .getPropertyValue("indicators"); - assertThat(healthIndicators, hasKey("rabbit")); - assertThat(healthIndicators.get("rabbit").health().getStatus(), equalTo(Status.UP)); + assertThat(healthIndicators).containsKey(("rabbit")); + assertThat(healthIndicators.get("rabbit").health().getStatus()).isEqualTo((Status.UP)); } @Test @@ -115,7 +108,7 @@ public class RabbitBinderModuleTests { "--spring.cloud.stream.rabbit.bindings.output.producer.transacted=true"); BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder = binderFactory.getBinder(null); - assertThat(binder, instanceOf(RabbitMessageChannelBinder.class)); + assertThat(binder).isInstanceOf(RabbitMessageChannelBinder.class); ChannelBindingService channelBindingService = context.getBean(ChannelBindingService.class); DirectFieldAccessor channelBindingServiceAccessor = new DirectFieldAccessor(channelBindingService); Map>> consumerBindings = (Map>>) channelBindingServiceAccessor @@ -123,27 +116,27 @@ public class RabbitBinderModuleTests { Binding inputBinding = consumerBindings.get("input").get(0); SimpleMessageListenerContainer container = TestUtils.getPropertyValue(inputBinding, "endpoint.messageListenerContainer", SimpleMessageListenerContainer.class); - assertTrue(TestUtils.getPropertyValue(container, "transactional", Boolean.class)); + assertThat(TestUtils.getPropertyValue(container, "transactional", Boolean.class)).isTrue(); Map> producerBindings = (Map>) TestUtils .getPropertyValue(channelBindingService, "producerBindings"); Binding outputBinding = producerBindings.get("output"); - assertTrue(TestUtils.getPropertyValue(outputBinding, "endpoint.handler.delegate.amqpTemplate.transactional", - Boolean.class)); + assertThat(TestUtils.getPropertyValue(outputBinding, "endpoint.handler.delegate.amqpTemplate.transactional", + Boolean.class)).isTrue(); DirectFieldAccessor binderFieldAccessor = new DirectFieldAccessor(binder); ConnectionFactory binderConnectionFactory = (ConnectionFactory) binderFieldAccessor .getPropertyValue("connectionFactory"); - assertThat(binderConnectionFactory, instanceOf(CachingConnectionFactory.class)); + assertThat(binderConnectionFactory).isInstanceOf(CachingConnectionFactory.class); ConnectionFactory connectionFactory = context.getBean(ConnectionFactory.class); - assertThat(binderConnectionFactory, is(connectionFactory)); + assertThat(binderConnectionFactory).isSameAs(connectionFactory); CompositeHealthIndicator bindersHealthIndicator = context.getBean("bindersHealthIndicator", CompositeHealthIndicator.class); DirectFieldAccessor directFieldAccessor = new DirectFieldAccessor(bindersHealthIndicator); - assertNotNull(bindersHealthIndicator); + assertThat(bindersHealthIndicator).isNotNull(); @SuppressWarnings("unchecked") Map healthIndicators = (Map) directFieldAccessor .getPropertyValue("indicators"); - assertThat(healthIndicators, hasKey("rabbit")); - assertThat(healthIndicators.get("rabbit").health().getStatus(), equalTo(Status.UP)); + assertThat(healthIndicators).containsKey("rabbit"); + assertThat(healthIndicators.get("rabbit").health().getStatus()).isEqualTo(Status.UP); } @Test @@ -152,23 +145,23 @@ public class RabbitBinderModuleTests { .run("--server.port=0"); BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder = binderFactory.getBinder(null); - assertThat(binder, instanceOf(RabbitMessageChannelBinder.class)); + assertThat(binder).isInstanceOf(RabbitMessageChannelBinder.class); DirectFieldAccessor binderFieldAccessor = new DirectFieldAccessor(binder); ConnectionFactory binderConnectionFactory = (ConnectionFactory) binderFieldAccessor .getPropertyValue("connectionFactory"); - assertThat(binderConnectionFactory, is(MOCK_CONNECTION_FACTORY)); + assertThat(binderConnectionFactory).isSameAs(MOCK_CONNECTION_FACTORY); ConnectionFactory connectionFactory = context.getBean(ConnectionFactory.class); - assertThat(binderConnectionFactory, is(connectionFactory)); + assertThat(binderConnectionFactory).isSameAs(connectionFactory); CompositeHealthIndicator bindersHealthIndicator = context.getBean("bindersHealthIndicator", CompositeHealthIndicator.class); - assertNotNull(bindersHealthIndicator); + assertThat(bindersHealthIndicator).isNotNull(); DirectFieldAccessor directFieldAccessor = new DirectFieldAccessor(bindersHealthIndicator); @SuppressWarnings("unchecked") Map healthIndicators = (Map) directFieldAccessor .getPropertyValue("indicators"); - assertThat(healthIndicators, hasKey("rabbit")); + assertThat(healthIndicators).containsKey("rabbit"); // mock connection factory behaves as if down - assertThat(healthIndicators.get("rabbit").health().getStatus(), equalTo(Status.DOWN)); + assertThat(healthIndicators.get("rabbit").health().getStatus()).isEqualTo(Status.DOWN); } @Test @@ -182,21 +175,21 @@ public class RabbitBinderModuleTests { context = SpringApplication.run(SimpleProcessor.class, params.toArray(new String[params.size()])); BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder = binderFactory.getBinder(null); - assertThat(binder, instanceOf(RabbitMessageChannelBinder.class)); + assertThat(binder).isInstanceOf(RabbitMessageChannelBinder.class); DirectFieldAccessor binderFieldAccessor = new DirectFieldAccessor(binder); ConnectionFactory binderConnectionFactory = (ConnectionFactory) binderFieldAccessor .getPropertyValue("connectionFactory"); ConnectionFactory connectionFactory = context.getBean(ConnectionFactory.class); - assertThat(binderConnectionFactory, not(is(connectionFactory))); + assertThat(binderConnectionFactory).isNotSameAs(connectionFactory); CompositeHealthIndicator bindersHealthIndicator = context.getBean("bindersHealthIndicator", CompositeHealthIndicator.class); - assertNotNull(bindersHealthIndicator); + assertThat(bindersHealthIndicator); DirectFieldAccessor directFieldAccessor = new DirectFieldAccessor(bindersHealthIndicator); @SuppressWarnings("unchecked") Map healthIndicators = (Map) directFieldAccessor .getPropertyValue("indicators"); - assertThat(healthIndicators, hasKey("custom")); - assertThat(healthIndicators.get("custom").health().getStatus(), equalTo(Status.UP)); + assertThat(healthIndicators).containsKey("custom"); + assertThat(healthIndicators.get("custom").health().getStatus()).isEqualTo(Status.UP); } @EnableBinding(Processor.class) diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/pom.xml b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/pom.xml index 6afa5345e..64958b257 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/pom.xml +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 spring-cloud-stream-binder-test @@ -33,5 +34,10 @@ org.springframework.cloud spring-cloud-stream + + org.springframework.boot + spring-boot-starter-test + compile + diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/AbstractBinderTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/AbstractBinderTests.java index 50dc53b3a..b284392ca 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/AbstractBinderTests.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/AbstractBinderTests.java @@ -18,7 +18,6 @@ package org.springframework.cloud.stream.binder; import java.util.UUID; -import org.hamcrest.collection.IsArrayContainingInAnyOrder; import org.junit.After; import org.junit.Test; @@ -32,19 +31,14 @@ import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.PollableChannel; import org.springframework.util.MimeTypeUtils; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasProperty; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; /** * @author Gary Russell * @author Ilayaperumal Gopinathan * @author David Turanski * @author Mark Fisher + * @author Marius Bogoevici */ @SuppressWarnings("unchecked") public abstract class AbstractBinderTests, CP, PP>, CP extends ConsumerProperties, PP extends ProducerProperties> { @@ -79,21 +73,31 @@ public abstract class AbstractBinderTests foo0ProducerBinding = binder.bindProducer("foo.0", new DirectChannel(), createProducerProperties()); - Binding foo0ConsumerBinding = binder.bindConsumer("foo.0", "test", new DirectChannel(), createConsumerProperties()); - Binding foo1ProducerBinding = binder.bindProducer("foo.1", new DirectChannel(), createProducerProperties()); - Binding foo1ConsumerBinding = binder.bindConsumer("foo.1", "test", new DirectChannel(), createConsumerProperties()); - Binding foo2ProducerBinding = binder.bindProducer("foo.2", new DirectChannel(), createProducerProperties()); + Binding foo0ProducerBinding = binder.bindProducer("foo.0", new DirectChannel(), + createProducerProperties()); + Binding foo0ConsumerBinding = binder.bindConsumer("foo.0", "test", new DirectChannel(), + createConsumerProperties()); + Binding foo1ProducerBinding = binder.bindProducer("foo.1", new DirectChannel(), + createProducerProperties()); + Binding foo1ConsumerBinding = binder.bindConsumer("foo.1", "test", new DirectChannel(), + createConsumerProperties()); + Binding foo2ProducerBinding = binder.bindProducer("foo.2", new DirectChannel(), + createProducerProperties()); foo0ProducerBinding.unbind(); - assertFalse(TestUtils.getPropertyValue(foo0ProducerBinding, "endpoint", AbstractEndpoint.class).isRunning()); + assertThat(TestUtils.getPropertyValue(foo0ProducerBinding, "endpoint", AbstractEndpoint.class).isRunning()) + .isFalse(); foo0ConsumerBinding.unbind(); foo1ProducerBinding.unbind(); - assertFalse(TestUtils.getPropertyValue(foo0ConsumerBinding, "endpoint", AbstractEndpoint.class).isRunning()); - assertFalse(TestUtils.getPropertyValue(foo1ProducerBinding, "endpoint", AbstractEndpoint.class).isRunning()); + assertThat(TestUtils.getPropertyValue(foo0ConsumerBinding, "endpoint", AbstractEndpoint.class).isRunning()) + .isFalse(); + assertThat(TestUtils.getPropertyValue(foo1ProducerBinding, "endpoint", AbstractEndpoint.class).isRunning()) + .isFalse(); foo1ConsumerBinding.unbind(); foo2ProducerBinding.unbind(); - assertFalse(TestUtils.getPropertyValue(foo1ConsumerBinding, "endpoint", AbstractEndpoint.class).isRunning()); - assertFalse(TestUtils.getPropertyValue(foo2ProducerBinding, "endpoint", AbstractEndpoint.class).isRunning()); + assertThat(TestUtils.getPropertyValue(foo1ConsumerBinding, "endpoint", AbstractEndpoint.class).isRunning()) + .isFalse(); + assertThat(TestUtils.getPropertyValue(foo2ProducerBinding, "endpoint", AbstractEndpoint.class).isRunning()) + .isFalse(); } @Test @@ -101,18 +105,20 @@ public abstract class AbstractBinderTests producerBinding = binder.bindProducer("foo.0", moduleOutputChannel, createProducerProperties()); - Binding consumerBinding = binder.bindConsumer("foo.0", "test", moduleInputChannel, createConsumerProperties()); - Message message = MessageBuilder.withPayload("foo").setHeader(MessageHeaders.CONTENT_TYPE, - "foo/bar").build(); + Binding producerBinding = binder.bindProducer("foo.0", moduleOutputChannel, + createProducerProperties()); + Binding consumerBinding = binder.bindConsumer("foo.0", "test", moduleInputChannel, + createConsumerProperties()); + Message message = MessageBuilder.withPayload("foo").setHeader(MessageHeaders.CONTENT_TYPE, "foo/bar") + .build(); // Let the consumer actually bind to the producer before sending a msg binderBindUnbindLatency(); moduleOutputChannel.send(message); Message inbound = receive(moduleInputChannel); - assertNotNull(inbound); - assertEquals("foo", inbound.getPayload()); - assertNull(inbound.getHeaders().get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); - assertEquals("foo/bar", inbound.getHeaders().get(MessageHeaders.CONTENT_TYPE)); + assertThat(inbound).isNotNull(); + assertThat(inbound.getPayload()).isEqualTo("foo"); + assertThat(inbound.getHeaders().get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)).isNull(); + assertThat(inbound.getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo("foo/bar"); producerBinding.unbind(); consumerBinding.unbind(); } @@ -147,12 +153,10 @@ public abstract class AbstractBinderTests message = MessageBuilder.withPayload("foo").build(); moduleOutputChannel.send(message); Message inbound = receive(moduleInputChannel); - assertNotNull(inbound); - assertEquals("foo", inbound.getPayload()); - assertNull(inbound.getHeaders().get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); - assertEquals(MimeTypeUtils.TEXT_PLAIN_VALUE, inbound.getHeaders().get(MessageHeaders.CONTENT_TYPE)); + assertThat(inbound).isNotNull(); + assertThat(inbound.getPayload()).isEqualTo("foo"); + assertThat(inbound.getHeaders().get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)).isNull(); + assertThat(inbound.getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo(MimeTypeUtils.TEXT_PLAIN_VALUE); producerBinding.unbind(); consumerBinding.unbind(); } diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/PartitionCapableBinderTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/PartitionCapableBinderTests.java index 904488578..b10b3ad47 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/PartitionCapableBinderTests.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/main/java/org/springframework/cloud/stream/binder/PartitionCapableBinderTests.java @@ -17,10 +17,10 @@ package org.springframework.cloud.stream.binder; import java.util.Arrays; +import java.util.List; import java.util.UUID; -import org.hamcrest.CustomMatcher; -import org.hamcrest.Matcher; +import org.assertj.core.api.Condition; import org.junit.Test; import org.springframework.beans.DirectFieldAccessor; @@ -34,15 +34,7 @@ import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.support.GenericMessage; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasProperty; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.nullValue; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; /** * Tests for binders that support partitioning. @@ -76,12 +68,12 @@ abstract public class PartitionCapableBinderTests(testPayload1.getBytes())); Message receivedMessage1 = (Message) receive(input1); - assertThat(receivedMessage1, not(nullValue())); - assertThat(new String(receivedMessage1.getPayload()), equalTo(testPayload1)); + assertThat(receivedMessage1).isNotNull(); + assertThat(new String(receivedMessage1.getPayload())).isEqualTo(testPayload1); Message receivedMessage2 = (Message) receive(input2); - assertThat(receivedMessage2, not(nullValue())); - assertThat(new String(receivedMessage2.getPayload()), equalTo(testPayload1)); + assertThat(receivedMessage2).isNotNull(); + assertThat(new String(receivedMessage2.getPayload())).isEqualTo(testPayload1); binding2.unbind(); @@ -93,15 +85,15 @@ abstract public class PartitionCapableBinderTests(testPayload3.getBytes())); receivedMessage1 = (Message) receive(input1); - assertThat(receivedMessage1, not(nullValue())); - assertThat(new String(receivedMessage1.getPayload()), equalTo(testPayload2)); + assertThat(receivedMessage1).isNotNull(); + assertThat(new String(receivedMessage1.getPayload())).isEqualTo(testPayload2); receivedMessage1 = (Message) receive(input1); - assertThat(receivedMessage1, not(nullValue())); - assertThat(new String(receivedMessage1.getPayload()), equalTo(testPayload3)); + assertThat(receivedMessage1).isNotNull(); + assertThat(new String(receivedMessage1.getPayload())).isNotNull(); receivedMessage2 = (Message) receive(input2); - assertThat(receivedMessage2, not(nullValue())); - assertThat(new String(receivedMessage2.getPayload()), equalTo(testPayload3)); + assertThat(receivedMessage2).isNotNull(); + assertThat(new String(receivedMessage2.getPayload())).isEqualTo(testPayload3); producerBinding.unbind(); binding1.unbind(); @@ -128,8 +120,8 @@ abstract public class PartitionCapableBinderTests receivedMessage1 = receive(inbound1); - assertThat(receivedMessage1, not(nullValue())); - assertThat(new String((byte[]) receivedMessage1.getPayload()), equalTo(testPayload)); + assertThat(receivedMessage1).isNotNull(); + assertThat(new String((byte[]) receivedMessage1.getPayload())).isEqualTo(testPayload); producerBinding.unbind(); consumerBinding.unbind(); @@ -157,11 +149,11 @@ abstract public class PartitionCapableBinderTests receivedMessage1 = receive(inbound1); - assertThat(receivedMessage1, not(nullValue())); - assertThat(new String((byte[]) receivedMessage1.getPayload()), equalTo(testPayload)); + assertThat(receivedMessage1).isNotNull(); + assertThat(new String((byte[]) receivedMessage1.getPayload())).isEqualTo(testPayload); Message receivedMessage2 = receive(inbound2); - assertThat(receivedMessage2, not(nullValue())); - assertThat(new String((byte[]) receivedMessage2.getPayload()), equalTo(testPayload)); + assertThat(receivedMessage2).isNotNull(); + assertThat(new String((byte[]) receivedMessage2.getPayload())).isEqualTo(testPayload); consumerBinding1.unbind(); consumerBinding2.unbind(); @@ -199,8 +191,8 @@ abstract public class PartitionCapableBinderTests outputBinding = binder.bindProducer("part.0", output, producerProperties); try { AbstractEndpoint endpoint = extractEndpoint(outputBinding); - assertThat(getEndpointRouting(endpoint), - containsString(getExpectedRoutingBaseDestination("part.0", "test") + "-' + headers['partition']")); + assertThat(getEndpointRouting(endpoint)) + .contains(getExpectedRoutingBaseDestination("part.0", "test") + "-' + headers['partition']"); } catch (UnsupportedOperationException ignored) { } @@ -214,36 +206,38 @@ abstract public class PartitionCapableBinderTests(0)); Message receive0 = receive(input0); - assertNotNull(receive0); + assertThat(receive0).isNotNull(); Message receive1 = receive(input1); - assertNotNull(receive1); + assertThat(receive1).isNotNull(); Message receive2 = receive(input2); - assertNotNull(receive2); - - Matcher> fooMatcher = new CustomMatcher>("the message with 'foo' as its correlationId") { + assertThat(receive2).isNotNull(); + Condition> correlationHeadersForPayload2 = new Condition>() { @Override - public boolean matches(Object item) { - IntegrationMessageHeaderAccessor accessor = new IntegrationMessageHeaderAccessor((Message) item); - boolean result = "foo".equals(accessor.getCorrelationId()) && 42 == accessor.getSequenceNumber() + public boolean matches(Message value) { + IntegrationMessageHeaderAccessor accessor = new IntegrationMessageHeaderAccessor(value); + return "foo".equals(accessor.getCorrelationId()) && 42 == accessor.getSequenceNumber() && 43 == accessor.getSequenceSize(); - return result; } }; + if (usesExplicitRouting()) { - assertEquals(0, receive0.getPayload()); - assertEquals(1, receive1.getPayload()); - assertEquals(2, receive2.getPayload()); - assertThat(receive2, fooMatcher); + assertThat(receive0.getPayload()).isEqualTo(0); + assertThat(receive1.getPayload()).isEqualTo(1); + assertThat(receive2.getPayload()).isEqualTo(2); + assertThat(receive2).has(correlationHeadersForPayload2); } else { - assertThat(Arrays.asList((Integer) receive0.getPayload(), (Integer) receive1.getPayload(), - (Integer) receive2.getPayload()), containsInAnyOrder(0, 1, 2)); + List> receivedMessages = Arrays.asList(receive0, receive1, receive2); + assertThat(receivedMessages).extracting("payload").containsExactlyInAnyOrder(0, 1, 2); + Condition> payloadIs2 = new Condition>() { - @SuppressWarnings("unchecked") - Matcher>> containsOur3Messages = containsInAnyOrder(fooMatcher, - hasProperty("payload", equalTo(0)), hasProperty("payload", equalTo(1))); - assertThat(Arrays.asList(receive0, receive1, receive2), containsOur3Messages); + @Override + public boolean matches(Message value) { + return value.getPayload().equals(2); + } + }; + assertThat(receivedMessages).filteredOn(payloadIs2).areExactly(1, correlationHeadersForPayload2); } input0Binding.unbind(); @@ -282,8 +276,8 @@ abstract public class PartitionCapableBinderTests outputBinding = binder.bindProducer("partJ.0", output, producerProperties); if (usesExplicitRouting()) { AbstractEndpoint endpoint = extractEndpoint(outputBinding); - assertThat(getEndpointRouting(endpoint), - containsString(getExpectedRoutingBaseDestination("partJ.0", "test") + "-' + headers['partition']")); + assertThat(getEndpointRouting(endpoint)). + contains(getExpectedRoutingBaseDestination("partJ.0", "test") + "-' + headers['partition']"); } output.send(new GenericMessage<>(2)); @@ -291,21 +285,20 @@ abstract public class PartitionCapableBinderTests(0)); Message receive0 = receive(input0); - assertNotNull(receive0); + assertThat(receive0).isNotNull(); Message receive1 = receive(input1); - assertNotNull(receive1); + assertThat(receive1).isNotNull(); Message receive2 = receive(input2); - assertNotNull(receive2); + assertThat(receive2).isNotNull(); if (usesExplicitRouting()) { - assertEquals(0, receive0.getPayload()); - assertEquals(1, receive1.getPayload()); - assertEquals(2, receive2.getPayload()); + assertThat(receive0.getPayload()).isEqualTo(0); + assertThat(receive1.getPayload()).isEqualTo(1); + assertThat(receive2.getPayload()).isEqualTo(2); } else { - - assertThat(Arrays.asList((Integer) receive0.getPayload(), (Integer) receive1.getPayload(), - (Integer) receive2.getPayload()), containsInAnyOrder(0, 1, 2)); + List> receivedMessages = Arrays.asList(receive0, receive1, receive2); + assertThat(receivedMessages).extracting("payload").containsExactlyInAnyOrder(0, 1, 2); } input0Binding.unbind(); diff --git a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/test/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupportTests.java b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/test/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupportTests.java index e7ab09f0d..183a4e3db 100644 --- a/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/test/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupportTests.java +++ b/spring-cloud-stream-binders/spring-cloud-stream-binder-test/src/test/java/org/springframework/cloud/stream/binder/MessageChannelBinderSupportTests.java @@ -41,9 +41,8 @@ import org.springframework.tuple.TupleBuilder; import org.springframework.util.MimeType; import org.springframework.util.MimeTypeUtils; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; +import static org.assertj.core.api.Assertions.assertThat; + /** * @author Gary Russell @@ -66,61 +65,57 @@ public class MessageChannelBinderSupportTests { byte[] payload = "foo".getBytes(); Message message = MessageBuilder.withPayload(payload).build(); MessageValues converted = binder.serializePayloadIfNecessary(message); - assertSame(payload, converted.getPayload()); + assertThat(converted.getPayload()).isSameAs(payload); Message convertedMessage = converted.toMessage(); - assertSame(payload, convertedMessage.getPayload()); - assertEquals(MimeTypeUtils.APPLICATION_OCTET_STREAM, - contentTypeResolver.resolve(convertedMessage.getHeaders())); + assertThat(convertedMessage.getPayload()).isSameAs(payload); + assertThat(contentTypeResolver.resolve(convertedMessage.getHeaders())) + .isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM); MessageValues reconstructed = binder.deserializePayloadIfNecessary(convertedMessage); payload = (byte[]) reconstructed.getPayload(); - assertSame(converted.getPayload(), payload); - assertNull(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); + assertThat(converted.getPayload()).isSameAs(payload); + assertThat(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)).isNull(); } @Test public void testBytesPassThruContentType() { byte[] payload = "foo".getBytes(); Message message = MessageBuilder.withPayload(payload) - .setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE) - .build(); + .setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE).build(); MessageValues messageValues = binder.serializePayloadIfNecessary(message); Message converted = messageValues.toMessage(); - assertSame(payload, converted.getPayload()); - assertEquals(MimeTypeUtils.APPLICATION_OCTET_STREAM, - contentTypeResolver.resolve(converted.getHeaders())); + assertThat(converted.getPayload()).isSameAs(payload); + assertThat(contentTypeResolver.resolve(converted.getHeaders())) + .isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM); MessageValues reconstructed = binder.deserializePayloadIfNecessary(converted); payload = (byte[]) reconstructed.getPayload(); - assertSame(converted.getPayload(), payload); - assertEquals(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE, - reconstructed.get(MessageHeaders.CONTENT_TYPE)); - assertNull(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); + assertThat(converted.getPayload()).isSameAs(payload); + assertThat(reconstructed.get(MessageHeaders.CONTENT_TYPE)) + .isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); + assertThat(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)).isNull(); } @Test public void testString() throws IOException { - MessageValues convertedValues = binder.serializePayloadIfNecessary( - new GenericMessage("foo")); - + MessageValues convertedValues = binder.serializePayloadIfNecessary(new GenericMessage<>("foo")); Message converted = convertedValues.toMessage(); - assertEquals(MimeTypeUtils.TEXT_PLAIN, - contentTypeResolver.resolve(converted.getHeaders())); + assertThat(contentTypeResolver.resolve(converted.getHeaders())).isEqualTo(MimeTypeUtils.TEXT_PLAIN); MessageValues reconstructed = binder.deserializePayloadIfNecessary(converted); - assertEquals("foo", reconstructed.getPayload()); - assertNull(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); - assertEquals(MimeTypeUtils.TEXT_PLAIN_VALUE, reconstructed.get(MessageHeaders.CONTENT_TYPE)); + assertThat(reconstructed.getPayload()).isEqualTo("foo"); + assertThat(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)).isNull(); + assertThat(reconstructed.get(MessageHeaders.CONTENT_TYPE)).isEqualTo(MimeTypeUtils.TEXT_PLAIN_VALUE); } @Test public void testStringXML() throws IOException { Message message = MessageBuilder .withPayload("") - .setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.TEXT_XML) - .build(); + .setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.TEXT_XML).build(); Message converted = binder.serializePayloadIfNecessary(message).toMessage(); - assertEquals(MimeTypeUtils.TEXT_PLAIN, contentTypeResolver.resolve(converted.getHeaders())); + assertThat(contentTypeResolver.resolve(converted.getHeaders())).isEqualTo(MimeTypeUtils.TEXT_PLAIN); MessageValues reconstructed = binder.deserializePayloadIfNecessary(converted); - assertEquals("", reconstructed.getPayload()); - assertEquals(MimeTypeUtils.TEXT_XML.toString(), reconstructed.get(MessageHeaders.CONTENT_TYPE)); + assertThat(reconstructed.getPayload()) + .isEqualTo(""); + assertThat(reconstructed.get(MessageHeaders.CONTENT_TYPE)).isEqualTo(MimeTypeUtils.TEXT_XML.toString()); } @Test @@ -133,13 +128,11 @@ public class MessageChannelBinderSupportTests { Message converted = convertedValues.toMessage(); - assertEquals(MimeTypeUtils.TEXT_PLAIN, - contentTypeResolver.resolve(converted.getHeaders())); - assertEquals(MimeTypeUtils.APPLICATION_JSON.toString(), - converted.getHeaders().get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); + assertThat(contentTypeResolver.resolve(converted.getHeaders())).isEqualTo(MimeTypeUtils.TEXT_PLAIN); + assertThat(converted.getHeaders().get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)).isEqualTo(MimeTypeUtils.APPLICATION_JSON.toString()); MessageValues reconstructed = binder.deserializePayloadIfNecessary(converted); - assertEquals("{\"foo\":\"foo\"}", reconstructed.getPayload()); - assertEquals(MimeTypeUtils.APPLICATION_JSON_VALUE, reconstructed.get(MessageHeaders.CONTENT_TYPE)); + assertThat(reconstructed.getPayload()).isEqualTo("{\"foo\":\"foo\"}"); + assertThat(reconstructed.get(MessageHeaders.CONTENT_TYPE)).isEqualTo(MimeTypeUtils.APPLICATION_JSON_VALUE); } @Test @@ -148,59 +141,24 @@ public class MessageChannelBinderSupportTests { .copyHeaders(Collections.singletonMap(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON)) .build(); MessageValues reconstructed = binder.deserializePayloadIfNecessary(inbound); - assertEquals("{\"foo\":\"bar\"}", reconstructed.getPayload()); - assertEquals(MimeTypeUtils.APPLICATION_JSON, reconstructed.get(MessageHeaders.CONTENT_TYPE)); + assertThat(reconstructed.getPayload()).isEqualTo("{\"foo\":\"bar\"}"); + assertThat(reconstructed.get(MessageHeaders.CONTENT_TYPE)).isEqualTo(MimeTypeUtils.APPLICATION_JSON); } @Test public void testPojoSerialization() { - MessageValues convertedValues = binder.serializePayloadIfNecessary( - new GenericMessage(new Foo("bar"))); + MessageValues convertedValues = binder.serializePayloadIfNecessary(new GenericMessage<>(new Foo("bar"))); Message converted = convertedValues.toMessage(); MimeType mimeType = contentTypeResolver.resolve(converted.getHeaders()); - assertEquals("application", mimeType.getType()); - assertEquals("x-java-object", mimeType.getSubtype()); - assertEquals(Foo.class.getName(), mimeType.getParameter("type")); + assertThat(mimeType.getType()).isEqualTo("application"); + assertThat(mimeType.getSubtype()).isEqualTo("x-java-object"); + assertThat(mimeType.getParameter("type")).isEqualTo(Foo.class.getName()); MessageValues reconstructed = binder.deserializePayloadIfNecessary(converted); - assertEquals("bar", ((Foo) reconstructed.getPayload()).getBar()); - assertNull(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); - assertEquals("application/x-java-object;type=org.springframework.cloud.stream.binder.MessageChannelBinderSupportTests$Foo", - reconstructed.get(MessageHeaders.CONTENT_TYPE)); - } - - @Test - public void testPojoWithXJavaObjectMimeTypeNoType() { - MessageValues convertedValues = binder.serializePayloadIfNecessary( - new GenericMessage(new Foo("bar"))); - Message converted = convertedValues.toMessage(); - MimeType mimeType = contentTypeResolver.resolve(converted.getHeaders()); - assertEquals("application", mimeType.getType()); - assertEquals("x-java-object", mimeType.getSubtype()); - assertEquals(Foo.class.getName(), mimeType.getParameter("type")); - - MessageValues reconstructed = binder.deserializePayloadIfNecessary(converted); - assertEquals("bar", ((Foo) reconstructed.getPayload()).getBar()); - assertNull(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); - assertEquals("application/x-java-object;type=org.springframework.cloud.stream.binder.MessageChannelBinderSupportTests$Foo", - reconstructed.get(MessageHeaders.CONTENT_TYPE)); - } - - @Test - public void testPojoWithXJavaObjectMimeTypeExplicitType() { - MessageValues convertedValues = binder.serializePayloadIfNecessary( - new GenericMessage(new Foo("bar"))); - Message converted = convertedValues.toMessage(); - MimeType mimeType = contentTypeResolver.resolve(converted.getHeaders()); - assertEquals("application", mimeType.getType()); - assertEquals("x-java-object", mimeType.getSubtype()); - assertEquals(Foo.class.getName(), mimeType.getParameter("type")); - - MessageValues reconstructed = binder.deserializePayloadIfNecessary(converted); - assertEquals("bar", ((Foo) reconstructed.getPayload()).getBar()); - assertNull(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); - assertEquals("application/x-java-object;type=org.springframework.cloud.stream.binder.MessageChannelBinderSupportTests$Foo", - reconstructed.get(MessageHeaders.CONTENT_TYPE)); + assertThat(((Foo) reconstructed.getPayload()).getBar()).isEqualTo("bar"); + assertThat(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)).isNull(); + assertThat(reconstructed.get(MessageHeaders.CONTENT_TYPE)).isEqualTo( + "application/x-java-object;type=org.springframework.cloud.stream.binder.MessageChannelBinderSupportTests$Foo"); } @Test @@ -209,50 +167,50 @@ public class MessageChannelBinderSupportTests { MessageValues convertedValues = binder.serializePayloadIfNecessary(new GenericMessage<>(payload)); Message converted = convertedValues.toMessage(); MimeType mimeType = contentTypeResolver.resolve(converted.getHeaders()); - assertEquals("application", mimeType.getType()); - assertEquals("x-java-object", mimeType.getSubtype()); - assertEquals(DefaultTuple.class.getName(), mimeType.getParameter("type")); + assertThat(mimeType.getType()).isEqualTo("application"); + assertThat(mimeType.getSubtype()).isEqualTo("x-java-object"); + assertThat(mimeType.getParameter("type")).isEqualTo(DefaultTuple.class.getName()); MessageValues reconstructed = binder.deserializePayloadIfNecessary(converted); - assertEquals("bar", ((Tuple) reconstructed.getPayload()).getString("foo")); - assertNull(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)); - assertEquals("application/x-java-object;type=org.springframework.tuple.DefaultTuple", - reconstructed.get(MessageHeaders.CONTENT_TYPE)); + assertThat(((Tuple) reconstructed.getPayload()).getString("foo")).isEqualTo("bar"); + assertThat(reconstructed.get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)).isNull(); + assertThat(reconstructed.get(MessageHeaders.CONTENT_TYPE)) + .isEqualTo("application/x-java-object;type=org.springframework.tuple.DefaultTuple"); } @Test public void mimeTypeIsSimpleObject() throws ClassNotFoundException { MimeType mt = JavaClassMimeTypeConversion.mimeTypeFromObject(new Object()); String className = JavaClassMimeTypeConversion.classNameFromMimeType(mt); - assertEquals(Object.class, Class.forName(className)); + assertThat(Class.forName(className)).isEqualTo(Object.class); } @Test public void mimeTypeIsObjectArray() throws ClassNotFoundException { MimeType mt = JavaClassMimeTypeConversion.mimeTypeFromObject(new String[0]); String className = JavaClassMimeTypeConversion.classNameFromMimeType(mt); - assertEquals(String[].class, Class.forName(className)); + assertThat(Class.forName(className)).isEqualTo(String[].class); } @Test public void mimeTypeIsMultiDimensionalObjectArray() throws ClassNotFoundException { MimeType mt = JavaClassMimeTypeConversion.mimeTypeFromObject(new String[0][0][0]); String className = JavaClassMimeTypeConversion.classNameFromMimeType(mt); - assertEquals(String[][][].class, Class.forName(className)); + assertThat(Class.forName(className)).isEqualTo(String[][][].class); } @Test public void mimeTypeIsPrimitiveArray() throws ClassNotFoundException { MimeType mt = JavaClassMimeTypeConversion.mimeTypeFromObject(new int[0]); String className = JavaClassMimeTypeConversion.classNameFromMimeType(mt); - assertEquals(int[].class, Class.forName(className)); + assertThat(Class.forName(className)).isEqualTo(int[].class); } @Test public void mimeTypeIsMultiDimensionalPrimitiveArray() throws ClassNotFoundException { MimeType mt = JavaClassMimeTypeConversion.mimeTypeFromObject(new int[0][0][0]); String className = JavaClassMimeTypeConversion.classNameFromMimeType(mt); - assertEquals(int[][][].class, Class.forName(className)); + assertThat(Class.forName(className)).isEqualTo(int[][][].class); } public static class Foo { diff --git a/spring-cloud-stream-dependencies/pom.xml b/spring-cloud-stream-dependencies/pom.xml index 402ced87b..85c9c5c67 100644 --- a/spring-cloud-stream-dependencies/pom.xml +++ b/spring-cloud-stream-dependencies/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 spring-cloud-dependencies-parent diff --git a/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/ContentTypeOutboundSourceTests.java b/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/ContentTypeOutboundSourceTests.java index 1fe02c860..fd3dd7fce 100644 --- a/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/ContentTypeOutboundSourceTests.java +++ b/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/ContentTypeOutboundSourceTests.java @@ -33,8 +33,7 @@ import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static org.hamcrest.Matchers.equalTo; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; /** * @author Ilayaperumal Gopinathan @@ -56,8 +55,8 @@ public class ContentTypeOutboundSourceTests { testSource.output().send(MessageBuilder.withPayload("{\"message\":\"Hi\"}").build()); Message received = (Message) ((TestSupportBinder) binderFactory.getBinder(null)) .messageCollector().forChannel(testSource.output()).poll(); - assertThat(received.getHeaders().get(MessageHeaders.CONTENT_TYPE).toString(), equalTo("application/json")); - assertThat(received.getPayload(), equalTo("{\"message\":\"Hi\"}")); + assertThat(received.getHeaders().get(MessageHeaders.CONTENT_TYPE).toString()).isEqualTo("application/json"); + assertThat(received).hasFieldOrPropertyWithValue("payload", "{\"message\":\"Hi\"}"); } @EnableBinding(Source.class) diff --git a/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/CustomMessageConverterTests.java b/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/CustomMessageConverterTests.java index dc4bda29a..1ea3e1855 100644 --- a/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/CustomMessageConverterTests.java +++ b/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/CustomMessageConverterTests.java @@ -41,12 +41,8 @@ import org.springframework.messaging.MessageHeaders; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.util.MimeType; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.isA; +import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; /** * @author Ilayaperumal Gopinathan @@ -67,16 +63,15 @@ public class CustomMessageConverterTests { @Test public void testCustomMessageConverter() throws Exception { - assertTrue(customMessageConverters.size() == 2); - assertThat(customMessageConverters, hasItem(isA(FooToBarConverter.class))); - assertThat(customMessageConverters, hasItem(isA(BarToFooConverter.class))); + assertThat(customMessageConverters).hasSize(2); + assertThat(customMessageConverters).extracting("class").contains(FooToBarConverter.class, + BarToFooConverter.class); testSource.output().send(MessageBuilder.withPayload(new Foo("hi")).build()); @SuppressWarnings("unchecked") Message received = (Message) ((TestSupportBinder) binderFactory.getBinder(null)) .messageCollector().forChannel(testSource.output()).poll(1, TimeUnit.SECONDS); Assert.assertThat(received, notNullValue()); - assertThat(received.getHeaders().get(MessageHeaders.CONTENT_TYPE).toString(), - equalTo("test/bar")); + assertThat(received.getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo("test/bar"); } @EnableBinding(Source.class) diff --git a/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/MessageChannelConfigurerTests.java b/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/MessageChannelConfigurerTests.java index 1d6cc1764..80d70fa2a 100644 --- a/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/MessageChannelConfigurerTests.java +++ b/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/MessageChannelConfigurerTests.java @@ -44,9 +44,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.tuple.Tuple; import org.springframework.util.MimeTypeUtils; -import static org.hamcrest.Matchers.instanceOf; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; /** * @author Ilayaperumal Gopinathan @@ -71,15 +69,15 @@ public class MessageChannelConfigurerTests { MessageHandler messageHandler = new MessageHandler() { @Override public void handleMessage(Message message) throws MessagingException { - assertThat(message.getPayload(), instanceOf(Tuple.class)); - assertTrue(((Tuple) message.getPayload()).getFieldNames().get(0).equals("message")); - assertTrue(((Tuple) message.getPayload()).getValue(0).equals("Hi")); + assertThat(message.getPayload()).isInstanceOf(Tuple.class); + assertThat(((Tuple) message.getPayload()).getFieldNames().get(0)).isEqualTo("message"); + assertThat(((Tuple) message.getPayload()).getValue(0)).isEqualTo("Hi"); latch.countDown(); } }; testSink.input().subscribe(messageHandler); testSink.input().send(MessageBuilder.withPayload("{\"message\":\"Hi\"}").build()); - assertTrue(latch.await(10, TimeUnit.SECONDS)); + assertThat(latch.await(10, TimeUnit.SECONDS)); testSink.input().unsubscribe(messageHandler); } @@ -91,10 +89,9 @@ public class MessageChannelConfigurerTests { DirectFieldAccessor converterAccessor = new DirectFieldAccessor(converter); ObjectMapper objectMapper = (ObjectMapper) converterAccessor.getPropertyValue("objectMapper"); // assert that the ObjectMapper used by the converters is compliant with the Boot configuration - assertTrue("SerializationFeature 'WRITE_DATES_AS_TIMESTAMPS' should be disabled", - !objectMapper.getSerializationConfig().isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)); + assertThat(!objectMapper.getSerializationConfig().isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)).withFailMessage("SerializationFeature 'WRITE_DATES_AS_TIMESTAMPS' should be disabled"); // assert that the globally set bean is used by the converters - assertTrue(objectMapper == this.objectMapper); + assertThat(objectMapper).isSameAs(this.objectMapper); } } diff --git a/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/StreamListenerTests.java b/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/StreamListenerTests.java index dbb2e4a4b..ccd350cd2 100644 --- a/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/StreamListenerTests.java +++ b/spring-cloud-stream-integration-tests/src/test/java/org/springframework/cloud/stream/config/StreamListenerTests.java @@ -43,16 +43,7 @@ import org.springframework.messaging.handler.annotation.Headers; import org.springframework.messaging.handler.annotation.Payload; import org.springframework.messaging.handler.annotation.SendTo; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasEntry; -import static org.hamcrest.Matchers.hasProperty; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.nullValue; -import static org.hamcrest.Matchers.startsWith; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; /** @@ -69,42 +60,34 @@ public class StreamListenerTests { String id = UUID.randomUUID().toString(); sink.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") .setHeader("contentType", "application/json").build()); - assertTrue(testSink.latch.await(10, TimeUnit.SECONDS)); - assertThat(testSink.receivedArguments, hasSize(1)); - assertThat(testSink.receivedArguments.get(0), - hasProperty("bar", equalTo("barbar" + id))); + assertThat(testSink.latch.await(10, TimeUnit.SECONDS)); + assertThat(testSink.receivedArguments).hasSize(1); + assertThat(testSink.receivedArguments.get(0)).hasFieldOrPropertyWithValue("bar", "barbar" + id); context.close(); } @Test @SuppressWarnings("unchecked") public void testAnnotatedArguments() throws Exception { - ConfigurableApplicationContext context = SpringApplication - .run(TestPojoWithAnnotatedArguments.class, "--server.port=0"); + 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("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json") - .setHeader("testHeader", "testValue").build()); - assertThat(testPojoWithAnnotatedArguments.receivedArguments, hasSize(3)); - assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(0), - instanceOf(FooPojo.class)); - assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(0), - hasProperty("bar", equalTo("barbar" + id))); - assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(1), - instanceOf(Map.class)); - assertThat( - (Map) testPojoWithAnnotatedArguments.receivedArguments - .get(1), - hasEntry(MessageHeaders.CONTENT_TYPE, "application/json")); - assertThat((Map) testPojoWithAnnotatedArguments.receivedArguments - .get(1), hasEntry(equalTo("testHeader"), equalTo("testValue"))); - assertThat((String) testPojoWithAnnotatedArguments.receivedArguments.get(2), - equalTo("application/json")); + sink.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") + .setHeader("contentType", "application/json").setHeader("testHeader", "testValue").build()); + assertThat(testPojoWithAnnotatedArguments.receivedArguments).hasSize(3); + assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(0)).isInstanceOf(FooPojo.class); + assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(0)).hasFieldOrPropertyWithValue("bar", + "barbar" + id); + assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(1)).isInstanceOf(Map.class); + assertThat((Map) testPojoWithAnnotatedArguments.receivedArguments.get(1)) + .containsEntry(MessageHeaders.CONTENT_TYPE, "application/json"); + assertThat((Map) testPojoWithAnnotatedArguments.receivedArguments.get(1)) + .containsEntry("testHeader", "testValue"); + assertThat(testPojoWithAnnotatedArguments.receivedArguments.get(2)).isEqualTo("application/json"); context.close(); } @@ -123,61 +106,49 @@ public class StreamListenerTests { .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); TestStringProcessor testStringProcessor = context .getBean(TestStringProcessor.class); - assertThat(testStringProcessor.receivedPojos, hasSize(1)); - assertThat(testStringProcessor.receivedPojos.get(0), - hasProperty("bar", equalTo("barbar" + id))); - assertThat(message, not(nullValue(Message.class))); - assertThat(message.getPayload(), equalTo("barbar" + id)); + assertThat(testStringProcessor.receivedPojos).hasSize(1); + assertThat(testStringProcessor.receivedPojos.get(0)).hasFieldOrPropertyWithValue("bar", "barbar" + id); + assertThat(message).isNotNull(); + assertThat(message.getPayload()).isEqualTo("barbar" + id); context.close(); } @Test @SuppressWarnings("unchecked") public void testReturnConversion() throws Exception { - ConfigurableApplicationContext context = SpringApplication.run( - TestPojoWithMimeType.class, - "--spring.cloud.stream.bindings.output.contentType=application/json", - "--server.port=0"); + ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithMimeType.class, + "--spring.cloud.stream.bindings.output.contentType=application/json", "--server.port=0"); MessageCollector collector = context.getBean(MessageCollector.class); Processor processor = context.getBean(Processor.class); String id = UUID.randomUUID().toString(); - processor.input() - .send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json").build()); - TestPojoWithMimeType testPojoWithMimeType = context - .getBean(TestPojoWithMimeType.class); - assertThat(testPojoWithMimeType.receivedPojos, hasSize(1)); - assertThat(testPojoWithMimeType.receivedPojos.get(0), - hasProperty("bar", equalTo("barbar" + id))); - Message message = (Message) collector - .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); - assertThat(message, not(nullValue(Message.class))); - assertThat(message.getPayload(), equalTo("{\"qux\":\"barbar" + id + "\"}")); - assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE, String.class), - equalTo("application/json")); + processor.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") + .setHeader("contentType", "application/json").build()); + TestPojoWithMimeType testPojoWithMimeType = context.getBean(TestPojoWithMimeType.class); + assertThat(testPojoWithMimeType.receivedPojos).hasSize(1); + assertThat(testPojoWithMimeType.receivedPojos.get(0)).hasFieldOrPropertyWithValue("bar", "barbar" + id); + Message message = (Message) collector.forChannel(processor.output()).poll(1, TimeUnit.SECONDS); + assertThat(message).isNotNull(); + assertThat(message.getPayload()).isEqualTo("{\"qux\":\"barbar" + id + "\"}"); + assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo("application/json"); context.close(); } @Test @SuppressWarnings("unchecked") public void testReturnNoConversion() throws Exception { - ConfigurableApplicationContext context = SpringApplication - .run(TestPojoWithMimeType.class, "--server.port=0"); + ConfigurableApplicationContext context = SpringApplication.run(TestPojoWithMimeType.class, "--server.port=0"); MessageCollector collector = context.getBean(MessageCollector.class); Processor processor = context.getBean(Processor.class); String id = UUID.randomUUID().toString(); - processor.input() - .send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json").build()); - TestPojoWithMimeType testPojoWithMimeType = context - .getBean(TestPojoWithMimeType.class); - assertThat(testPojoWithMimeType.receivedPojos, hasSize(1)); - assertThat(testPojoWithMimeType.receivedPojos.get(0), - hasProperty("bar", equalTo("barbar" + id))); - Message message = (Message) collector - .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); - assertThat(message, not(nullValue(Message.class))); - assertThat(message.getPayload().getQux(), equalTo("barbar" + id)); + processor.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") + .setHeader("contentType", "application/json").build()); + TestPojoWithMimeType testPojoWithMimeType = context.getBean(TestPojoWithMimeType.class); + assertThat(testPojoWithMimeType.receivedPojos).hasSize(1); + assertThat(testPojoWithMimeType.receivedPojos.get(0)).hasFieldOrPropertyWithValue("bar", "barbar" + id); + Message message = (Message) collector.forChannel(processor.output()).poll(1, + TimeUnit.SECONDS); + assertThat(message).isNotNull(); + assertThat(message.getPayload().getQux()).isEqualTo("barbar" + id); context.close(); } @@ -194,13 +165,12 @@ public class StreamListenerTests { .setHeader("contentType", "application/json").build()); TestPojoWithMessageReturn testPojoWithMessageReturn = context .getBean(TestPojoWithMessageReturn.class); - assertThat(testPojoWithMessageReturn.receivedPojos, hasSize(1)); - assertThat(testPojoWithMessageReturn.receivedPojos.get(0), - hasProperty("bar", equalTo("barbar" + id))); + assertThat(testPojoWithMessageReturn.receivedPojos).hasSize(1); + assertThat(testPojoWithMessageReturn.receivedPojos.get(0)).hasFieldOrPropertyWithValue("bar", "barbar" + id); Message message = (Message) collector .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); - assertThat(message, not(nullValue(Message.class))); - assertThat(message.getPayload().getQux(), equalTo("barbar" + id)); + assertThat(message).isNotNull(); + assertThat(message.getPayload().getQux()).isEqualTo("barbar" + id); context.close(); } @@ -216,13 +186,12 @@ public class StreamListenerTests { .setHeader("contentType", "text/plain").build()); TestPojoWithMessageArgument testPojoWithMessageArgument = context .getBean(TestPojoWithMessageArgument.class); - assertThat(testPojoWithMessageArgument.receivedMessages, hasSize(1)); - assertThat(testPojoWithMessageArgument.receivedMessages.get(0).getPayload(), - equalTo("barbar" + id)); + assertThat(testPojoWithMessageArgument.receivedMessages).hasSize(1); + assertThat(testPojoWithMessageArgument.receivedMessages.get(0).getPayload()).isEqualTo("barbar" + id); Message message = (Message) collector .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); - assertThat(message, not(nullValue(Message.class))); - assertThat(message.getPayload().getQux(), equalTo("barbar" + id)); + assertThat(message).isNotNull(); + assertThat(message.getPayload().getQux()).isEqualTo("barbar" + id); context.close(); } @@ -230,39 +199,32 @@ public class StreamListenerTests { @SuppressWarnings("unchecked") public void testDuplicateMapping() throws Exception { try { - ConfigurableApplicationContext context = SpringApplication - .run(TestDuplicateMapping.class, "--server.port=0"); + ConfigurableApplicationContext context = SpringApplication.run(TestDuplicateMapping.class, + "--server.port=0"); fail("Exception expected on duplicate mapping"); } catch (BeanCreationException e) { - assertThat(e.getCause().getMessage(), - startsWith("Duplicate @StreamListener mapping")); + assertThat(e.getCause().getMessage()).startsWith("Duplicate @StreamListener mapping"); } } @Test @SuppressWarnings("unchecked") public void testHandlerBean() throws Exception { - ConfigurableApplicationContext context = SpringApplication.run( - TestHandlerBean.class, - "--spring.cloud.stream.bindings.output.contentType=application/json", - "--server.port=0"); + ConfigurableApplicationContext context = SpringApplication.run(TestHandlerBean.class, + "--spring.cloud.stream.bindings.output.contentType=application/json", "--server.port=0"); MessageCollector collector = context.getBean(MessageCollector.class); Processor processor = context.getBean(Processor.class); String id = UUID.randomUUID().toString(); - processor.input() - .send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") - .setHeader("contentType", "application/json").build()); + processor.input().send(MessageBuilder.withPayload("{\"bar\":\"barbar" + id + "\"}") + .setHeader("contentType", "application/json").build()); HandlerBean handlerBean = context.getBean(HandlerBean.class); - assertThat(handlerBean.receivedPojos, hasSize(1)); - assertThat(handlerBean.receivedPojos.get(0), - hasProperty("bar", equalTo("barbar" + id))); - Message message = (Message) collector - .forChannel(processor.output()).poll(1, TimeUnit.SECONDS); - assertThat(message, not(nullValue(Message.class))); - assertThat(message.getPayload(), equalTo("{\"qux\":\"barbar" + id + "\"}")); - assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE, String.class), - equalTo("application/json")); + assertThat(handlerBean.receivedPojos).hasSize(1); + assertThat(handlerBean.receivedPojos.get(0)).hasFieldOrPropertyWithValue("bar", "barbar" + id); + Message message = (Message) collector.forChannel(processor.output()).poll(1, TimeUnit.SECONDS); + assertThat(message).isNotNull(); + assertThat(message.getPayload()).isEqualTo("{\"qux\":\"barbar" + id + "\"}"); + assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo("application/json"); context.close(); } diff --git a/spring-cloud-stream-test-support/src/test/java/org/springframework/cloud/stream/test/ExampleTest.java b/spring-cloud-stream-test-support/src/test/java/org/springframework/cloud/stream/test/ExampleTest.java index 2f0bfe14f..e5a95a65f 100644 --- a/spring-cloud-stream-test-support/src/test/java/org/springframework/cloud/stream/test/ExampleTest.java +++ b/spring-cloud-stream-test-support/src/test/java/org/springframework/cloud/stream/test/ExampleTest.java @@ -35,8 +35,7 @@ import org.springframework.messaging.support.GenericMessage; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static org.hamcrest.Matchers.equalTo; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; /** * Integration test that validates that {@link org.springframework.cloud.stream.test.binder.TestSupportBinder} applies @@ -48,23 +47,23 @@ import static org.junit.Assert.assertThat; @DirtiesContext public class ExampleTest { - @Autowired - @Bindings(MyProcessor.class) - private Processor processor; - @Autowired private BinderFactory binderFactory; @Autowired private MessageCollector messageCollector; + @Autowired + @Bindings(MyProcessor.class) + private Processor processor; + @Test @SuppressWarnings("unchecked") public void testWiring() { Message message = new GenericMessage<>("hello"); - processor.input().send(message); - Message received = (Message) messageCollector.forChannel(processor.output()).poll(); - assertThat(received.getPayload(), equalTo("hello world")); + this.processor.input().send(message); + Message received = (Message) this.messageCollector.forChannel(this.processor.output()).poll(); + assertThat(received.getPayload()).isEqualTo("hello world"); } @@ -72,9 +71,6 @@ public class ExampleTest { @EnableBinding(Processor.class) public static class MyProcessor { - @Autowired - private Processor channels; - @Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT) public String transform(String in) { return in + " world"; diff --git a/spring-cloud-stream-test-support/src/test/java/org/springframework/cloud/stream/test/matcher/MessageQueueMatcherTest.java b/spring-cloud-stream-test-support/src/test/java/org/springframework/cloud/stream/test/matcher/MessageQueueMatcherTest.java index 52f15f504..1adf733ef 100644 --- a/spring-cloud-stream-test-support/src/test/java/org/springframework/cloud/stream/test/matcher/MessageQueueMatcherTest.java +++ b/spring-cloud-stream-test-support/src/test/java/org/springframework/cloud/stream/test/matcher/MessageQueueMatcherTest.java @@ -27,8 +27,8 @@ import org.junit.Test; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; +import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; /** * Tests for MessageQueueMatcher. @@ -44,71 +44,64 @@ public class MessageQueueMatcherTest { @Test public void testTimeout() { Message msg = new GenericMessage<>("hello"); - MessageQueueMatcher matcher = MessageQueueMatcher.receivesMessageThat(is(msg)).within(2, TimeUnit.MILLISECONDS); + MessageQueueMatcher matcher = MessageQueueMatcher.receivesMessageThat(is(msg)).within(2, + TimeUnit.MILLISECONDS); - boolean result = matcher.matches(queue); - assertThat(result, is(false)); - matcher.describeMismatch(queue, description); - assertThat(description.toString(), is("timed out after 2 milliseconds")); + boolean result = matcher.matches(this.queue); + assertThat(result).isFalse(); + matcher.describeMismatch(this.queue, this.description); + assertThat(this.description.toString()).isEqualTo("timed out after 2 milliseconds"); } @Test public void testMatch() { Message msg = new GenericMessage<>("hello"); MessageQueueMatcher matcher = MessageQueueMatcher.receivesMessageThat(is(msg)); - - queue.offer(msg); - - boolean result = matcher.matches(queue); - assertThat(result, is(true)); + this.queue.offer(msg); + boolean result = matcher.matches(this.queue); + assertThat(result).isTrue(); } @Test - public void testMisMatch() { + public void testMismatch() { Message msg = new GenericMessage<>("hello"); Message other = new GenericMessage<>("world"); - MessageQueueMatcher matcher = MessageQueueMatcher.receivesMessageThat(is(msg)); - - queue.offer(other); - - boolean result = matcher.matches(queue); - assertThat(result, is(false)); - matcher.describeMismatch(queue, description); - assertThat(description.toString(), is("received: <" + other + ">")); + this.queue.offer(other); + boolean result = matcher.matches(this.queue); + assertThat(result).isFalse(); + matcher.describeMismatch(this.queue, this.description); + assertThat(this.description.toString()).isEqualTo(("received: <" + other + ">")); } @Test public void testExtractor() { Message msg = new GenericMessage<>("hello", Collections.singletonMap("foo", (Object) "bar")); - MessageQueueMatcher.Extractor, String> headerExtractor = new MessageQueueMatcher.Extractor, String>("whose 'foo' header") { + MessageQueueMatcher.Extractor, String> headerExtractor = new MessageQueueMatcher.Extractor, String>( + "whose 'foo' header") { @Override public String apply(Message message) { return message.getHeaders().get("foo", String.class); } }; - MessageQueueMatcher matcher = new MessageQueueMatcher<>(is("bar"), -1, null, headerExtractor); - queue.offer(msg); - boolean result = matcher.matches(queue); - assertThat(result, is(true)); - + this.queue.offer(msg); + boolean result = matcher.matches(this.queue); + assertThat(result); matcher = new MessageQueueMatcher<>(is("wizz"), -1, null, headerExtractor); - queue.offer(msg); - result = matcher.matches(queue); - assertThat(result, is(false)); - matcher.describeMismatch(queue, description); - assertThat(description.toString(), is("received: \"bar\"")); + this.queue.offer(msg); + result = matcher.matches(this.queue); + assertThat(result).isFalse(); + matcher.describeMismatch(this.queue, this.description); + assertThat(this.description.toString()).isEqualTo(("received: \"bar\"")); } @Test public void testDescription() { Message msg = new GenericMessage<>("hello"); - MessageQueueMatcher matcher = MessageQueueMatcher.receivesMessageThat(is(msg)); - - description.appendDescriptionOf(matcher); - assertThat(description.toString(), is("Channel to receive a message that is <" + msg + ">")); + this.description.appendDescriptionOf(matcher); + assertThat(this.description.toString()).isEqualTo(("Channel to receive a message that is <" + msg + ">")); } } diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/aggregation/ModuleAggregationTest.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/aggregation/ModuleAggregationTest.java index 05e187e4a..7865a740d 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/aggregation/ModuleAggregationTest.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/aggregation/ModuleAggregationTest.java @@ -29,10 +29,7 @@ import org.springframework.cloud.stream.utils.MockBinderRegistryConfiguration; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.messaging.MessageChannel; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.instanceOf; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; /** * @author Marius Bogoevici @@ -49,8 +46,8 @@ public class ModuleAggregationTest { .run(); SharedChannelRegistry sharedChannelRegistry = aggregatedApplicationContext.getBean(SharedChannelRegistry.class); BindableChannelFactory channelFactory = aggregatedApplicationContext.getBean(BindableChannelFactory.class); - assertNotNull(channelFactory); - assertThat(sharedChannelRegistry.getAll().keySet(), hasSize(2)); + assertThat(channelFactory).isNotNull(); + assertThat(sharedChannelRegistry.getAll().keySet()).hasSize(2); aggregatedApplicationContext.close(); } @@ -67,13 +64,13 @@ public class ModuleAggregationTest { BindableChannelFactory channelFactory = aggregatedApplicationContext.getBean(BindableChannelFactory.class); Object fooOutput = sharedChannelRegistry.get("foo.output"); - assertNotNull(fooOutput); - assertThat(fooOutput, instanceOf(MessageChannel.class)); + assertThat(fooOutput).isNotNull(); + assertThat(fooOutput).isInstanceOf(MessageChannel.class); Object barInput = sharedChannelRegistry.get("bar.input"); - assertNotNull(barInput); - assertThat(barInput, instanceOf(MessageChannel.class)); - assertNotNull(channelFactory); - assertThat(sharedChannelRegistry.getAll().keySet(), hasSize(2)); + assertThat(barInput).isNotNull(); + assertThat(barInput).isInstanceOf(MessageChannel.class); + assertThat(channelFactory).isNotNull(); + assertThat(sharedChannelRegistry.getAll().keySet()).hasSize(2); aggregatedApplicationContext.close(); } diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderAwareChannelResolverTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderAwareChannelResolverTests.java index 66955f11d..4a1a58c65 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderAwareChannelResolverTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderAwareChannelResolverTests.java @@ -55,11 +55,7 @@ import org.springframework.messaging.MessagingException; import org.springframework.messaging.SubscribableChannel; import org.springframework.util.Assert; -import static org.hamcrest.Matchers.hasSize; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; @@ -101,7 +97,7 @@ public class BinderAwareChannelResolverTests { } }; this.channelBindingServiceProperties = new ChannelBindingServiceProperties(); - Map bindings = new HashMap(); + Map bindings = new HashMap<>(); BindingProperties bindingProperties = new BindingProperties(); bindingProperties.setContentType("text/plain"); bindings.put("foo", bindingProperties); @@ -130,11 +126,11 @@ public class BinderAwareChannelResolverTests { @Test public void resolveChannel() { - assertThat(producerBindings, hasSize(0)); + assertThat(producerBindings).hasSize(0); MessageChannel registered = resolver.resolveDestination("foo"); - assertThat(producerBindings, hasSize(1)); + assertThat(producerBindings).hasSize(1); TestBinder.TestBinding binding = producerBindings.get(0); - assertTrue("Must be bound", binding.isBound()); + assertThat(binding.isBound()).describedAs("Must be bound"); DirectChannel testChannel = new DirectChannel(); final CountDownLatch latch = new CountDownLatch(1); final List> received = new ArrayList<>(); @@ -147,26 +143,26 @@ public class BinderAwareChannelResolverTests { } }); binder.bindConsumer("foo", null, testChannel, new ConsumerProperties()); - assertEquals(0, received.size()); + assertThat(received).hasSize(0); registered.send(MessageBuilder.withPayload("hello").build()); try { - assertTrue("latch timed out", latch.await(1, TimeUnit.SECONDS)); + assertThat(latch.await(1, TimeUnit.SECONDS)).describedAs("Latch timed out"); } catch (InterruptedException e) { Thread.currentThread().interrupt(); fail("interrupted while awaiting latch"); } - assertEquals(1, received.size()); - assertEquals("hello", received.get(0).getPayload()); + assertThat(received).hasSize(1); + assertThat(received.get(0).getPayload()).isEqualTo("hello"); context.close(); - assertThat(producerBindings, hasSize(1)); - assertTrue("Must not be bound", !binding.isBound()); + assertThat(producerBindings).hasSize(1); + assertThat(binding.isBound()).isFalse().describedAs("Must not be bound"); } @Test public void resolveNonRegisteredChannel() { MessageChannel other = resolver.resolveDestination("other"); - assertSame(context.getBean("other"), other); + assertThat(context.getBean("other")).isSameAs(other); } @Test @@ -201,7 +197,7 @@ public class BinderAwareChannelResolverTests { Assert.isTrue(dataTypes.length == 1, "Data type must be set for the Foo Channel"); Assert.isTrue(dataTypes[0].equals(String.class), "Data type should be of type String"); verify(binder).bindProducer(eq("foo"), any(MessageChannel.class), any(ProducerProperties.class)); - assertSame(resolved, beanFactory.getBean("foo")); + assertThat(resolved).isSameAs(beanFactory.getBean("foo")); } /** diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderFactoryConfigurationTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderFactoryConfigurationTests.java index d9042ae27..f00b83ace 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderFactoryConfigurationTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/BinderFactoryConfigurationTests.java @@ -38,17 +38,7 @@ import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.util.ObjectUtils; -import static org.hamcrest.Matchers.arrayContaining; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasKey; -import static org.hamcrest.Matchers.hasProperty; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.isEmptyOrNullString; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; /** @@ -59,16 +49,12 @@ public class BinderFactoryConfigurationTests { @Test public void loadBinderTypeRegistry() throws Exception { try { - ConfigurableApplicationContext context = createBinderTestContext( - new String[] {}); + createBinderTestContext(new String[] {}); fail(); } catch (BeanCreationException e) { - assertThat(e.getMessage(), - containsString( - "Cannot create binder factory, no `META-INF/spring.binders` " - + - "resources found on the classpath")); + assertThat(e.getMessage()).contains( + "Cannot create binder factory, no `META-INF/spring.binders` resources found on the classpath"); } } @@ -78,19 +64,19 @@ public class BinderFactoryConfigurationTests { new String[] {"binder1"}); BinderTypeRegistry binderTypeRegistry = context.getBean(BinderTypeRegistry.class); - assertThat(binderTypeRegistry, notNullValue()); - assertThat(binderTypeRegistry.getAll().size(), equalTo(1)); - assertThat(binderTypeRegistry.getAll(), hasKey("binder1")); - assertThat(binderTypeRegistry.get("binder1"), - hasProperty("configurationClasses", arrayContaining(StubBinder1Configuration.class))); + assertThat(binderTypeRegistry).isNotNull(); + assertThat(binderTypeRegistry.getAll()).hasSize(1); + assertThat(binderTypeRegistry.getAll()).containsKey("binder1"); + assertThat((Class[]) binderTypeRegistry.get("binder1").getConfigurationClasses()) + .containsExactlyInAnyOrder(StubBinder1Configuration.class); BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder1 = binderFactory.getBinder("binder1"); - assertThat(binder1, instanceOf(StubBinder1.class)); + assertThat(binder1).isInstanceOf(StubBinder1.class); Binder defaultBinder = binderFactory.getBinder(null); - assertThat(defaultBinder, is(binder1)); + assertThat(defaultBinder).isSameAs(binder1); } @Test @@ -101,7 +87,7 @@ public class BinderFactoryConfigurationTests { BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder1 = binderFactory.getBinder("binder1"); - assertThat(((StubBinder1) binder1).getName(), is(equalTo("foo"))); + assertThat(binder1).hasFieldOrPropertyWithValue("name", "foo"); } @Test @@ -114,7 +100,7 @@ public class BinderFactoryConfigurationTests { BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder1 = binderFactory.getBinder("custom"); - assertThat(((StubBinder1) binder1).getName(), is(equalTo("foo"))); + assertThat(binder1).hasFieldOrPropertyWithValue("name", "foo"); } @Test @@ -128,23 +114,20 @@ public class BinderFactoryConfigurationTests { BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder1 = binderFactory.getBinder("custom"); - assertThat(((StubBinder1) binder1).getName(), isEmptyOrNullString()); + assertThat(binder1).hasFieldOrPropertyWithValue("name", null); } @Test public void loadBinderTypeRegistryWithTwoBinders() throws Exception { - - ConfigurableApplicationContext context = createBinderTestContext( - new String[] { "binder1", "binder2" }); + ConfigurableApplicationContext context = createBinderTestContext(new String[] { "binder1", "binder2" }); BinderTypeRegistry binderTypeRegistry = context.getBean(BinderTypeRegistry.class); - assertThat(binderTypeRegistry, notNullValue()); - assertThat(binderTypeRegistry.getAll().size(), equalTo(2)); - assertThat(binderTypeRegistry.getAll().keySet(), containsInAnyOrder("binder1", "binder2")); - assertThat(binderTypeRegistry.get("binder1"), - hasProperty("configurationClasses", arrayContaining(StubBinder1Configuration.class))); - assertThat(binderTypeRegistry.get("binder2"), - hasProperty("configurationClasses", arrayContaining(StubBinder2ConfigurationA.class, - StubBinder2ConfigurationB.class))); + assertThat(binderTypeRegistry).isNotNull(); + assertThat(binderTypeRegistry.getAll()).hasSize(2); + assertThat(binderTypeRegistry.getAll()).containsOnlyKeys("binder1", "binder2"); + assertThat((Class[]) binderTypeRegistry.get("binder1").getConfigurationClasses()) + .containsExactly(StubBinder1Configuration.class); + assertThat((Class[]) binderTypeRegistry.get("binder2").getConfigurationClasses()) + .containsExactlyInAnyOrder(StubBinder2ConfigurationA.class, StubBinder2ConfigurationB.class); BinderFactory binderFactory = context.getBean(BinderFactory.class); @@ -153,15 +136,15 @@ public class BinderFactoryConfigurationTests { fail(); } catch (Exception e) { - assertThat(e, instanceOf(IllegalStateException.class)); - assertThat(e.getMessage(), containsString("A default binder has been requested, but there is more than " + - "one binder available:")); + assertThat(e).isInstanceOf(IllegalStateException.class); + assertThat(e.getMessage()).contains( + "A default binder has been requested, but there is more than one binder available:"); } Binder binder1 = binderFactory.getBinder("binder1"); - assertThat(binder1, instanceOf(StubBinder1.class)); + assertThat(binder1).isInstanceOf(StubBinder1.class); Binder binder2 = binderFactory.getBinder("binder2"); - assertThat(binder2, instanceOf(StubBinder2.class)); + assertThat(binder2).isInstanceOf(StubBinder2.class); } @Test @@ -172,27 +155,26 @@ public class BinderFactoryConfigurationTests { new String[] { "binder1", "binder2" }, "spring.cloud.stream.defaultBinder:binder2"); BinderTypeRegistry binderTypeRegistry = context.getBean(BinderTypeRegistry.class); - assertThat(binderTypeRegistry, notNullValue()); - assertThat(binderTypeRegistry.getAll().size(), equalTo(2)); - assertThat(binderTypeRegistry.getAll().keySet(), containsInAnyOrder("binder1", "binder2")); - assertThat(binderTypeRegistry.get("binder1"), - hasProperty("configurationClasses", arrayContaining(StubBinder1Configuration.class))); - assertThat(binderTypeRegistry.get("binder2"), - hasProperty("configurationClasses", arrayContaining(StubBinder2ConfigurationA.class, - StubBinder2ConfigurationB.class))); + assertThat(binderTypeRegistry).isNotNull(); + assertThat(binderTypeRegistry.getAll()).hasSize(2); + assertThat(binderTypeRegistry.getAll()).containsOnlyKeys("binder1", "binder2"); + assertThat((Class[]) binderTypeRegistry.get("binder1").getConfigurationClasses()) + .containsExactlyInAnyOrder(StubBinder1Configuration.class); + assertThat((Class[]) binderTypeRegistry.get("binder2").getConfigurationClasses()) + .containsExactlyInAnyOrder(StubBinder2ConfigurationA.class, StubBinder2ConfigurationB.class); BinderFactory binderFactory = context.getBean(BinderFactory.class); Binder binder1 = binderFactory.getBinder("binder1"); - assertThat(binder1, instanceOf(StubBinder1.class)); + assertThat(binder1).isInstanceOf(StubBinder1.class); Binder binder2 = binderFactory.getBinder("binder2"); - assertThat(binder2, instanceOf(StubBinder2.class)); + assertThat(binder2).isInstanceOf(StubBinder2.class); Binder defaultBinder = binderFactory.getBinder(null); - assertThat(defaultBinder, is(binder2)); + assertThat(defaultBinder).isSameAs(binder2); } - public static ConfigurableApplicationContext createBinderTestContext(String[] additionalClasspathDirectories, + private static ConfigurableApplicationContext createBinderTestContext(String[] additionalClasspathDirectories, String... properties) throws IOException { URL[] urls = ObjectUtils.isEmpty(additionalClasspathDirectories) ? new URL[0] : new URL[additionalClasspathDirectories.length]; diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ExtendedPropertiesBinderAwareChannelResolverTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ExtendedPropertiesBinderAwareChannelResolverTests.java index 5e339590f..6ab387857 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ExtendedPropertiesBinderAwareChannelResolverTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/ExtendedPropertiesBinderAwareChannelResolverTests.java @@ -49,10 +49,7 @@ import org.springframework.messaging.MessageHandler; import org.springframework.messaging.MessagingException; import org.springframework.messaging.SubscribableChannel; -import static org.hamcrest.Matchers.hasSize; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; /** @@ -110,11 +107,11 @@ public class ExtendedPropertiesBinderAwareChannelResolverTests extends BinderAwa @Test @Override public void resolveChannel() { - assertThat(producerBindings, hasSize(0)); + assertThat(producerBindings).hasSize(0); MessageChannel registered = resolver.resolveDestination("foo"); - assertThat(producerBindings, hasSize(1)); + assertThat(producerBindings).hasSize(1); TestBinder.TestBinding binding = producerBindings.get(0); - assertTrue("Must be bound", binding.isBound()); + assertThat(binding.isBound()).describedAs("Must be bound"); DirectChannel testChannel = new DirectChannel(); final CountDownLatch latch = new CountDownLatch(1); final List> received = new ArrayList<>(); @@ -127,20 +124,20 @@ public class ExtendedPropertiesBinderAwareChannelResolverTests extends BinderAwa } }); binder.bindConsumer("foo", null, testChannel, new ExtendedConsumerProperties(new ConsumerProperties())); - assertEquals(0, received.size()); + assertThat(received).hasSize(0); registered.send(MessageBuilder.withPayload("hello").build()); try { - assertTrue("latch timed out", latch.await(1, TimeUnit.SECONDS)); + assertThat(latch.await(1, TimeUnit.SECONDS)).describedAs("latch timed out"); } catch (InterruptedException e) { Thread.currentThread().interrupt(); fail("interrupted while awaiting latch"); } - assertEquals(1, received.size()); - assertEquals("hello", received.get(0).getPayload()); + assertThat(received).hasSize(1); + assertThat(received.get(0).getPayload()).isEqualTo("hello"); context.close(); - assertThat(producerBindings, hasSize(1)); - assertTrue("Must not be bound", !binding.isBound()); + assertThat(producerBindings).hasSize(1); + assertThat(binding.isBound()).isFalse().describedAs("Must not be bound"); } /** diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/HealthIndicatorsConfigurationTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/HealthIndicatorsConfigurationTests.java index c12f43d15..4b5b784f8 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/HealthIndicatorsConfigurationTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/HealthIndicatorsConfigurationTests.java @@ -21,8 +21,6 @@ import java.net.URL; import java.net.URLClassLoader; import java.util.Map; -import org.hamcrest.CoreMatchers; -import org.hamcrest.collection.IsMapContaining; import org.junit.Test; import org.springframework.beans.DirectFieldAccessor; @@ -43,9 +41,7 @@ import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.util.ObjectUtils; -import static org.hamcrest.Matchers.instanceOf; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; /** @@ -56,34 +52,25 @@ public class HealthIndicatorsConfigurationTests { @Test public void healthIndicatorsCheck() throws Exception { - ConfigurableApplicationContext context = createBinderTestContext( - new String[] { "binder1", "binder2" }, + ConfigurableApplicationContext context = createBinderTestContext(new String[] { "binder1", "binder2" }, "spring.cloud.stream.defaultBinder:binder2"); - Binder binder1 = context.getBean(BinderFactory.class).getBinder("binder1"); - assertThat(binder1, instanceOf(StubBinder1.class)); + assertThat(binder1).isInstanceOf(StubBinder1.class); Binder binder2 = context.getBean(BinderFactory.class).getBinder("binder2"); - assertThat(binder2, instanceOf(StubBinder2.class)); - - CompositeHealthIndicator bindersHealthIndicator = context - .getBean("bindersHealthIndicator", CompositeHealthIndicator.class); - - DirectFieldAccessor directFieldAccessor = new DirectFieldAccessor( - bindersHealthIndicator); - assertNotNull(bindersHealthIndicator); - assertNotNull( - context.getBean("testHealthIndicator1", CompositeHealthIndicator.class)); - assertNotNull( - context.getBean("testHealthIndicator2", CompositeHealthIndicator.class)); + assertThat(binder2).isInstanceOf(StubBinder2.class); + CompositeHealthIndicator bindersHealthIndicator = context.getBean("bindersHealthIndicator", + CompositeHealthIndicator.class); + DirectFieldAccessor directFieldAccessor = new DirectFieldAccessor(bindersHealthIndicator); + assertThat(bindersHealthIndicator).isNotNull(); + assertThat(context.getBean("testHealthIndicator1", CompositeHealthIndicator.class)).isNotNull(); + assertThat(context.getBean("testHealthIndicator2", CompositeHealthIndicator.class)).isNotNull(); @SuppressWarnings("unchecked") Map healthIndicators = (Map) directFieldAccessor .getPropertyValue("indicators"); - assertThat(healthIndicators, IsMapContaining.hasKey("binder1")); - assertThat(healthIndicators.get("binder1").health().getStatus(), - CoreMatchers.equalTo(Status.UP)); - assertThat(healthIndicators, IsMapContaining.hasKey("binder2")); - assertThat(healthIndicators.get("binder2").health().getStatus(), - CoreMatchers.equalTo(Status.UNKNOWN)); + assertThat(healthIndicators).containsKey("binder1"); + assertThat(healthIndicators.get("binder1").health().getStatus()).isEqualTo(Status.UP); + assertThat(healthIndicators).containsKey("binder2"); + assertThat(healthIndicators.get("binder2").health().getStatus()).isEqualTo(Status.UNKNOWN); } @Test @@ -94,20 +81,17 @@ public class HealthIndicatorsConfigurationTests { "management.health.binders.enabled:false"); Binder binder1 = context.getBean(BinderFactory.class).getBinder("binder1"); - assertThat(binder1, instanceOf(StubBinder1.class)); + assertThat(binder1).isInstanceOf(StubBinder1.class); Binder binder2 = context.getBean(BinderFactory.class).getBinder("binder2"); - assertThat(binder2, instanceOf(StubBinder2.class)); - boolean exceptionThrown = false; + assertThat(binder2).isInstanceOf(StubBinder2.class); try { context.getBean("bindersHealthIndicator", CompositeHealthIndicator.class); fail("The 'bindersHealthIndicator' bean should have not been defined"); } catch (NoSuchBeanDefinitionException e) { } - assertNotNull( - context.getBean("testHealthIndicator1", CompositeHealthIndicator.class)); - assertNotNull( - context.getBean("testHealthIndicator2", CompositeHealthIndicator.class)); + assertThat(context.getBean("testHealthIndicator1", CompositeHealthIndicator.class)).isNotNull(); + assertThat(context.getBean("testHealthIndicator2", CompositeHealthIndicator.class)).isNotNull(); } public static ConfigurableApplicationContext createBinderTestContext( diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/InputOutputBindingOrderTest.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/InputOutputBindingOrderTest.java index f62b08238..bf5fd5f4f 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/InputOutputBindingOrderTest.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/InputOutputBindingOrderTest.java @@ -30,8 +30,7 @@ import org.springframework.context.SmartLifecycle; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; @@ -52,9 +51,9 @@ public class InputOutputBindingOrderTest { // input is bound after the context has been started verify(binder).bindConsumer(eq("input"), anyString(), eq(processor.input()), Mockito.any()); SomeLifecycle someLifecycle = applicationContext.getBean(SomeLifecycle.class); - assertTrue(someLifecycle.isRunning()); + assertThat(someLifecycle.isRunning()); applicationContext.close(); - assertFalse(someLifecycle.isRunning()); + assertThat(someLifecycle.isRunning()).isFalse(); } @EnableBinding(Processor.class) @@ -70,8 +69,6 @@ public class InputOutputBindingOrderTest { public static class SomeLifecycle implements SmartLifecycle { - private boolean running; - @SuppressWarnings("rawtypes") @Autowired private Binder binder; @@ -79,6 +76,8 @@ public class InputOutputBindingOrderTest { @Autowired private Processor processor; + private boolean running; + @Override @SuppressWarnings("unchecked") public synchronized void start() { diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/LifecycleBinderTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/LifecycleBinderTests.java index 1c4f17ae1..6703ec350 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/LifecycleBinderTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/LifecycleBinderTests.java @@ -28,8 +28,7 @@ import org.springframework.context.Lifecycle; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; /** * @author Marius Bogoevici @@ -40,9 +39,9 @@ public class LifecycleBinderTests { public void testNonSmartLifecyclesStarted() { ConfigurableApplicationContext applicationContext = SpringApplication.run(TestSource.class, "--server.port=-1"); SimpleLifecycle simpleLifecycle = applicationContext.getBean(SimpleLifecycle.class); - assertTrue(simpleLifecycle.isRunning()); + assertThat(simpleLifecycle.isRunning()); applicationContext.close(); - assertFalse(simpleLifecycle.isRunning()); + assertThat(simpleLifecycle.isRunning()).isFalse(); } @EnableBinding(Source.class) diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/MessageConverterTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/MessageConverterTests.java index f5e55ad24..43cac1489 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/MessageConverterTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binder/MessageConverterTests.java @@ -23,10 +23,7 @@ import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.startsWith; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; /** * @author Gary Russell @@ -41,14 +38,14 @@ public class MessageConverterTests { Message message = MessageBuilder.withPayload("Hello".getBytes()).setHeader("foo", "bar") .setHeader("baz", "quxx").build(); byte[] embedded = converter.embedHeaders(new MessageValues(message), "foo", "baz"); - assertEquals(0xff, embedded[0] & 0xff); - assertEquals("\u0002\u0003foo\u0000\u0000\u0000\u0005\"bar\"\u0003baz\u0000\u0000\u0000\u0006\"quxx\"Hello", - new String(embedded).substring(1)); + assertThat(embedded[0] & 0xff).isEqualTo(0xff); + assertThat(new String(embedded).substring(1)).isEqualTo( + "\u0002\u0003foo\u0000\u0000\u0000\u0005\"bar\"\u0003baz\u0000\u0000\u0000\u0006\"quxx\"Hello"); MessageValues extracted = converter.extractHeaders(MessageBuilder.withPayload(embedded).build(), false); - assertEquals("Hello", new String((byte[]) extracted.getPayload())); - assertEquals("bar", extracted.get("foo")); - assertEquals("quxx", extracted.get("baz")); + assertThat(new String((byte[]) extracted.getPayload())).isEqualTo("Hello"); + assertThat(extracted.get("foo")).isEqualTo("bar"); + assertThat(extracted.get("baz")).isEqualTo("quxx"); } @Test @@ -57,14 +54,14 @@ public class MessageConverterTests { Message message = MessageBuilder.withPayload("Hello".getBytes()).setHeader("foo", "bar") .setHeader("baz", "ØØØØØØØØ").build(); byte[] embedded = converter.embedHeaders(new MessageValues(message), "foo", "baz"); - assertEquals(0xff, embedded[0] & 0xff); - assertEquals("\u0002\u0003foo\u0000\u0000\u0000\u0005\"bar\"\u0003baz\u0000\u0000\u0000\u0012\"ØØØØØØØØ\"Hello", - new String(embedded, "UTF-8").substring(1)); + assertThat(embedded[0] & 0xff).isEqualTo(0xff); + assertThat(new String(embedded, "UTF-8").substring(1)).isEqualTo( + "\u0002\u0003foo\u0000\u0000\u0000\u0005\"bar\"\u0003baz\u0000\u0000\u0000\u0012\"ØØØØØØØØ\"Hello"); MessageValues extracted = converter.extractHeaders(MessageBuilder.withPayload(embedded).build(), false); - assertEquals("Hello", new String((byte[]) extracted.getPayload())); - assertEquals("bar", extracted.get("foo")); - assertEquals("ØØØØØØØØ", extracted.get("baz")); + assertThat(new String((byte[]) extracted.getPayload())).isEqualTo("Hello"); + assertThat(extracted.get("foo")).isEqualTo("bar"); + assertThat(extracted.get("baz")).isEqualTo("ØØØØØØØØ"); } @Test @@ -72,19 +69,19 @@ public class MessageConverterTests { EmbeddedHeadersMessageConverter converter = new EmbeddedHeadersMessageConverter(); Message message = MessageBuilder.withPayload("Hello".getBytes()).setHeader("foo", "bar").build(); byte[] embedded = converter.embedHeaders(new MessageValues(message), "foo", "baz"); - assertEquals(0xff, embedded[0] & 0xff); - assertEquals("\u0001\u0003foo\u0000\u0000\u0000\u0005\"bar\"Hello", new String(embedded).substring(1)); + assertThat(embedded[0] & 0xff).isEqualTo(0xff); + assertThat(new String(embedded).substring(1)).isEqualTo("\u0001\u0003foo\u0000\u0000\u0000\u0005\"bar\"Hello"); } @Test public void testCanDecodeOldFormat() throws Exception { EmbeddedHeadersMessageConverter converter = new EmbeddedHeadersMessageConverter(); byte[] bytes = "\u0002\u0003foo\u0003bar\u0003baz\u0004quxxHello".getBytes("UTF-8"); - Message message = new GenericMessage(bytes); + Message message = new GenericMessage<>(bytes); MessageValues extracted = converter.extractHeaders(message, false); - assertEquals("Hello", new String((byte[]) extracted.getPayload())); - assertEquals("bar", extracted.get("foo")); - assertEquals("quxx", extracted.get("baz")); + assertThat(new String((byte[]) extracted.getPayload())).isEqualTo("Hello"); + assertThat(extracted.get("foo")).isEqualTo("bar"); + assertThat(extracted.get("baz")).isEqualTo("quxx"); } @Test @@ -98,8 +95,8 @@ public class MessageConverterTests { } catch (Exception e) { String s = EmbeddedHeadersMessageConverter.decodeExceptionMessage(message); - assertThat(e, instanceOf(StringIndexOutOfBoundsException.class)); - assertThat(s, startsWith("Could not convert message: 0203666F6F")); + assertThat(e).isInstanceOf(StringIndexOutOfBoundsException.class); + assertThat(s).startsWith("Could not convert message: 0203666F6F"); } } diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binding/ChannelBindingServiceTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binding/ChannelBindingServiceTests.java index 16e49b041..84f7a7937 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binding/ChannelBindingServiceTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/binding/ChannelBindingServiceTests.java @@ -47,11 +47,7 @@ import org.springframework.integration.support.DefaultMessageBuilderFactory; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.core.DestinationResolutionException; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.sameInstance; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; @@ -94,9 +90,9 @@ public class ChannelBindingServiceTests { any(ConsumerProperties.class))).thenReturn(mockBinding); Collection> bindings = service.bindConsumer(inputChannel, inputChannelName); - assertThat(bindings.size(), is(1)); + assertThat(bindings).hasSize(1); Binding binding = bindings.iterator().next(); - assertThat(binding, sameInstance(mockBinding)); + assertThat(binding).isSameAs(mockBinding); service.unbindConsumers(inputChannelName); verify(binder).bindConsumer(eq("foo"), isNull(String.class), same(inputChannel), any(ConsumerProperties.class)); @@ -141,14 +137,14 @@ public class ChannelBindingServiceTests { Collection> bindings = service.bindConsumer(inputChannel, "input"); - assertThat(bindings.size(), is(2)); + assertThat(bindings).hasSize(2); Iterator> iterator = bindings.iterator(); Binding binding1 = iterator.next(); Binding binding2 = iterator.next(); - assertThat(binding1, sameInstance(mockBinding1)); - assertThat(binding2, sameInstance(mockBinding2)); + assertThat(binding1).isSameAs(mockBinding1); + assertThat(binding2).isSameAs(mockBinding2); service.unbindConsumers("input"); @@ -190,9 +186,9 @@ public class ChannelBindingServiceTests { any(ConsumerProperties.class))).thenReturn(mockBinding); Collection> bindings = service.bindConsumer(inputChannel, inputChannelName); - assertThat(bindings.size(), is(1)); + assertThat(bindings).hasSize(1); Binding binding = bindings.iterator().next(); - assertThat(binding, sameInstance(mockBinding)); + assertThat(binding).isSameAs(mockBinding); service.unbindConsumers(inputChannelName); verify(binder).bindConsumer(eq("foo"), eq(props.getGroup()), same(inputChannel), @@ -250,20 +246,19 @@ public class ChannelBindingServiceTests { }).when(beanFactory).initializeBean(any(MessageChannel.class), eq("foo")); resolver.setBeanFactory(beanFactory); MessageChannel resolved = resolver.resolveDestination("foo"); - assertThat(resolved, sameInstance(dynamic.get())); + assertThat(resolved).isSameAs(dynamic.get()); verify(binder).bindProducer(eq("foo"), eq(dynamic.get()), any(ProducerProperties.class)); properties.setDynamicDestinations(new String[] { "foo" }); resolved = resolver.resolveDestination("foo"); - assertThat(resolved, sameInstance(dynamic.get())); + assertThat(resolved).isSameAs(dynamic.get()); properties.setDynamicDestinations(new String[] { "test" }); try { resolved = resolver.resolveDestination("bar"); fail(); } catch (DestinationResolutionException e) { - assertThat(e.getMessage(), containsString( - "Failed to find MessageChannel bean with name 'bar'")); + assertThat(e).hasMessageContaining("Failed to find MessageChannel bean with name 'bar'"); } } @@ -290,7 +285,7 @@ public class ChannelBindingServiceTests { fail("Producer properties should be validated."); } catch (IllegalStateException e) { - assertTrue(e.getMessage().contains("Partition count should be greater than zero.")); + assertThat(e).hasMessageContaining("Partition count should be greater than zero."); } } @@ -322,8 +317,7 @@ public class ChannelBindingServiceTests { fail("Consumer properties should be validated."); } catch (IllegalStateException e) { - assertTrue( - e.getMessage().contains("Concurrency should be greater than zero.")); + assertThat(e).hasMessageContaining("Concurrency should be greater than zero."); } } } diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/config/SpelExpressionConverterConfigurationTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/config/SpelExpressionConverterConfigurationTests.java index b99a2dc55..2529dfd85 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/config/SpelExpressionConverterConfigurationTests.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/config/SpelExpressionConverterConfigurationTests.java @@ -32,8 +32,7 @@ import org.springframework.context.annotation.Import; import org.springframework.expression.Expression; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; /** * Tests for SpelExpressionConverterConfiguration. @@ -50,7 +49,7 @@ public class SpelExpressionConverterConfigurationTests { @Test public void converterCorrectlyInstalled() { - assertThat(pojo.getExpression().getValue("{\"a\": {\"b\": 5}}").toString(), is((Object) "5")); + assertThat(pojo.getExpression().getValue("{\"a\": {\"b\": 5}}").toString()).isEqualTo("5"); } @ConfigurationProperties diff --git a/src/checkstyle/checkstyle.xml b/src/checkstyle/checkstyle.xml index 13959b0ed..b1642ed35 100644 --- a/src/checkstyle/checkstyle.xml +++ b/src/checkstyle/checkstyle.xml @@ -79,7 +79,8 @@ - + @@ -128,6 +129,13 @@ + + + + + +