diff --git a/src/main/java/org/runimo/runimo/auth/service/SignUpUsecaseImpl.java b/src/main/java/org/runimo/runimo/auth/service/SignUpUsecaseImpl.java index 00b5001..f9e0f95 100644 --- a/src/main/java/org/runimo/runimo/auth/service/SignUpUsecaseImpl.java +++ b/src/main/java/org/runimo/runimo/auth/service/SignUpUsecaseImpl.java @@ -40,15 +40,19 @@ public class SignUpUsecaseImpl implements SignUpUsecase { @Override @Transactional public SignupUserResponse register(UserSignupCommand command) { + // 1. 토큰 검증 SignupTokenPayload payload = jwtResolver.getSignupTokenPayload(command.registerToken()); SignupToken signupToken = findUnExpiredSignupToken(payload.token()); + // 2. 유저생성 userRegisterService.validateExistingUser(payload.providerId(), payload.socialProvider()); String imgUrl = fileStorageService.storeFile(command.profileImage()); User savedUser = userRegisterService.registerUser( mapToUserCreateCommand(payload, imgUrl, command)); + // 3. 애플 토큰 생성 if (payload.socialProvider() == SocialProvider.APPLE) { createAppleUserToken(savedUser.getId(), signupToken); } + // 4. 신규회원 보상 지급 Egg grantedEgg = eggGrantService.grantGreetingEggToUser(savedUser); removeSignupToken(payload.token()); diff --git a/src/main/java/org/runimo/runimo/user/service/UserCreator.java b/src/main/java/org/runimo/runimo/user/service/UserCreator.java index cc22a32..1d3be6f 100644 --- a/src/main/java/org/runimo/runimo/user/service/UserCreator.java +++ b/src/main/java/org/runimo/runimo/user/service/UserCreator.java @@ -19,6 +19,7 @@ @RequiredArgsConstructor public class UserCreator { + private final static long GREETING_LOVE_POINT = 10; private final UserRepository userRepository; private final OAuthInfoRepository oAuthInfoRepository; private final LovePointRepository lovePointRepository; @@ -48,7 +49,7 @@ public OAuthInfo createUserOAuthInfo(User user, SocialProvider provider, String public LovePoint createLovePoint(Long userId) { LovePoint lovePoint = LovePoint.builder() .userId(userId) - .amount(0L) + .amount(GREETING_LOVE_POINT) .build(); return lovePointRepository.save(lovePoint); } diff --git a/src/test/java/org/runimo/runimo/auth/controller/AuthAcceptanceTest.java b/src/test/java/org/runimo/runimo/auth/controller/AuthAcceptanceTest.java index c2399d1..e4a4faf 100644 --- a/src/test/java/org/runimo/runimo/auth/controller/AuthAcceptanceTest.java +++ b/src/test/java/org/runimo/runimo/auth/controller/AuthAcceptanceTest.java @@ -98,6 +98,35 @@ void tearDown() { .body("payload.token_pair.refresh_token", notNullValue()); } + @Test + void 회원가입_시_애정포인트_10_지급() throws JsonProcessingException { + AuthSignupRequest request = new AuthSignupRequest(token, "username", Gender.UNKNOWN); + + String accessToken = String.valueOf(given() + .contentType(ContentType.MULTIPART) + .multiPart("request", objectMapper.writeValueAsString(request)) + .when() + .post("/api/v1/auth/signup") + .then() + .statusCode(HttpStatus.CREATED.value()) + .log().all() + .body("payload.nickname", equalTo("username")) + .body("payload.token_pair.access_token", notNullValue()) + .body("payload.token_pair.refresh_token", notNullValue()) + .extract() + .path("payload.token_pair.access_token").toString()); + + given() + .contentType(ContentType.JSON) + .header("Authorization", "Bearer " + accessToken) + .when() + .get("/api/v1/main") + .then() + .statusCode(HttpStatus.OK.value()) + .log().all() + .body("payload.user_info.love_point", equalTo(10)); + } + @Test void 토큰_오류_회원가입_실패_401응답() throws JsonProcessingException { AuthSignupRequest request = new AuthSignupRequest(token, "username", Gender.UNKNOWN);