Skip to content

Commit

Permalink
Polishing and consistent use of exception assertions
Browse files Browse the repository at this point in the history
  • Loading branch information
sbrannen committed Mar 21, 2024
1 parent 458c30c commit a30c06b
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 119 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,13 @@

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.springframework.messaging.handler.annotation.MessagingPredicates.header;
import static org.springframework.messaging.handler.annotation.MessagingPredicates.headerPlain;

/**
* Test fixture for {@link HeaderMethodArgumentResolver} tests.
*
* @author Rossen Stoyanchev
*/
class HeaderMethodArgumentResolverTests {
Expand Down Expand Up @@ -110,8 +111,8 @@ void resolveArgumentDefaultValue() {

@Test
void resolveDefaultValueSystemProperty() {
System.setProperty("systemProperty", "sysbar");
try {
System.setProperty("systemProperty", "sysbar");
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).build();
MethodParameter param = this.resolvable.annot(header("name", "#{systemProperties.systemProperty}")).arg();
Object result = resolveArgument(param, message);
Expand All @@ -124,8 +125,8 @@ void resolveDefaultValueSystemProperty() {

@Test
void resolveNameFromSystemProperty() {
System.setProperty("systemProperty", "sysbar");
try {
System.setProperty("systemProperty", "sysbar");
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).setHeader("sysbar", "foo").build();
MethodParameter param = this.resolvable.annot(header("#{systemProperties.systemProperty}")).arg();
Object result = resolveArgument(param, message);
Expand Down Expand Up @@ -154,32 +155,36 @@ void resolveOptionalHeaderAsEmpty() {

@Test
void missingParameterFromSystemPropertyThroughPlaceholder() {
String expected = "sysbar";
System.setProperty("systemProperty", expected);
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).build();
MethodParameter param = this.resolvable.annot(header("#{systemProperties.systemProperty}")).arg();

assertThatThrownBy(() ->
resolveArgument(param, message))
.isInstanceOf(MessageHandlingException.class)
.hasMessageContaining(expected);
try {
String expected = "sysbar";
System.setProperty("systemProperty", expected);
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).build();
MethodParameter param = this.resolvable.annot(header("#{systemProperties.systemProperty}")).arg();

System.clearProperty("systemProperty");
assertThatExceptionOfType(MessageHandlingException.class)
.isThrownBy(() -> resolveArgument(param, message))
.withMessageContaining(expected);
}
finally {
System.clearProperty("systemProperty");
}
}

@Test
void notNullablePrimitiveParameterFromSystemPropertyThroughPlaceholder() {
String expected = "sysbar";
System.setProperty("systemProperty", expected);
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).build();
MethodParameter param = this.resolvable.annot(header("${systemProperty}").required(false)).arg();

assertThatThrownBy(() ->
resolver.resolveArgument(param, message))
.isInstanceOf(IllegalStateException.class)
.hasMessageContaining(expected);
try {
String expected = "sysbar";
System.setProperty("systemProperty", expected);
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).build();
MethodParameter param = this.resolvable.annot(header("${systemProperty}").required(false)).arg();

System.clearProperty("systemProperty");
assertThatIllegalStateException()
.isThrownBy(() -> resolver.resolveArgument(param, message))
.withMessageContaining(expected);
}
finally {
System.clearProperty("systemProperty");
}
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.springframework.messaging.handler.annotation.MessagingPredicates.header;
import static org.springframework.messaging.handler.annotation.MessagingPredicates.headerPlain;

Expand Down Expand Up @@ -112,8 +112,8 @@ void resolveArgumentDefaultValue() throws Exception {

@Test
void resolveDefaultValueSystemProperty() throws Exception {
System.setProperty("systemProperty", "sysbar");
try {
System.setProperty("systemProperty", "sysbar");
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).build();
MethodParameter param = this.resolvable.annot(header("name", "#{systemProperties.systemProperty}")).arg();
Object result = resolver.resolveArgument(param, message);
Expand All @@ -126,8 +126,8 @@ void resolveDefaultValueSystemProperty() throws Exception {

@Test
void resolveNameFromSystemProperty() throws Exception {
System.setProperty("systemProperty", "sysbar");
try {
System.setProperty("systemProperty", "sysbar");
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).setHeader("sysbar", "foo").build();
MethodParameter param = this.resolvable.annot(header("#{systemProperties.systemProperty}")).arg();
Object result = resolver.resolveArgument(param, message);
Expand All @@ -140,32 +140,36 @@ void resolveNameFromSystemProperty() throws Exception {

@Test
void missingParameterFromSystemPropertyThroughPlaceholder() {
String expected = "sysbar";
System.setProperty("systemProperty", expected);
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).build();
MethodParameter param = this.resolvable.annot(header("#{systemProperties.systemProperty}")).arg();

assertThatThrownBy(() ->
resolver.resolveArgument(param, message))
.isInstanceOf(MessageHandlingException.class)
.hasMessageContaining(expected);
try {
String expected = "sysbar";
System.setProperty("systemProperty", expected);
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).build();
MethodParameter param = this.resolvable.annot(header("#{systemProperties.systemProperty}")).arg();

System.clearProperty("systemProperty");
assertThatExceptionOfType(MessageHandlingException.class)
.isThrownBy(() -> resolver.resolveArgument(param, message))
.withMessageContaining(expected);
}
finally {
System.clearProperty("systemProperty");
}
}

@Test
void notNullablePrimitiveParameterFromSystemPropertyThroughPlaceholder() {
String expected = "sysbar";
System.setProperty("systemProperty", expected);
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).build();
MethodParameter param = this.resolvable.annot(header("${systemProperty}").required(false)).arg();

assertThatThrownBy(() ->
resolver.resolveArgument(param, message))
.isInstanceOf(IllegalStateException.class)
.hasMessageContaining(expected);
try {
String expected = "sysbar";
System.setProperty("systemProperty", expected);
Message<byte[]> message = MessageBuilder.withPayload(new byte[0]).build();
MethodParameter param = this.resolvable.annot(header("${systemProperty}").required(false)).arg();

System.clearProperty("systemProperty");
assertThatIllegalStateException()
.isThrownBy(() -> resolver.resolveArgument(param, message))
.withMessageContaining(expected);
}
finally {
System.clearProperty("systemProperty");
}
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

/**
* Tests for {@link RequestHeaderMethodArgumentResolver}.
Expand Down Expand Up @@ -132,7 +131,6 @@ void resolveStringArrayArgument() throws Exception {
servletRequest.addHeader("name", expected);

Object result = resolver.resolveArgument(paramNamedValueStringArray, null, webRequest, null);
assertThat(result).isInstanceOf(String[].class);
assertThat(result).isEqualTo(expected);
}

Expand All @@ -145,8 +143,8 @@ void resolveDefaultValue() throws Exception {

@Test
void resolveDefaultValueFromSystemProperty() throws Exception {
System.setProperty("systemProperty", "bar");
try {
System.setProperty("systemProperty", "bar");
Object result = resolver.resolveArgument(paramSystemProperty, null, webRequest, null);

assertThat(result).isEqualTo("bar");
Expand All @@ -161,8 +159,8 @@ void resolveNameFromSystemPropertyThroughExpression() throws Exception {
String expected = "foo";
servletRequest.addHeader("bar", expected);

System.setProperty("systemProperty", "bar");
try {
System.setProperty("systemProperty", "bar");
Object result = resolver.resolveArgument(paramResolvedNameWithExpression, null, webRequest, null);

assertThat(result).isEqualTo(expected);
Expand All @@ -177,8 +175,8 @@ void resolveNameFromSystemPropertyThroughPlaceholder() throws Exception {
String expected = "foo";
servletRequest.addHeader("bar", expected);

System.setProperty("systemProperty", "bar");
try {
System.setProperty("systemProperty", "bar");
Object result = resolver.resolveArgument(paramResolvedNameWithPlaceholder, null, webRequest, null);

assertThat(result).isEqualTo(expected);
Expand All @@ -190,16 +188,17 @@ void resolveNameFromSystemPropertyThroughPlaceholder() throws Exception {

@Test
void missingParameterFromSystemPropertyThroughPlaceholder() {
String expected = "bar";

System.setProperty("systemProperty", expected);

assertThatThrownBy(() ->
resolver.resolveArgument(paramResolvedNameWithPlaceholder, null, webRequest, null))
.isInstanceOf(MissingRequestHeaderException.class)
.extracting("headerName").isEqualTo(expected);
try {
String expected = "bar";
System.setProperty("systemProperty", expected);

System.clearProperty("systemProperty");
assertThatExceptionOfType(MissingRequestHeaderException.class)
.isThrownBy(() -> resolver.resolveArgument(paramResolvedNameWithPlaceholder, null, webRequest, null))
.extracting("headerName").isEqualTo(expected);
}
finally {
System.clearProperty("systemProperty");
}
}

@Test
Expand Down Expand Up @@ -263,10 +262,10 @@ void uuidConversionWithInvalidValue() {

ConfigurableWebBindingInitializer bindingInitializer = new ConfigurableWebBindingInitializer();
bindingInitializer.setConversionService(new DefaultFormattingConversionService());
DefaultDataBinderFactory binderFactory = new DefaultDataBinderFactory(bindingInitializer);

assertThatThrownBy(() ->
resolver.resolveArgument(paramUuid, null, webRequest, new DefaultDataBinderFactory(bindingInitializer)))
.isInstanceOf(MethodArgumentTypeMismatchException.class)
assertThatExceptionOfType(MethodArgumentTypeMismatchException.class)
.isThrownBy(() -> resolver.resolveArgument(paramUuid, null, webRequest, binderFactory))
.extracting("propertyName").isEqualTo("name");
}

Expand All @@ -285,10 +284,10 @@ private void uuidConversionWithEmptyOrBlankValue(String uuid) {

ConfigurableWebBindingInitializer bindingInitializer = new ConfigurableWebBindingInitializer();
bindingInitializer.setConversionService(new DefaultFormattingConversionService());
DefaultDataBinderFactory binderFactory = new DefaultDataBinderFactory(bindingInitializer);

assertThatExceptionOfType(MissingRequestHeaderException.class).isThrownBy(() ->
resolver.resolveArgument(paramUuid, null, webRequest,
new DefaultDataBinderFactory(bindingInitializer)));
assertThatExceptionOfType(MissingRequestHeaderException.class)
.isThrownBy(() -> resolver.resolveArgument(paramUuid, null, webRequest, binderFactory));
}

@Test
Expand All @@ -314,21 +313,23 @@ private void uuidConversionWithEmptyOrBlankValueOptional(String uuid) throws Exc

@Test
public void uuidPlaceholderConversionWithEmptyValue() {
String expected = "name";
servletRequest.addHeader(expected, "");

System.setProperty("systemProperty", expected);
try {
String expected = "name";
servletRequest.addHeader(expected, "");

ConfigurableWebBindingInitializer bindingInitializer = new ConfigurableWebBindingInitializer();
bindingInitializer.setConversionService(new DefaultFormattingConversionService());
System.setProperty("systemProperty", expected);

assertThatThrownBy(() ->
resolver.resolveArgument(paramUuidPlaceholder, null, webRequest,
new DefaultDataBinderFactory(bindingInitializer)))
.isInstanceOf(MissingRequestHeaderException.class)
.extracting("headerName").isEqualTo(expected);
ConfigurableWebBindingInitializer bindingInitializer = new ConfigurableWebBindingInitializer();
bindingInitializer.setConversionService(new DefaultFormattingConversionService());
DefaultDataBinderFactory binderFactory = new DefaultDataBinderFactory(bindingInitializer);

System.clearProperty("systemProperty");
assertThatExceptionOfType(MissingRequestHeaderException.class)
.isThrownBy(() -> resolver.resolveArgument(paramUuidPlaceholder, null, webRequest, binderFactory))
.extracting("headerName").isEqualTo(expected);
}
finally {
System.clearProperty("systemProperty");
}
}

void params(
Expand Down
Loading

0 comments on commit a30c06b

Please sign in to comment.