diff --git a/spring-boot-testing/pom.xml b/spring-boot-testing/pom.xml
index 2a498e54c5..c2c886a4fe 100644
--- a/spring-boot-testing/pom.xml
+++ b/spring-boot-testing/pom.xml
@@ -23,6 +23,10 @@
org.springframework.boot
spring-boot-starter-tomcat
+
+ org.springframework.boot
+ spring-boot-starter-security
+
org.springframework.boot
spring-boot-starter-test
@@ -43,6 +47,13 @@
${spock.version}
test
+
+
+ io.rest-assured
+ rest-assured
+ test
+
+
@@ -98,51 +109,14 @@
-
+
-
-
- autoconfiguration
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- integration-test
-
- test
-
-
-
- **/*LiveTest.java
- **/*IntegrationTest.java
- **/*IntTest.java
-
-
- **/AutoconfigurationTest.java
-
-
-
-
-
-
- json
-
-
-
-
-
-
-
-
- org.baeldung.boot.Application
+ com.baeldung.boot.Application
2.2.4
1.2-groovy-2.4
diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/Application.java b/spring-boot-testing/src/main/java/com/baeldung/boot/Application.java
index c1b6558b26..cb0d0c1532 100644
--- a/spring-boot-testing/src/main/java/com/baeldung/boot/Application.java
+++ b/spring-boot-testing/src/main/java/com/baeldung/boot/Application.java
@@ -1,4 +1,4 @@
-package org.baeldung.boot;
+package com.baeldung.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/controller/rest/HomeController.java b/spring-boot-testing/src/main/java/com/baeldung/boot/controller/rest/HomeController.java
new file mode 100644
index 0000000000..595c34254b
--- /dev/null
+++ b/spring-boot-testing/src/main/java/com/baeldung/boot/controller/rest/HomeController.java
@@ -0,0 +1,14 @@
+package com.baeldung.boot.controller.rest;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class HomeController {
+
+ @GetMapping("/")
+ public String salutation() {
+ return "Welcome !";
+ }
+
+}
\ No newline at end of file
diff --git a/spring-boot-testing/src/main/java/com/baeldung/boot/controller/rest/WebController.java b/spring-boot-testing/src/main/java/com/baeldung/boot/controller/rest/WebController.java
index 5b65599e00..7247ca3dfa 100644
--- a/spring-boot-testing/src/main/java/com/baeldung/boot/controller/rest/WebController.java
+++ b/spring-boot-testing/src/main/java/com/baeldung/boot/controller/rest/WebController.java
@@ -1,4 +1,6 @@
-package org.baeldung.boot.controller.rest;
+package com.baeldung.boot.controller.rest;
+
+import java.util.Optional;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -9,8 +11,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import java.util.Optional;
-
@RestController
@RequestMapping("/hello")
public class WebController {
diff --git a/spring-boot-testing/src/main/resources/application-test.properties b/spring-boot-testing/src/main/resources/application-test.properties
new file mode 100644
index 0000000000..8d5e86ba26
--- /dev/null
+++ b/spring-boot-testing/src/main/resources/application-test.properties
@@ -0,0 +1,3 @@
+
+# test properties
+spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
\ No newline at end of file
diff --git a/spring-boot-testing/src/main/resources/application.properties b/spring-boot-testing/src/main/resources/application.properties
new file mode 100644
index 0000000000..e378aacdd5
--- /dev/null
+++ b/spring-boot-testing/src/main/resources/application.properties
@@ -0,0 +1,4 @@
+
+# security
+spring.security.user.name=john
+spring.security.user.password=123
\ No newline at end of file
diff --git a/spring-boot-testing/src/test/groovy/org/baeldung/boot/LoadContextTest.groovy b/spring-boot-testing/src/test/groovy/com/baeldung/boot/LoadContextTest.groovy
similarity index 87%
rename from spring-boot-testing/src/test/groovy/org/baeldung/boot/LoadContextTest.groovy
rename to spring-boot-testing/src/test/groovy/com/baeldung/boot/LoadContextTest.groovy
index 2d4a7ca2cf..85b0a4b89b 100644
--- a/spring-boot-testing/src/test/groovy/org/baeldung/boot/LoadContextTest.groovy
+++ b/spring-boot-testing/src/test/groovy/com/baeldung/boot/LoadContextTest.groovy
@@ -1,6 +1,6 @@
-package org.baeldung.boot
+package com.baeldung.boot
-import org.baeldung.boot.controller.rest.WebController
+import com.baeldung.boot.controller.rest.WebController
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import spock.lang.Narrative
diff --git a/spring-boot-testing/src/test/groovy/org/baeldung/boot/WebControllerTest.groovy b/spring-boot-testing/src/test/groovy/com/baeldung/boot/WebControllerTest.groovy
similarity index 96%
rename from spring-boot-testing/src/test/groovy/org/baeldung/boot/WebControllerTest.groovy
rename to spring-boot-testing/src/test/groovy/com/baeldung/boot/WebControllerTest.groovy
index fe1b34ab8c..d8b4e03adc 100644
--- a/spring-boot-testing/src/test/groovy/org/baeldung/boot/WebControllerTest.groovy
+++ b/spring-boot-testing/src/test/groovy/com/baeldung/boot/WebControllerTest.groovy
@@ -1,4 +1,4 @@
-package org.baeldung.boot
+package com.baeldung.boot
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
@@ -12,8 +12,8 @@ import spock.lang.Title
@Title("WebController Specification")
@Narrative("The Specification of the behaviour of the WebController. It can greet a person, change the name and reset it to 'world'")
-@AutoConfigureMockMvc
-@WebMvcTest
+@AutoConfigureMockMvc(secure=false)
+@WebMvcTest()
class WebControllerTest extends Specification {
@Autowired
diff --git a/spring-boot-testing/src/test/groovy/com/baeldung/boot/WebControllerTest.groovy alias b/spring-boot-testing/src/test/groovy/com/baeldung/boot/WebControllerTest.groovy alias
new file mode 100644
index 0000000000..f2fc2f48e2
Binary files /dev/null and b/spring-boot-testing/src/test/groovy/com/baeldung/boot/WebControllerTest.groovy alias differ
diff --git a/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig1IntegrationTest.java b/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig1IntegrationTest.java
new file mode 100644
index 0000000000..a4a29cddf3
--- /dev/null
+++ b/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig1IntegrationTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.autoconfig.exclude;
+
+import static org.junit.Assert.assertEquals;
+import io.restassured.RestAssured;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.http.HttpStatus;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.boot.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.DEFINED_PORT)
+@TestPropertySource(properties = "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration")
+public class ExcludeAutoConfig1IntegrationTest {
+
+ @Test
+ public void givenSecurityConfigExcluded_whenAccessHome_thenNoAuthenticationRequired() {
+ int statusCode = RestAssured.get("http://localhost:8080/").statusCode();
+ assertEquals(HttpStatus.OK.value(), statusCode);
+ }
+}
diff --git a/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig2IntegrationTest.java b/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig2IntegrationTest.java
new file mode 100644
index 0000000000..cdf79b159c
--- /dev/null
+++ b/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig2IntegrationTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.autoconfig.exclude;
+
+import static org.junit.Assert.assertEquals;
+import io.restassured.RestAssured;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.http.HttpStatus;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.boot.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.DEFINED_PORT)
+@ActiveProfiles("test")
+public class ExcludeAutoConfig2IntegrationTest {
+
+ @Test
+ public void givenSecurityConfigExcluded_whenAccessHome_thenNoAuthenticationRequired() {
+ int statusCode = RestAssured.get("http://localhost:8080/").statusCode();
+ assertEquals(HttpStatus.OK.value(), statusCode);
+ }
+}
diff --git a/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig3IntegrationTest.java b/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig3IntegrationTest.java
new file mode 100644
index 0000000000..0e45d1e9e5
--- /dev/null
+++ b/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig3IntegrationTest.java
@@ -0,0 +1,27 @@
+package com.baeldung.autoconfig.exclude;
+
+import static org.junit.Assert.assertEquals;
+import io.restassured.RestAssured;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.http.HttpStatus;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.boot.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.DEFINED_PORT)
+@EnableAutoConfiguration(exclude=SecurityAutoConfiguration.class)
+public class ExcludeAutoConfig3IntegrationTest {
+
+ @Test
+ public void givenSecurityConfigExcluded_whenAccessHome_thenNoAuthenticationRequired() {
+ int statusCode = RestAssured.get("http://localhost:8080/").statusCode();
+ assertEquals(HttpStatus.OK.value(), statusCode);
+ }
+}
diff --git a/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig4IntegrationTest.java b/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig4IntegrationTest.java
new file mode 100644
index 0000000000..8429aed6cd
--- /dev/null
+++ b/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/ExcludeAutoConfig4IntegrationTest.java
@@ -0,0 +1,22 @@
+package com.baeldung.autoconfig.exclude;
+
+import static org.junit.Assert.assertEquals;
+import io.restassured.RestAssured;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.http.HttpStatus;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = TestApplication.class, webEnvironment = WebEnvironment.DEFINED_PORT)
+public class ExcludeAutoConfig4IntegrationTest {
+
+ @Test
+ public void givenSecurityConfigExcluded_whenAccessHome_thenNoAuthenticationRequired() {
+ int statusCode = RestAssured.get("http://localhost:8080/").statusCode();
+ assertEquals(HttpStatus.OK.value(), statusCode);
+ }
+}
diff --git a/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/TestApplication.java b/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/TestApplication.java
new file mode 100644
index 0000000000..7c162f85ab
--- /dev/null
+++ b/spring-boot-testing/src/test/java/com/baeldung/autoconfig/exclude/TestApplication.java
@@ -0,0 +1,13 @@
+package com.baeldung.autoconfig.exclude;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
+
+@SpringBootApplication(scanBasePackages="com.baeldung.boot", exclude=SecurityAutoConfiguration.class)
+public class TestApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(TestApplication.class, args);
+ }
+}
diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/SpringContextIntegrationTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/SpringContextIntegrationTest.java
new file mode 100644
index 0000000000..63ab07fdb7
--- /dev/null
+++ b/spring-boot-testing/src/test/java/com/baeldung/boot/SpringContextIntegrationTest.java
@@ -0,0 +1,15 @@
+package com.baeldung.boot;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class SpringContextIntegrationTest {
+
+ @Test
+ public void whenSpringContextIsBootstrapped_thenNoExceptions() {
+ }
+}
diff --git a/spring-boot-testing/src/test/java/com/baeldung/boot/autoconfig/AutoConfigIntegrationTest.java b/spring-boot-testing/src/test/java/com/baeldung/boot/autoconfig/AutoConfigIntegrationTest.java
new file mode 100644
index 0000000000..fe71f44ddf
--- /dev/null
+++ b/spring-boot-testing/src/test/java/com/baeldung/boot/autoconfig/AutoConfigIntegrationTest.java
@@ -0,0 +1,30 @@
+package com.baeldung.boot.autoconfig;
+
+import static org.junit.Assert.assertEquals;
+import io.restassured.RestAssured;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.http.HttpStatus;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.baeldung.boot.Application;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.DEFINED_PORT)
+public class AutoConfigIntegrationTest {
+
+ @Test
+ public void givenNoAuthentication_whenAccessHome_thenUnauthorized() {
+ int statusCode = RestAssured.get("http://localhost:8080/").statusCode();
+ assertEquals(HttpStatus.UNAUTHORIZED.value(), statusCode);
+ }
+
+ @Test
+ public void givenAuthentication_whenAccessHome_thenOK() {
+ int statusCode = RestAssured.given().auth().basic("john", "123").get("http://localhost:8080/").statusCode();
+ assertEquals(HttpStatus.OK.value(), statusCode);
+ }
+}