@Transactional(readOnly = true)
    public User readUserIfValid(String username, String password) {
        Optional<User> user = userService.readUserByUsername(username);

        if (!isExistUser(user)) {
            log.warn("해당 유저가 존재하지 않습니다. username: {}", username);
            throw new UserErrorException(UserErrorCode.INVALID_USERNAME_OR_PASSWORD);
        }

        if (!isValidPassword(password, user.get())) {
            log.warn("비밀번호가 일치하지 않습니다. username: {}", username);
            throw new UserErrorException(UserErrorCode.INVALID_USERNAME_OR_PASSWORD);
        }

        return user.get();
    }
@DisplayName("로그인 시, username에 해당하는 유저가 존재하지 않으면 UserErrorException을 발생시킨다.")
    @Test
    void readUserIfNotFound() {
        // given
        given(userService.readUserByUsername("pennyway")).willThrow(new UserErrorException(UserErrorCode.NOT_FOUND));

        // when - then
        UserErrorException exception = assertThrows(UserErrorException.class, () -> userGeneralSignService.readUserIfValid("pennyway", "password"));
        System.out.println(exception.getExplainError());
    }