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