728x90
상태코드 : 302
하이퍼텍스트 전송 프로토콜 (HTTP)의 302 Found 리다이렉트 상태 응답 코드는 클라이언트가 요청한 리소스가 Location 헤더에 주어진 URL에 일시적으로 이동되었음을 가리킨다.[출처 : https://developer.mozilla.org/ko/docs/Web/HTTP/Status/302]
그래서.
springboot 테스트에서는... redirect응답의 경우
status().isOk()는 200 상태코드를 증명하는 코드이고,
status().is3xxRedirection()가 3xx 상태코드를 증명하는 코드입니다. redirect 관련 상태코드입니다.
상태코드 : 403
월드 와이드 웹에 쓰이는 HTTP 프로토콜에서 403 Forbidden은 서버가 허용하지 않는 웹 페이지나 미디어를 사용자가 요청할 때 웹 서버가 반환하는 HTTP 상태 코드이다. 다시 말해, 클라이언트가 서버에 도달할 수 있어도 서버가 페이지 접근 허용을 거부했다는 것을 뜻한다. 위키백과
어떤 경우에 이런 상태코드를 볼 수 있냐면...
Springboot Security 의존성을 추가하고, Form submit을 통해서 서버에 값이 잘 들어가는지 단위테스트를 할 때 발생합니다. 그 이유는 Springboot Security 자체적으로 Client응답에 Form태그 안에 csrf라는 코드값이 hidden상태로 끼여서 응답이 내보내집니다. 그래서 Client가 이 Form태그에 값을 입력해서 요청을 다시 던지면, 서버가 들고 있는 csrf 토큰 값과 요청에서 오는 csrf 토큰 값을 비교합니다. 일치하면, form submit요청이 받아들여 지지만, 일치하지 않을 경우에는 403상태코드가 반환됩니다.
해결방법
경우1. 단위테스트
403 상태코드를 200 정상 요청 상태코드로 탈출을 하려면, 단위테스트 할 때에 csrf token값을 역시 form submit에 파라미터값으로 넣어서 요청을 보내줘야 합니다.
다음과 같이 with()메소드 안에 scrf()메소드를 넣어주면 됩니다.
경우2. Ajax
상태코드 : 400
badRequest
상태코드 : 405
728x90
'SpringBoot' 카테고리의 다른 글
[면접]springboot 예상 질문 (0) | 2020.07.30 |
---|---|
[Springboot+Docker+AWSLightsail]애플리케이션 배포하기 (1) | 2020.07.25 |
[springboot] Junit gradle 4버전으로 변경하기 (0) | 2020.04.23 |
[springBoot] lombok 세팅하기 (0) | 2020.04.19 |
[Spring boot] spring boot??? (0) | 2019.05.16 |
댓글