1. JWT 저장 위치
JWT 는 핸드폰의 하드와 메모리에 저장한다.
이는 핸드폰이 서버와 연결할 때 (통신) 메모리에 있는 토큰에 접근하기가 쉽기 때문이다.
메모리에 있는 토큰은 앱 종료시 사라진다. 그러나 다음번 앱 접속 시 하드의 토큰을 확인하여 계속 로그인이 유지되거나, 로그인이 해제된다.
1-1. JWT 확인


Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpbWdVcmwiOiIvaW1hZ2VzLzEucG5nIiwic3ViIjoibWV0YWNvZGluZyIsImlkIjoxLCJleHAiOjE3MjkxMzMwNzksInVzZXJuYW1lIjoic3NhciJ9.WDrMaEzu53ndfUzsU0wvXYba_Hei5GfyS3av8qgTDaNkfrz04VboUrgWXm9kj-RIqba6lBHmg8JoyH0eC3xdjg
2. 테스트 코드
@Test
public void join_test() throws Exception {
String fakeBase64Image = "data:image/jpg;base64," +
RandomStringUtils.randomAlphanumeric(1000);
UserRequest.JoinDTO joinDTO = new UserRequest.JoinDTO();
joinDTO.setUsername("hello");
joinDTO.setPassword("1234");
joinDTO.setEmail("hello@nate.com");
joinDTO.setImgBase64(fakeBase64Image);
String requestBody = om.writeValueAsString(joinDTO);
System.out.println(requestBody);
ResultActions resultActions = mvc.perform(
post("/join").content(requestBody).contentType(MediaType.APPLICATION_JSON)
);
// console
String responseBody = resultActions.andReturn().getResponse().getContentAsString();
System.out.println("테스트 : " + responseBody);
// verify
resultActions.andExpect(jsonPath("$.success").value("true"));
resultActions.andExpect(jsonPath("$.response.id").value(4));
resultActions.andExpect(jsonPath("$.response.username").value("hello"));
resultActions.andExpect(jsonPath("$.response.imgUrl").value(Matchers.endsWith(".jpg")));
resultActions.andExpect(jsonPath("$.status").value(200));
resultActions.andExpect(jsonPath("$.errorMessage").isEmpty());
resultActions.andDo(MockMvcResultHandlers.print());
resultActions.andDo(document);
}
SpringBootTest
가짜 서버에 띄워서 전체 점증하는 어노테이션. Mock 이라는 가상의 서버에 들어있다.
- $ → 중괄호 최상단. 을 의미한다.
- restdocs 은 통합 테스트 코드를 넣으면 기존 코드를 건들이지 않아도 api 문서가 나온다.

Share article