Spring Boot version: 2.0.4.RELEASE
For the Spring Boot Test below, the test returns an unwanted 401 response:
"401" status, "error": "unauthorized"
What is the best way to disable Spring Security for the tests?
I tried a adding a configuration "security.basic.enabled=false" property like so:
@SpringBootTest(<br>
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,<br>
classes = TestApp.class,<br>
properties = {
"security.basic.enabled=false"
})
And also adding this annotation to the class:
@AutoConfigureMockMvc(secure = false)
But unfortunately the test still returns a "401" unauthorized error code.
Original test
@RunWith(SpringRunner.class)
@SpringBootTest(
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
classes = App.class
)
public class ExampleTest{
@Autowired
public void setup(@LocalServerPort int port) {
RestAssured.port = port;
}
@Test
public voidtestMethod() {
// This test code is not important to my question.
given().log().all().get("/resources").then().log().all().statusCode(HttpURLConnection.HTTP_BAD_REQUEST).body("error", equalTo("invalid_request")).body(not(containsString("error_reason")));
}
}
The class being unit tested is simple:
@SpringBootApplication
@RestController
public class App {
@GetMapping("/resources")
public String[] resources(
@RequestParam("mandatory_param") String mandatory,
@RequestParam("valid_param") @NotNull String validParam) {
return new String[]{"1", "2"};
}
...
}
Does anyone know how to disable spring security for the test? Thank you