From 72d50ed2f8916820862c2540e8573296135cfbea Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 18 May 2021 11:14:26 -0700 Subject: [PATCH 1/3] Move "Testing With Spring Security" How-to See gh-26262 --- .../src/docs/asciidoc/anchor-rewrite.properties | 2 +- .../src/docs/asciidoc/features/testing.adoc | 2 +- .../spring-boot-docs/src/docs/asciidoc/howto.adoc | 4 ++-- ...sting-with-spring-security.adoc => testing.adoc} | 13 ++++++++++--- .../withspringsecurity}/MySecurityTests.java | 2 +- .../withspringsecurity}/UserController.java | 2 +- 6 files changed, 16 insertions(+), 9 deletions(-) rename spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/{testing-with-spring-security.adoc => testing.adoc} (58%) rename spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/{testingwithspringsecurity => testing/withspringsecurity}/MySecurityTests.java (94%) rename spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/{testingwithspringsecurity => testing/withspringsecurity}/UserController.java (90%) diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties index ecede55509f..b11e583e319 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties @@ -2527,7 +2527,7 @@ howto.spring-mvc.customize-view-resolvers # 2 == Testing With Spring Security howto-use-test-with-spring-security=\ -howto.testing-with-spring-security +howto.spring-mvc.testing.with-spring-security # 2 == Jersey howto-jersey=\ diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/features/testing.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/features/testing.adoc index 5b5f928d252..2679586f500 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/features/testing.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/features/testing.adoc @@ -404,7 +404,7 @@ If you define your own `webDriver` scope you may find it stops working when you If you have Spring Security on the classpath, `@WebMvcTest` will also scan `WebSecurityConfigurer` beans. Instead of disabling security completely for such tests, you can use Spring Security's test support. -More details on how to use Spring Security's `MockMvc` support can be found in this _<>_ how-to section. +More details on how to use Spring Security's `MockMvc` support can be found in this _<>_ how-to section. TIP: Sometimes writing Spring MVC tests is not enough; Spring Boot can help you run <>. diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc index 24deb2d22a0..b746211c01d 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc @@ -23,8 +23,6 @@ include::howto/webserver.adoc[] include::howto/spring-mvc.adoc[] -include::howto/testing-with-spring-security.adoc[] - include::howto/jersey.adoc[] include::howto/http-clients.adoc[] @@ -45,6 +43,8 @@ include::howto/security.adoc[] include::howto/hotswapping.adoc[] +include::howto/testing.adoc[] + include::howto/build.adoc[] include::howto/traditional-deployment.adoc[] diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testing-with-spring-security.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testing.adoc similarity index 58% rename from spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testing-with-spring-security.adoc rename to spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testing.adoc index 74687f51b87..f43303dfb22 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testing-with-spring-security.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testing.adoc @@ -1,11 +1,18 @@ -[[howto.testing-with-spring-security]] -== Testing With Spring Security +[[howto.testing]] +== Testing +Spring Boot includes a number of testing utilities and support classes as well as a dedicated starter that provides common test dependencies. +This section answers common questions about testing. + + + +[[howto.testing.with-spring-security]] +=== Testing With Spring Security Spring Security provides support for running tests as a specific user. For example, the test in the snippet below will run with an authenticated user that has the `ADMIN` role. [source,java,indent=0,subs="verbatim"] ---- -include::{docs-java}/howto/testingwithspringsecurity/MySecurityTests.java[] +include::{docs-java}/howto/testing/withspringsecurity/MySecurityTests.java[] ---- Spring Security provides comprehensive integration with Spring MVC Test and this can also be used when testing controllers using the `@WebMvcTest` slice and `MockMvc`. diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testingwithspringsecurity/MySecurityTests.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/withspringsecurity/MySecurityTests.java similarity index 94% rename from spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testingwithspringsecurity/MySecurityTests.java rename to spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/withspringsecurity/MySecurityTests.java index d322bb73695..b932490b8af 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testingwithspringsecurity/MySecurityTests.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/withspringsecurity/MySecurityTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docs.howto.testingwithspringsecurity; +package org.springframework.boot.docs.howto.testing.withspringsecurity; import org.junit.jupiter.api.Test; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testingwithspringsecurity/UserController.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/withspringsecurity/UserController.java similarity index 90% rename from spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testingwithspringsecurity/UserController.java rename to spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/withspringsecurity/UserController.java index 19e24c032bc..96fa823791c 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testingwithspringsecurity/UserController.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/withspringsecurity/UserController.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docs.howto.testingwithspringsecurity; +package org.springframework.boot.docs.howto.testing.withspringsecurity; class UserController { From 499a29c415043d3551b2110fbca59cd3870bf214 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 18 May 2021 11:23:46 -0700 Subject: [PATCH 2/3] Move "Testcontainers" How-to See gh-26262 --- .../docs/asciidoc/anchor-rewrite.properties | 2 +- .../src/docs/asciidoc/howto.adoc | 2 -- .../docs/asciidoc/howto/testcontainers.adoc | 23 ---------------- .../src/docs/asciidoc/howto/testing.adoc | 27 +++++++++++++++++++ .../dynamicproperties/MyIntegrationTests.java | 2 +- .../vanilla/MyIntegrationTests.java | 2 +- 6 files changed, 30 insertions(+), 28 deletions(-) delete mode 100644 spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testcontainers.adoc rename spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/{ => testing}/testcontainers/dynamicproperties/MyIntegrationTests.java (93%) rename spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/{ => testing}/testcontainers/vanilla/MyIntegrationTests.java (93%) diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties index b11e583e319..e59b2e49be9 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties @@ -2849,7 +2849,7 @@ howto.jedis-instead-of-lettuce # 2 == Use Testcontainers for integration testing howto-testcontainers=\ -howto.testcontainers +howto.testing.testcontainers diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc index b746211c01d..2a50295f68a 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc @@ -50,5 +50,3 @@ include::howto/build.adoc[] include::howto/traditional-deployment.adoc[] include::howto/jedis-instead-of-lettuce.adoc[] - -include::howto/testcontainers.adoc[] diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testcontainers.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testcontainers.adoc deleted file mode 100644 index 03176988e8e..00000000000 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testcontainers.adoc +++ /dev/null @@ -1,23 +0,0 @@ -[[howto.testcontainers]] -== Use Testcontainers for integration testing -The https://www.testcontainers.org/[Testcontainers] library provides a way to manage services running inside Docker containers. -It integrates with JUnit, allowing you to write a test class that can start up a container before any of the tests run. -Testcontainers is especially useful for writing integration tests that talk to a real backend service such as MySQL, MongoDB, Cassandra etc. -Testcontainers can be used in a Spring Boot test as follows: - -[source,java,indent=0,subs="verbatim"] ----- -include::{docs-java}/howto/testcontainers/vanilla/MyIntegrationTests.java[] ----- - -This will start up a docker container running Neo4j (if Docker is running locally) before any of the tests are run. -In most cases, you will need to configure the application using details from the running container, such as container IP or port. - -This can be done with a static `@DynamicPropertySource` method that allows adding dynamic property values to the Spring Environment. - -[source,java,indent=0,subs="verbatim"] ----- -include::{docs-java}/howto/testcontainers/dynamicproperties/MyIntegrationTests.java[] ----- - -The above configuration allows Neo4j-related beans in the application to communicate with Neo4j running inside the Testcontainers-managed Docker container. diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testing.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testing.adoc index f43303dfb22..ab606af1fc4 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testing.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/testing.adoc @@ -18,3 +18,30 @@ include::{docs-java}/howto/testing/withspringsecurity/MySecurityTests.java[] Spring Security provides comprehensive integration with Spring MVC Test and this can also be used when testing controllers using the `@WebMvcTest` slice and `MockMvc`. For additional details on Spring Security's testing support, refer to Spring Security's {spring-security-docs}#test[reference documentation]). + + + + +[[howto.testing.testcontainers]] +=== Use Testcontainers for Integration Testing +The https://www.testcontainers.org/[Testcontainers] library provides a way to manage services running inside Docker containers. +It integrates with JUnit, allowing you to write a test class that can start up a container before any of the tests run. +Testcontainers is especially useful for writing integration tests that talk to a real backend service such as MySQL, MongoDB, Cassandra etc. +Testcontainers can be used in a Spring Boot test as follows: + +[source,java,indent=0,subs="verbatim"] +---- +include::{docs-java}/howto/testing/testcontainers/vanilla/MyIntegrationTests.java[] +---- + +This will start up a docker container running Neo4j (if Docker is running locally) before any of the tests are run. +In most cases, you will need to configure the application using details from the running container, such as container IP or port. + +This can be done with a static `@DynamicPropertySource` method that allows adding dynamic property values to the Spring Environment. + +[source,java,indent=0,subs="verbatim"] +---- +include::{docs-java}/howto/testing/testcontainers/dynamicproperties/MyIntegrationTests.java[] +---- + +The above configuration allows Neo4j-related beans in the application to communicate with Neo4j running inside the Testcontainers-managed Docker container. diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testcontainers/dynamicproperties/MyIntegrationTests.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/testcontainers/dynamicproperties/MyIntegrationTests.java similarity index 93% rename from spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testcontainers/dynamicproperties/MyIntegrationTests.java rename to spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/testcontainers/dynamicproperties/MyIntegrationTests.java index 55ee89faa37..d49df7c7509 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testcontainers/dynamicproperties/MyIntegrationTests.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/testcontainers/dynamicproperties/MyIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docs.howto.testcontainers.dynamicproperties; +package org.springframework.boot.docs.howto.testing.testcontainers.dynamicproperties; import org.junit.jupiter.api.Test; import org.testcontainers.containers.Neo4jContainer; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testcontainers/vanilla/MyIntegrationTests.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/testcontainers/vanilla/MyIntegrationTests.java similarity index 93% rename from spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testcontainers/vanilla/MyIntegrationTests.java rename to spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/testcontainers/vanilla/MyIntegrationTests.java index 454b2f0cb13..30f4a5f719f 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testcontainers/vanilla/MyIntegrationTests.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/testing/testcontainers/vanilla/MyIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docs.howto.testcontainers.vanilla; +package org.springframework.boot.docs.howto.testing.testcontainers.vanilla; import org.junit.jupiter.api.Test; import org.testcontainers.containers.Neo4jContainer; From e08d4f1fe6f21e056a6533a5b05299b4186a73e7 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 18 May 2021 11:32:55 -0700 Subject: [PATCH 3/3] Move "Use Jedis Instead of Lettuce" How-to See gh-26262 --- .../src/docs/asciidoc/anchor-rewrite.properties | 2 +- .../spring-boot-docs/src/docs/asciidoc/howto.adoc | 2 -- .../{jedis-instead-of-lettuce.adoc => nosql.adoc} | 11 +++++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) rename spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/{jedis-instead-of-lettuce.adoc => nosql.adoc} (81%) diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties index e59b2e49be9..4d5b3dc9ac0 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/anchor-rewrite.properties @@ -2845,7 +2845,7 @@ howto.traditional-deployment.weblogic # 2 == Use Jedis Instead of Lettuce howto-use-jedis-instead-of-lettuce=\ -howto.jedis-instead-of-lettuce +howto.nosql.jedis-instead-of-lettuce # 2 == Use Testcontainers for integration testing howto-testcontainers=\ diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc index 2a50295f68a..76523555c91 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto.adoc @@ -48,5 +48,3 @@ include::howto/testing.adoc[] include::howto/build.adoc[] include::howto/traditional-deployment.adoc[] - -include::howto/jedis-instead-of-lettuce.adoc[] diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/jedis-instead-of-lettuce.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/nosql.adoc similarity index 81% rename from spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/jedis-instead-of-lettuce.adoc rename to spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/nosql.adoc index 7cea12e54ec..c7be21231a0 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/jedis-instead-of-lettuce.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/howto/nosql.adoc @@ -1,5 +1,12 @@ -[[howto.jedis-instead-of-lettuce]] -== Use Jedis Instead of Lettuce +[[howto.nosql]] +== NoSQL +Spring Boot offers a number of starters that support NoSQL technologies. +This section answers questions that arise from using NoSQL with Spring Boot. + + + +[[howto.nosql.jedis-instead-of-lettuce]] +=== Use Jedis Instead of Lettuce By default, the Spring Boot starter (`spring-boot-starter-data-redis`) uses https://github.com/lettuce-io/lettuce-core/[Lettuce]. You need to exclude that dependency and include the https://github.com/xetorthio/jedis/[Jedis] one instead. Spring Boot manages both of these dependencies so you can switch to Jedis without specifying a version.