개발이야기
MockMvc Test 대신 실제 Url 호출 테스트 (서블릿 필터 테스트)
donny.00
2020. 9. 23. 18:59
반응형
서블릿 필터를 테스트 하고 싶었는데 ...
mockMvc 테스트로는 제대로 호출을 할수가 안됨.
@SpringBootTest를 이용해 랜덤포트로 띄우고 restTemplate 으로 호출하면 되더라.
간단한건데 바로 생각이 안나서 좀 삽질했음.
@ActiveProfiles("sandbox")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class FilterTest @Autowired constructor(
val restTemplate: TestRestTemplate
) {
val internalUrl = "/api/v1/internal/use"
@Test
@DisplayName("appGw 통해서 internal api 호출시 403 응답 ")
fun callInternalApiWithExternalHeader() {
//Set the headers you need send
val headers = HttpHeaders()
headers.set(APP_GW_CHECK_HEADER, "{'id':'test'}")
//Create a new HttpEntity
val entity: HttpEntity<String> = HttpEntity<String>(headers)
//Execute the method writing your HttpEntity to the request
val response = restTemplate.exchange(
internalUrl, HttpMethod.GET, entity,
String::class.java
)
println(response.body)
assertEquals(403, response.statusCode.value())
}
@Test
@DisplayName("appGw 헤더 없이 internal api 호출시 200 응답 ")
fun callInternalApiWithoutExternalHeader() {
val response =
restTemplate.postForEntity(
internalUrl, "body", String::class.java
)
println(response.body)
assertEquals(200, response.statusCode.value())
}
}
반응형