SWM-99-degree / jariBean

SWM 14th JariBean Project
0 stars 1 forks source link

bug <김상현 #166> Google 소셜 로그인시 nickname 필드가 존재하지 않을 경우의 처리 #167

Closed isayaksh closed 1 year ago

isayaksh commented 1 year ago

✏️ Description

Google에 소셜 로그인 과정 중 사용자 정보를 조회 과정에서 Google 사용자의 nickname 필드의 값이 null인 경우가 있을 수 있다. nickname 필드 값을 null인 채로 방치한다면 서비스 제공 과정에서 오류가 발생할 수 있다.

{
    socialId=google_105677670165618934537,
    nickname=null,
    imageUrl=https://lh3.googleusercontent.com/a/default-user=s96-c
}

따라서 사용자 정보를 조회할 때 Google 사용자의 nickname 필드의 값이 null인 경우 default 값으로 Guest 값을 할당하기로 하였다.

🛠 Features

혹시 유저가 닉네임을 변경해서 null -> guest였던 닉네임이 다른 닉네임으로 변경되어도 로그인이 잘 처리되는지 궁금합니다.

해당 이슈를 검증하기 위해 소셜미디어에서 사용자 정보를 조회한 후 변경된 값을 update해주는 로직의 테스트 코드를 작성하였고 닉네임의 변경이 발생하여도 데이터베이스에서 올바르게 update가 발생하는 것을 확인할 수 있습니다!

Test Code

    @Test
    public void saveOrUpdateTest() throws Exception {
        // nickname is null
        SocialUserInfo kakaoSocialUserInfo1 = SocialUserInfo.create("KAKAO", "kakao_id", "Guest", "kakak0_imageUrl");
        oAuthService.saveOrUpdate(kakaoSocialUserInfo1);

        User beforeFindUser = userRepository.findBySocialId("KAKAO_kakao_id")
                .orElseThrow(() -> new CustomApiException("Could not find user information by social id"));
        assertThat(beforeFindUser.getNickname()).isEqualTo("Guest");

        // nickname is not null
        SocialUserInfo kakaoSocialUserInfo2 = SocialUserInfo.create("KAKAO", "kakao_id", "kakao_nickname", "kakak0_imageUrl");
        oAuthService.saveOrUpdate(kakaoSocialUserInfo2);

        User afterFindUser = userRepository.findBySocialId("KAKAO_kakao_id")
                .orElseThrow(() -> new CustomApiException("Could not find user information by social id"));
        assertThat(afterFindUser.getNickname()).isEqualTo("kakao_nickname");
    }

Result

image