반응형
서블릿 필터를 테스트 하고 싶었는데 ...
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())
}
}
반응형
'개발이야기' 카테고리의 다른 글
정규식은 항상 헷갈림 (0) | 2021.02.15 |
---|---|
테스트 컨테이너 ~ 굿 ! (0) | 2021.01.20 |
JPA 업데이트 동시성 문제 (feat. @DynamicUpdate) (0) | 2020.06.12 |
When should you use 'private static final' (0) | 2019.10.17 |
DateTimeFomatter 에서 밀리세컨드 노출 여부 (0) | 2019.07.10 |