Assert instances (vs classes) in MockMvc/WebTestClient
Issue: SPR-16520
This commit is contained in:
parent
3bfa56dff2
commit
bb8cddda23
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2017 the original author or authors.
|
* Copyright 2002-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -56,16 +56,21 @@ class DefaultControllerSpec extends AbstractMockServerSpec<WebTestClient.Control
|
||||||
|
|
||||||
DefaultControllerSpec(Object... controllers) {
|
DefaultControllerSpec(Object... controllers) {
|
||||||
Assert.isTrue(!ObjectUtils.isEmpty(controllers), "At least one controller is required");
|
Assert.isTrue(!ObjectUtils.isEmpty(controllers), "At least one controller is required");
|
||||||
|
Assert.isTrue(checkInstances(controllers), "Controller instances are required");
|
||||||
this.controllers = Arrays.asList(controllers);
|
this.controllers = Arrays.asList(controllers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DefaultControllerSpec controllerAdvice(Object... controllerAdvice) {
|
public DefaultControllerSpec controllerAdvice(Object... controllerAdvice) {
|
||||||
|
Assert.isTrue(checkInstances(controllerAdvice), "ControllerAdvice instances are required");
|
||||||
this.controllerAdvice.addAll(Arrays.asList(controllerAdvice));
|
this.controllerAdvice.addAll(Arrays.asList(controllerAdvice));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean checkInstances(Object[] objects) {
|
||||||
|
return Arrays.stream(objects).noneMatch(Class.class::isInstance);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DefaultControllerSpec contentTypeResolver(Consumer<RequestedContentTypeResolverBuilder> consumer) {
|
public DefaultControllerSpec contentTypeResolver(Consumer<RequestedContentTypeResolverBuilder> consumer) {
|
||||||
this.configurer.contentTypeResolverConsumer = consumer;
|
this.configurer.contentTypeResolverConsumer = consumer;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2017 the original author or authors.
|
* Copyright 2002-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -143,6 +143,7 @@ public class StandaloneMockMvcBuilder extends AbstractMockMvcBuilder<StandaloneM
|
||||||
*/
|
*/
|
||||||
protected StandaloneMockMvcBuilder(Object... controllers) {
|
protected StandaloneMockMvcBuilder(Object... controllers) {
|
||||||
Assert.isTrue(!ObjectUtils.isEmpty(controllers), "At least one controller is required");
|
Assert.isTrue(!ObjectUtils.isEmpty(controllers), "At least one controller is required");
|
||||||
|
Assert.isTrue(checkInstances(controllers), "Controller instances are required");
|
||||||
this.controllers = Arrays.asList(controllers);
|
this.controllers = Arrays.asList(controllers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -157,10 +158,15 @@ public class StandaloneMockMvcBuilder extends AbstractMockMvcBuilder<StandaloneM
|
||||||
* @since 4.2
|
* @since 4.2
|
||||||
*/
|
*/
|
||||||
public StandaloneMockMvcBuilder setControllerAdvice(Object... controllerAdvice) {
|
public StandaloneMockMvcBuilder setControllerAdvice(Object... controllerAdvice) {
|
||||||
|
Assert.isTrue(checkInstances(controllerAdvice), "ControllerAdvice instances are required");
|
||||||
this.controllerAdvice = Arrays.asList(controllerAdvice);
|
this.controllerAdvice = Arrays.asList(controllerAdvice);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean checkInstances(Object[] objects) {
|
||||||
|
return Arrays.stream(objects).noneMatch(Class.class::isInstance);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the message converters to use in argument resolvers and in return value
|
* Set the message converters to use in argument resolvers and in return value
|
||||||
* handlers, which support reading and/or writing to the body of the request
|
* handlers, which support reading and/or writing to the body of the request
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2017 the original author or authors.
|
* Copyright 2002-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -44,7 +44,7 @@ import static org.junit.Assert.assertNotNull;
|
||||||
public class DefaultControllerSpecTests {
|
public class DefaultControllerSpecTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void controller() throws Exception {
|
public void controller() {
|
||||||
new DefaultControllerSpec(new MyController()).build()
|
new DefaultControllerSpec(new MyController()).build()
|
||||||
.get().uri("/")
|
.get().uri("/")
|
||||||
.exchange()
|
.exchange()
|
||||||
|
|
@ -53,7 +53,7 @@ public class DefaultControllerSpecTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void controllerAdvice() throws Exception {
|
public void controllerAdvice() {
|
||||||
new DefaultControllerSpec(new MyController())
|
new DefaultControllerSpec(new MyController())
|
||||||
.controllerAdvice(new MyControllerAdvice())
|
.controllerAdvice(new MyControllerAdvice())
|
||||||
.build()
|
.build()
|
||||||
|
|
@ -63,8 +63,18 @@ public class DefaultControllerSpecTests {
|
||||||
.expectBody(String.class).isEqualTo("Handled exception");
|
.expectBody(String.class).isEqualTo("Handled exception");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void controllerIsAnObjectInstance() {
|
||||||
|
new DefaultControllerSpec(MyController.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void controllerAdviceIsAnObjectInstance() {
|
||||||
|
new DefaultControllerSpec(new MyController()).controllerAdvice(MyControllerAdvice.class);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void configurerConsumers() throws Exception {
|
public void configurerConsumers() {
|
||||||
|
|
||||||
TestConsumer<ArgumentResolverConfigurer> argumentResolverConsumer = new TestConsumer<>();
|
TestConsumer<ArgumentResolverConfigurer> argumentResolverConsumer = new TestConsumer<>();
|
||||||
TestConsumer<RequestedContentTypeResolverBuilder> contenTypeResolverConsumer = new TestConsumer<>();
|
TestConsumer<RequestedContentTypeResolverBuilder> contenTypeResolverConsumer = new TestConsumer<>();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2016 the original author or authors.
|
* Copyright 2002-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -125,6 +125,17 @@ public class StandaloneMockMvcBuilderTests {
|
||||||
assertNotNull(serializer);
|
assertNotNull(serializer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void controllerIsAnObjectInstance() {
|
||||||
|
new StandaloneMockMvcBuilder(PersonController.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void controllerAdviceIsAnObjectInstance() {
|
||||||
|
new StandaloneMockMvcBuilder(new PersonController()).setControllerAdvice(PersonController.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
private static class PlaceholderController {
|
private static class PlaceholderController {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue