API integration test list - KimGyuBek/Threadly GitHub Wiki

API 톡합 ν…ŒμŠ€νŠΈ λͺ©λ‘

threadly-service

ν…ŒμŠ€νŠΈ 클래슀: 46

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ: 230개



notification-service

ν…ŒμŠ€νŠΈ 클래슀: 10개

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ: 90개



CancelFollowRequestApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
cancelFollowRequest_shouldSuccess_01 νŒ”λ‘œμš° μš”μ²­ μ·¨μ†Œ API ν…ŒμŠ€νŠΈ
cancelFollowRequest_shouldFaile_01 μ‹€νŒ¨
cancelFollowRequest_shouldFaile_02 2, μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” νŒ”λ‘œμš° 관계에 λŒ€ν•΄μ„œ μš”μ²­ 취둜λ₯Ό ν•  경우 μ‹€νŒ¨ 검증
cancelFollowRequest_shouldFail_03 3. 이미 μ·¨μ†Œ 처리된 νŒ”λ‘œμš° μš”μ²­μ— λŒ€ν•΄μ„œ μ·¨μ†Œ μš”μ²­μ„ ν•  경우 μ‹€νŒ¨ 검증

ChangePasswordApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
changePasswordApiTest_shouldSuccess μ‚¬μš©μž λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ κ΄€λ ¨ API ν…ŒμŠ€νŠΈ
changePasswordApiTest_shouldReturn400BadRequest_whenChangePasswordWithout2FA μ‹€νŒ¨

CreateMyProfileApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
setUserProfile_shouldCreateOrUpdateProfile_whenAuthenticatedUserRequests μ‚¬μš©μž ν”„λ‘œν•„ 생성 ν…ŒμŠ€νŠΈ
setUserProfile_shouldReturn409Conflict_whenUserProfileExists μ‹€νŒ¨
setUserProfile_shouldReturn409Conflict_whenNicknameAlreadyExists 2. μ€‘λ³΅λœ λ‹‰λ„€μž„μœΌλ‘œ μˆ˜μ • μš”μ²­μ„ λ³΄λƒˆμ„ 경우 409 Conflict
login_shouldReturn403_whenUserProfileNotSet μ‚¬μš©μž ν”„λ‘œν•„μ„ μ„€μ •ν•˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ 인증을 ν•„μš”λ‘œν•œ κ²½λ‘œμ— 접속 ν•  경우 403 Forbidden

CreatePostApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
createPost_shouldCreatedContent_whenCreatePostWithValidInput κ²Œμ‹œκΈ€ 생성 ν…ŒμŠ€νŠΈ
createPost_shouldReturnBadRequest_whenContentIsBlank μ‹€νŒ¨
createPost_shouldReturnBadRequest_whenContentExceedsMaxLength 2. κ²Œμ‹œκΈ€ λ‚΄μš©μ΄ μ΅œλŒ€ 길이λ₯Ό μ΄ˆκ³Όν•  경우 400 BadRequest

CreatePostCommentApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
createPostComment_shouldSucceed_whenPostIsActive κ²Œμ‹œκΈ€ λŒ“κΈ€ 생성 ν…ŒμŠ€νŠΈ
createPostComment_shouldReturnBadRequest_whenPostIsDeleted μ‹€νŒ¨
createPostComment_shouldReturnBadRequest_whenPostIsBlocked 2. BLOCKED μƒνƒœμ˜ κ²Œμ‹œκΈ€μ— λŒ“κΈ€ μž‘μ„± μš”μ²­μ„ ν•˜λŠ” 경우 400 Bad Request
createPostComment_shouldReturnBadRequest_whenPostIsArchived 3. ARCHIVE μƒνƒœμ˜ κ²Œμ‹œκΈ€μ— λŒ“κΈ€ μž‘μ„± μš”μ²­μ„ ν•˜λŠ” 경우 400 Bad Request
createPostComment_shouldReturnBadRequest_whenContentIsEmpty 4. λΉ„μ–΄μžˆλŠ” content둜 μš”μ²­μ„ 보낼 경우 400 Bad Request
createPostComment_shouldReturnBadRequest_whenContentExceedsMaxLength 5. λŒ“κΈ€μ΄ μ΅œλŒ€ 길이λ₯Ό μ΄ˆκ³Όν•  경우 400 Bad Request

CreatePostCommentLikeApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
likePostComment_shouldReturnCreated_whenUserLikesActiveComment κ²Œμ‹œκΈ€ λŒ“κΈ€ μ’‹μ•„μš” ν…ŒμŠ€νŠΈ
likePostComment_shouldAccumulateLikeCount_whenMultipleUserLike 2. μ—¬λŸ¬ μ‚¬μš©μžκ°€ λŒ“κΈ€μ— μ’‹μ•„μš”λ₯Ό λˆŒλ €μ„ 경우 응닡 검증
likePostComment_shouldBeIdempotent_whenUserLikesSameCommentMultipleTimes 3. λ™μΌν•œ μ‚¬μš©μžκ°€ μ—¬λŸ¬λ²ˆ μš”μ²­μ„ 보내도 λ©±λ“±ν•˜λŠ”μ§€ 검증
likePostComment_shouldReturnBadRequest_whenCommentIsDeleted μ‹€νŒ¨
likePostComment_shouldReturnBadRequest_whenCommentIsBlocked 2. BLOCKED μƒνƒœμ˜ λŒ“κΈ€μ— μ’‹μ•„μš” μš”μ²­ μ‹œ 400 BadRequest

CreatePostWithImageTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
createPostWithImages_shouldSucceed_whenUploadOneImage 성곡

DeactivateMyAccountApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
deactivateMyAccount_shouldSuccess_whenUserIdExists λ‚΄ 계정 λΉ„ν™œμ„±ν™” ν…ŒμŠ€νŠΈ
deactivateMyAccount_shouldReturn403Forbidden_whenUserRequestAuthorizedEndPointAfterWithdraw μ‹€νŒ¨
deactivateMyAccount_shouldReturn400BadRequest_whenAccessAuthorizedPathAfterUserDeactivate 2. 계정 λΉ„ν™œμ„±ν™” ν›„ 인증을 ν•„μš”λ‘œν•œ 경둜둜 접근이 λΆˆκ°€λŠ₯ν•œμ§€ 검증
deactivateMyAccount_shouldReturn400BadRequest_whenDeactivateWithout2FA 3. 이쀑인증 없이 λΉ„ν™œμ„±ν™”λ₯Ό μš”μ²­ ν•  경우 λΆˆκ°€λŠ₯ν•œμ§€ 검증
deactivateMyAccount_shouldReturn_whenReissueAccessTokenAfterUserDeactivate 4. 계정 λΉ„ν™œμ„±ν™” ν›„ 토큰 μž¬λ°œκΈ‰ λΆˆκ°€λŠ₯ν•œμ§€ 검증

DeletePostApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
deletePostWithImage_shouldSucceed_whenHasImage 성곡
deletePostWithImage_shouldSucceed_whenHasNotImage 2. 이미지가 μ—†λŠ” κ²Œμ‹œκΈ€ μ‚­μ œ μš”μ²­ μ‹œ DELETED μƒνƒœ 검증
deletePostWithImage_shouldSucceed_whenHasAllActivities 3. λͺ¨λ“  ν™œλ™μ΄ μžˆλŠ” κ²Œμ‹œκΈ€μ„μ— λŒ€ν•œ μ‚­μ œ μš”μ²­ μ‹œ 데이터 검증
deletePostWithImage_shouldReturnNotFound_whenPostIdNotFound 1. μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” postId둜 μ‚­μ œ μš”μ²­ μ‹œ 404 Not Found
deletePostWithImage_shouldReturnBadRequest_whenPostAlreadyDeleted 2. 이미 μ‚­μ œλœ κ²Œμ‹œκΈ€μ— λŒ€ν•΄ μ‚­μ œ μš”μ²­ μ‹œ 400 Bad Request
deletePostWithImage_shouldReturnBadRequest_whenPostBlocked 3. μ°¨λ‹¨λœ κ²Œμ‹œκΈ€μ„ μ‚­μ œ μš”μ²­ μ‹œ 400 Bad Request
deletePostWithImage_shouldReturnForBidden_whenPostWriterNotEqualsRequester 4. κ²Œμ‹œκΈ€ μž‘μ„±μžμ™€ μ‚­μ œ μš”μ²­μžκ°€ 일치 ν•˜μ§€ μ•ŠλŠ” 경우 403 Forbidden

DeletePostCommentLikeApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
cancelPostCommentLike_shouldCancelLikeAndDecreaseLikeCountWhenAlreadyLiked κ²Œμ‹œκΈ€ λŒ“κΈ€ μ’‹μ•„μš” μ·¨μ†Œ ν…ŒμŠ€νŠΈ
cancelPostCommentLike_shouldBeIdempotentWhenCancelLikeMultipleTimes 2. μ‚¬μš©μžκ°€ μ—¬λŸ¬λ²ˆ μ’‹μ•„μš” μ·¨μ†Œ μš”μ²­μ„ 보내도 λ©±λ“±ν•œμ§€ 검증
cancelPostCommentLike_shouldNotFailWhenUserDidNotLikeBefore 3. μ‚¬μš©μžκ°€ μ’‹μ•„μš”λ₯Ό λˆ„λ₯΄μ§€ μ•Šμ€ μƒνƒœμ—μ„œ μ·¨μ†Œ μš”μ²­ μ‹œ λ©±λ“±ν•œμ§€ 검증

DeletePostLikeApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
cancelPostLike_shouldReturnCreated_whenUserLikedPost κ²Œμ‹œκΈ€ μ’‹μ•„μš” μ·¨μ†Œ ν…ŒμŠ€νŠΈ
cancelPostLike_shouldBeIdempotent_whenUserMultipleRequest 2. μ‚¬μš©μžκ°€ μ’‹μ•„μš”λ₯Ό λˆ„λ₯Έ κ²Œμ‹œκΈ€μ— μ’‹μ•„μš” μ·¨μ†Œ μš”μ²­μ„ μ—¬λŸ¬λ²ˆ 보내도 λ©±λ“±ν•˜λŠ”μ§€ 검증
cancelPostLike_shouldIdempotent_whenUserLikedPostMultipleRequest 3. μ‚¬μš©μžκ°€ μ’‹μ•„μš”λ₯Ό λˆ„λ₯΄μ§€ μ•Šμ€ κ²Œμ‹œκΈ€μ— μ’‹μ•„μš” μ·¨μ†Œ μš”μ²­μ„ 보내면 λ©±λ“±ν•˜λŠ”μ§€ 검증
cancelPostLike_shouldReturnBadRequest_whenPostDeleted μ‹€νŒ¨
cancelPostLike_shouldReturnBadRequest_whenPostBlocked 2. BLOCKED μƒνƒœμ˜ κ²Œμ‹œκΈ€μ— μ’‹μ•„μš” μ·¨μ†Œ μš”μ²­μ„ 보내면 BadRequest
cancelPostLike_shouldReturnBadRequest_whenPostArchive 3. ARCHIVE μƒνƒœμ˜ κ²Œμ‹œκΈ€μ— μ’‹μ•„μš” μ·¨μ†Œ μš”μ²­μ„ 보내면 BadRequest

FollowUserApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
followUser_shouldSuccess_01 μ‚¬μš©μž νŒ”λ‘œμš° μš”μ²­ κ΄€λ ¨ API ν…ŒμŠ€νŠΈ
followUser_shouldSuccess_02 2. λΉ„κ³΅κ°œ 계정을 νŒ”λ‘œμš° μš”μ²­ν•˜λŠ” 경우 검증
followUser_shouldFail_01 μ‹€νŒ¨
followUser_shouldFail_02 2. νƒˆν‡΄ 처리된 μ‚¬μš©μžλ₯Ό νŒ”λ‘œμš° μš”μ²­ν•˜λŠ” 경우 μ‹€νŒ¨ 검증
followUser_shouldFail_03 3. λΉ„ν™œμ„±ν™” 처리 된 μ‚¬μš©μžλ₯Ό νŒ”λ‘œμš° μš”μ²­ν•˜λŠ” 경우 μ‹€νŒ¨ 검증
followUser_shouldFail_04 4. μžμ‹ μ—κ²Œ νŒ”λ‘œμš° μš”μ²­μ„ ν•˜λŠ” 경우 μ‹€νŒ¨ 검증

GetFollowRequestsApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getFollowRequests_shouldSuccess_01 νŒ”λ‘œμš° μš”μ²­ λͺ©λ‘ 쑰회 API ν…ŒμŠ€νŠΈ
getFollowRequests_shouldSuccess_02 2. νŒ”λ‘œμš° μš”μ²­ λͺ©λ‘ 전체 쑰회 검증
getFollowRequests_shouldSuccess_03 3. λΉ„κ³΅κ°œ 계정에 νŒ”λ‘œμš° μš”μ²­ μ‹œ νŒ”λ‘œμš° μš”μ²­ λͺ©λ‘μ— μΆ”κ°€ λ˜λŠ”μ§€ 검증
getFollowRequests_shouldSuccess_04 4. 곡개 계정에 νŒ”λ‘œμš° μš”μ²­ μ‹œ νŒ”λ‘œμš° μš”μ²­ λͺ©λ‘μ— μΆ”κ°€ λ˜μ§€ μ•ŠλŠ”μ§€ 검증
getFollowRequests_shouldSuccess_05 5. νŒ”λ‘œμš° μš”μ²­ μ·¨μ†Œ μ‹œ νŒ”λ‘œμš° μš”μ²­ λͺ©λ‘μ— λΆˆν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ 검증

GetFollowStatsApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getUserFollowStats_shouldSuccess_01 μ‚¬μš©μž νŒ”λ‘œμ›Œ, νŒ”λ‘œμž‰ 수 쑰회 API ν…ŒμŠ€νŠΈ
getUserFollowStats_shouldSuccess_02 2. 정상적인 νŒ”λ‘œμ›Œ, νŒ”λ‘œμž‰ 수 쑰회 μš”μ²­ 응닡 검증
getUserFollowStats_shouldSuccess_03 3. νŒ”λ‘œμ›Œ 및 νŒ”λ‘œμž‰ μ‚¬μš©μž νƒˆν‡΄ ν›„ 쑰회 μ‹œ 각각 μˆ˜κ°€ κ°μ†Œλ˜λŠ”μ§€ 검증
getUserFollowStats_shouldSuccess_04 4. νŒ”λ‘œμ›Œ 및 νŒ”λ‘œμž‰ μ‚¬μš©μž λΉ„ν™œμ„±ν™” ν›„ 쑰회 μ‹œ 각각 μˆ˜κ°€ κ°μ†Œλ˜λŠ”μ§€ 검증
getUserFollowStats_shouldSuccess_05 5. PENDING μƒνƒœμ˜ νŒ”λ‘œμš°κ°€ 포함 λ˜μ§€ μ•ŠλŠ”μ§€ 검증
getUserFollowStats_shouldFail_01 μ‹€νŒ¨
getUserFollowStats_shouldFail_02 2. νƒˆν‡΄ 처리된 μ‚¬μš©μžμ— λŒ€ν•œ μš”μ²­ 응닡 검증
getUserFollowStats_shouldFail_03 3. λΉ„ν™œμ„±ν™” 처리된 μ‚¬μš©μžμ— λŒ€ν•œ μš”μ²­ 응닡 검증

GetFollowersApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getFollowers_shouldSuccess_01 νŒ”λ‘œμ›Œ 쑰회 μš”μ²­ κ΄€λ ¨ API Test
getFollowers_shouldSuccess_02 2. νŒ”λ‘œμš° μš”μ²­ ν›„ ν•΄λ‹Ή μ‚¬μš©μžκ°€ νŒ”λ‘œμ›Œ λͺ©λ‘μ— ν¬ν•¨λ˜λŠ”μ§€ 검증
getFollowers_shouldSuccess_03 3. νŒ”λ‘œμš° μš”μ²­ 수락 λŒ€κΈ°μ€‘μΈ μ‚¬μš©μžκ°€ νŒ”λ‘œμ›Œ λͺ©λ‘μ— ν¬ν•¨λ˜λŠ”μ§€ 검증
getFollowers_shouldSuccess_04 4. μ–ΈνŒ”λ‘œμš° ν›„ μƒλŒ€λ°©μ˜ νŒ”λ‘œμ›Œ λͺ©λ‘μ—μ„œ μ œκ±°λ˜λŠ”μ§€ 검증
getFollowers_shouldSuccess_05 5. νŒ”λ‘œμ›Œ μ‚­μ œ ν›„ μƒλŒ€λ°©μ΄ νŒ”λ‘œμ›Œ λͺ©λ‘μ—μ„œ μ œκ±°λ˜λŠ”μ§€ 검증
getFollowers_shouldSuccess_06 6.νŒ”λ‘œμ›Œκ°€ μžˆλŠ” μ‚¬μš©μžμ˜ νŒ”λ‘œμ›Œ λͺ©λ‘ μ „μ œ 쑰회 검증
getFollowers_shouldSuccess_07 7. νŒ”λ‘œμ›Œ λͺ©λ‘μ—μ„œ λΉ„ν™œμ„±ν™” 된 μ‚¬μš©μžκ°€ ν¬ν•¨λ˜λŠ”μ§€ 검증
getFollowers_shouldSuccess_08 8. νŒ”λ‘œμ›Œ λͺ©λ‘μ—μ„œ νƒˆν‡΄μ²˜λ¦¬ 된 μ‚¬μš©μžκ°€ ν¬ν•¨λ˜λŠ”μ§€ 검증
getFollowers_shouldSuccess_09 9. λ‹€λ₯Έ μ‚¬μš©μžμ˜ νŒ”λ‘œμ›Œ λͺ©λ‘ 전체 쑰회 검증
getFollowers_shouldSuccess_10 10. λΉ„κ³΅κ°œ κ³„μ •μ΄λ©΄μ„œ νŒ”λ‘œμš° μƒνƒœμΈ μ‚¬μš©μžμ˜ νŒ”λ‘œμ›Œ λͺ©λ‘ μ „μ œ 쑰회 검증
getFollowers_shouldFail_01 μ‹€νŒ¨

GetFollowingsApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getFollowings_shouldSuccess_01 νŒ”λ‘œμž‰ 쑰회 μš”μ²­ κ΄€λ ¨ API Test
getFollowings_shouldSuccess_02 2. νŒ”λ‘œμš° μš”μ²­ ν›„ ν•΄λ‹Ή μ‚¬μš©μžκ°€ νŒ”λ‘œμž‰ λͺ©λ‘μ— ν¬ν•¨λ˜λŠ”μ§€ 검증
getFollowings_shouldSuccess_03 3. νŒ”λ‘œμš° μš”μ²­ 수락 λŒ€κΈ°μ€‘μΈ μ‚¬μš©μžκ°€ νŒ”λ‘œμž‰ λͺ©λ‘μ— ν¬ν•¨λ˜λŠ”μ§€ μ•ŠλŠ”μ§€ 검증
getFollowings_shouldSuccess_04 4. μ–ΈνŒ”λ‘œμš° ν›„ νŒ”λ‘œμž‰ λͺ©λ‘μ—μ„œ μ œκ±°λ˜λŠ”μ§€ 검증
getFollowings_shouldSuccess_05 5. νŒ”λ‘œμ›Œ μ‚­μ œ ν›„ μƒλŒ€λ°©μ˜ νŒ”λ‘œμž‰ λͺ©λ‘μ—μ„œ μ œκ±°λ˜λŠ”μ§€ 검증
getFollowings_shouldSuccess_06 6.νŒ”λ‘œμž‰ ν•˜λŠ” μ‚¬μš©μžκ°€ μžˆλŠ” μ‚¬μš©μžμ˜ νŒ”λ‘œμ›Œ λͺ©λ‘ μ „μ œ 쑰회 검증
getFollowings_shouldSuccess_07 7. νŒ”λ‘œμž‰ λͺ©λ‘μ—μ„œ λΉ„ν™œμ„±ν™” 된 μ‚¬μš©μžκ°€ ν¬ν•¨λ˜λŠ”μ§€ 검증
getFollowings_shouldSuccess_08 8. νŒ”λ‘œμž‰ λͺ©λ‘μ—μ„œ νƒˆν‡΄μ²˜λ¦¬ 된 μ‚¬μš©μžκ°€ ν¬ν•¨λ˜λŠ”μ§€ 검증
getFollowings_shouldSuccess_09 9. 곡개 계정인 λ‹€λ₯Έ μ‚¬μš©μžμ˜ νŒ”λ‘œμ›Œ λͺ©λ‘ 전체 쑰회 검증
getFollowings_shouldSuccess_10 10. λΉ„κ³΅κ°œ κ³„μ •μ΄λ©΄μ„œ νŒ”λ‘œμš° μƒνƒœμΈ μ‚¬μš©μžμ˜ νŒ”λ‘œμž‰ λͺ©λ‘ μ „μ œ 쑰회 검증
getFollowings_shouldFail_01 μ‹€νŒ¨

GetMyProfileApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getMyProfileDetails_shouldSuccess λ‚΄ ν”„λ‘œν•„ 쑰회 κ΄€λ ¨ API ν…ŒμŠ€νŠΈ

GetPostApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getPost_shouldReturnOk_whenGetExistingPost κ²Œμ‹œκΈ€ 쑰회 ν…ŒμŠ€νŠΈ
getPost_shouldReturnSameContentAndId_whenGetPostAfterCreation 2. κ²Œμ‹œκΈ€ μž‘μ„± ν›„ 쑰회 μ‹œ μž‘μ„±ν•œ λ‚΄μš©κ³Ό postIdκ°€ λ™μΌν•œμ§€ 검증
getPost_shouldReturnSameContentAndId_whenGetPostAfterUpdate 3. κ²Œμ‹œκΈ€ μž‘μ„± ν›„ μˆ˜μ • μ‹œ, μ‘°νšŒν•˜λ©΄ μˆ˜μ •λœ λ‚΄μš©μ΄ μ‘°νšŒλ˜λŠ”μ§€ 검증
getPost_shouldReturnNotFound_whenGetNotExistingPost μ‹€νŒ¨
getPostList_shouldReturnOk_whenGetExistingPost κ²Œμ‹œκΈ€ λͺ©λ‘ 쑰회 ν…ŒμŠ€νŠΈ
getPostList_shouldIterateAllPages_usingCursorPagination 2. μ»€μ„œ 기반 νŽ˜μ΄μ§•μœΌλ‘œ 전체 κ²Œμ‹œκΈ€ λ§ˆμ§€λ§‰ νŽ˜μ΄μ§€κΉŒμ§€ μˆœνšŒν•˜λ©° 쑰회
getPostEngagement_shouldNotFound_whenPostNotExists μ‹€νŒ¨

GetPostCommentApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getPostCommentList_shouldReturnNextCursor_whenFirstPageRequested κ²Œμ‹œκΈ€ λŒ“κΈ€ λͺ©λ‘ μ»€μ„œ 기반 쑰회
getPostCommentList_shouldReturnAllComments 2. κ²Œμ‹œκΈ€ λŒ“κΈ€ λͺ©λ‘ 전체 쑰회 검증
getPostCommentList_shouldReflectLikedField_whenLikeRequest 3. κ²Œμ‹œκΈ€ λŒ“κΈ€ μ’‹μ•„μš” μš”μ²­ ν›„ λŒ“κΈ€ λͺ©λ‘ 쑰회 μ‹œ ν•΄λ‹Ή λŒ“κΈ€μ˜ liked ν•„λ“œκ°€ true둜 λ³€ν•˜λŠ”μ§€ 검증
getPostCommentList_shouldReturnBadRequest_whenPostIsDeleted μ‹€νŒ¨
getPostCommentList_shouldReturnBadRequest_whenPostIsArchive 2. ARCHIVE μƒνƒœμ˜ κ²Œμ‹œκΈ€ λŒ“κΈ€ λͺ©λ‘ 쑰회 μ‹œ 400 Bad Request
getPostCommentList_shouldReturnBadRequest_whenPostIsBlocked 3. BLOCKED μƒνƒœμ˜ κ²Œμ‹œκΈ€ λŒ“κΈ€ λͺ©λ‘ 쑰회 μ‹œ 400 Bad Request
getPostCommentList_shouldReturnBadRequest_whenPostNotExists 4. μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ²Œμ‹œκΈ€μ˜ λŒ“κΈ€ λͺ©λ‘ μš”μ²­ μ‹œ 400 Not Found

GetPostCommentLikeApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getPostCommentLikers_shouldReturnFirstPage κ²Œμ‹œκΈ€ λŒ“κΈ€ μ’‹μ•„μš” λͺ©λ‘ 쑰회 ν…ŒμŠ€νŠΈ
getPostLikers_shouldReturnEmptyList_whenPostCommentHasNotLikes 2. μ’‹μ•„μš”κ°€ μ—†λŠ” λŒ“κΈ€μ— μš”μ²­ μ‹œ 빈 λ¦¬μŠ€νŠΈκ°€ λ°˜ν™˜λ˜λŠ”μ§€ 검증
getPostLikers_shouldIteratorAllPages_whenUsingCursorPagination 3. 전체 μ’‹μ•„μš” λͺ©λ‘ 쑰회 μ‹œ λ§ˆμ§€λ§‰ νŽ˜μ΄μ§€κΉŒμ§€ 순회 쑰회 λ˜λŠ”μ§€ 검증
getPostLikers_shouldReturnNotFound_whenPostCommentLNotExists μ‹€νŒ¨
getPostLikers_shouldReturnBadRequest_whenPostCommentIsDeleted 2. DELETED μƒνƒœμ˜ λŒ“κΈ€μ— λŒ€ν•œ μš”μ²­ μ‹œ 400 BadRequest

GetPostLikeApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getPostLikers_shouldReturnLikers_whenPostHasLikers κ²Œμ‹œκΈ€ μ’‹μ•„μš” λͺ©λ‘ 쑰회 ν…ŒμŠ€νŠΈ
getPostLikers_shouldReturnEmptyList_whenPostHasNotLikes 2. μ’‹μ•„μš”κ°€ μ—†λŠ” κ²Œμ‹œκΈ€μ— μš”μ²­ μ‹œ 빈 λ¦¬μŠ€νŠΈκ°€ λ°˜ν™˜λ˜λŠ”μ§€ 검증
getPostLikers_shouldReturnNotFound_whenPostNotFound μ‹€νŒ¨
getPostEngagement_shouldReturnCorrectLikeCount_whenPostHasLikes κ²Œμ‹œκΈ€ μ’‹μ•„μš” μš”μ•½ 쑰회 ν…ŒμŠ€νŠΈ

GetUserProfileApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getUserProfile_shouldSuccess_01 성곡
getUserProfile_shouldSuccess_02 2. 곡개 계정을 νŒ”λ‘œμš°ν•œ μƒνƒœμ—μ„œ APPROVED μƒνƒœλ‘œ ν”„λ‘œν•„ 쑰회 κ°€λŠ₯
getUserProfile_shouldSuccess_03 3. λΉ„κ³΅κ°œ 계정을 νŒ”λ‘œμš° μŠΉμΈλ°›μ€ μƒνƒœμ—μ„œ APPROVED μƒνƒœλ‘œ ν”„λ‘œν•„ 쑰회 κ°€λŠ₯
getUserProfile_shouldSuccess_04 4. 본인 ν”„λ‘œν•„ 쑰회 μ‹œ SELF μƒνƒœλ‘œ 쑰회 κ°€λŠ₯
getUserProfile_shouldSuccess_05 5. λΉ„κ³΅κ°œ 계정을 νŒ”λ‘œμš°ν•˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ NONE μƒνƒœλ‘œ κΈ°λ³Έ ν”„λ‘œν•„ 쑰회 κ°€λŠ₯
getUserProfile_shouldSuccess_06 6. λΉ„κ³΅κ°œ 계정에 νŒ”λ‘œμš° μš”μ²­ λŒ€κΈ°μ€‘μΈ μƒνƒœμ—μ„œ PENDING μƒνƒœλ‘œ κΈ°λ³Έ ν”„λ‘œν•„ 쑰회 κ°€λŠ₯
getUserProfile_shouldFail_01 μ‹€νŒ¨
getUserProfile_shouldFail_03 2. μ‚¬μš©μžλŠ” μ‘΄μž¬ν•˜μ§€λ§Œ profile이 μ—†λŠ” 경우 404 Not Found
getUserProfile_shouldFail_04 3. νƒˆν‡΄ 처리된 μ‚¬μš©μžμ˜ ν”„λ‘œν•„μ„ μ‘°νšŒν•  경우 403 Forbidden
getUserProfile_shouldFail_05 4. λΉ„ν™œμ„±ν™” 된 μ‚¬μš©μžλ₯Ό μ‘°νšŒν•˜λŠ” 경우 403 Forbidden

HandleFollowRequestApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
approveFollowRequest_shouldSuccess_01 νŒ”λ‘œμš° μš”μ²­ 수락 및 거절 API ν…ŒμŠ€νŠΈ
approveFollowRequest_shouldFail_01 μ‹€νŒ¨
approveFollowRequest_shouldFail_02 2. λ‚΄κ°€ 받은 νŒ”λ‘œμš° μš”μ²­μ΄ μ•„λ‹Œ 경우 μ‹€νŒ¨ 검증
approveFollowRequest_shouldFail_03 3. 이미 μˆ˜λ½ν•œ νŒ”λ‘œμš° μš”μ²­μ— λŒ€ν•œ 수락 μš”μ²­ μ‹œ μ‹€νŒ¨ 검증
rejectFollowRequest_shouldSuccess_01 νŒ”λ‘œμš° μš”μ²­ 거절 ν…ŒμŠ€νŠΈ
rejectFollowRequest_shouldFail_01 μ‹€νŒ¨
rejectFollowRequest_shouldFail_02 2. λ‚΄κ°€ 받은 νŒ”λ‘œμš° μš”μ²­μ΄ μ•„λ‹Œ 경우 μ‹€νŒ¨ 검증
rejectFollowRequest_shouldFail_03 3. 이미 κ±°μ ˆν•œ νŒ”λ‘œμš° μš”μ²­μ— λŒ€ν•œ μš”μ²­ μ‹œ μ‹€νŒ¨ 검증

IncreaseViewCountApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
increaseViewCount_shouldIncrease_whenUserGetPost κ²Œμ‹œκΈ€ 쑰회 수 증가 ν…ŒμŠ€νŠΈ
increaseViewCount_shouldIdempotent_whenUserMultipleRequest 2. μ‚¬μš©μžκ°€ κ²Œμ‹œκΈ€μ„ μ—¬λŸ¬λ²ˆ 쑰회 μ‹œ λ©±λ“±ν•œμ§€ 검증
increaseViewCount_shouldIncreaseViewCount_whenUserRequestAfterFewTimes 3. μ‚¬μš©μžκ°€ κ²Œμ‹œκΈ€μ„ 쑰회 ν›„ μ‹œκ°„μ΄ μ§€λ‚œ ν›„ λ‹€μ‹œ 쑰회 μ‹œ 쑰회 μˆ˜κ°€ μ¦κ°€ν•˜λŠ”μ§€ 검증
increaseViewCount_shouldIncreaseViewCount_whenMultipleUserRequest 4. μ—¬λŸ¬ μ‚¬μš©μžκ°€ κ²Œμ‹œκΈ€ 쑰회 μ‹œ 쑰회 μˆ˜κ°€ μ¦κ°€ν•˜λŠ”μ§€ 검증

JwtApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
userProfileCompleteTest_shouldSuccess_whenUserSetProfile Jwt 인증 κ΄€λ ¨ API ν…ŒμŠ€νŠΈ
userProfileCompleteTest_shouldSuccess_whenUserSetProfile μ‹€νŒ¨

LikePostApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
likePost_shouldReturnCreated_whenUserLikesActivePost κ²Œμ‹œκΈ€ μ’‹μ•„μš” ν…ŒμŠ€νŠΈ
likePost_shouldBeIdempotent_whenUserLikesSamePostMultipleTimes 2. 동일 μ‚¬μš©μžκ°€ 쀑볡 μ’‹μ•„μš” μš”μ²­ μ‹œ λ©±λ“±ν•˜κ²Œ μ²˜λ¦¬λ˜λŠ”μ§€ 검증
likePost_shouldAccumulateLikeCount_whenMultipleUserLike 2. μ—¬λŸ¬ μ‚¬μš©μžκ°€ κ²Œμ‹œκΈ€μ— μ’‹μ•„μš”λ₯Ό λˆ„λ₯Ό 경우 likeCount λˆ„μ λ˜λŠ”μ§€ 검증
likePost_shouldReturnBadRequest_whenPostDeleted μ‹€νŒ¨
likePost_shouldReturnBadRequest_whenPostBlocked 2. BLOCKED μƒνƒœμ˜ κ²Œμ‹œκΈ€μ— μ’‹μ•„μš” μš”μ²­ μ‹œ 400 Bad Reqeust
likePost_shouldReturnBadRequest_whenPostArchive 3. ARCHIVE μƒνƒœμ˜ κ²Œμ‹œκΈ€μ— μ’‹μ•„μš” μš”μ²­ μ‹œ 400 Bad Reqeust

LoginAttemptLimiterTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
upsertLoginAttempt_shouldReturnTrue_whenLoginAttemptLessThanFive loginAttemptκ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 경우 - true 리턴
upsertLoginAttempt_shouldReturnTrue_whenLoginAttemptReachThanFive loginAttemptκ°€ 5이상일 경우 - false 리턴
upsertLoginAttempt_shouldReturnThree_whenLoginAttemptReachCallThree userId에 ν•΄λ‹Ήν•˜λŠ” 값이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μƒν™©μ—μ„œ 3번 호좜된 ν›„ 쑰회 μ‹œ 3이 λ‚˜μ™€μ•Ό ν•œλ‹€
upsertLoginAttempt_shouldReturnFive_andFalse_whenLoginAttemptReachCallSix 6번 호좜된 ν›„ 쑰회 μ‹œ 5κ°€ λ‚˜μ™€μ•Ό ν•˜κ³  falseκ°€ return λ˜μ–΄μ•Ό ν•œλ‹€
incrementLoginAttempt_shouldReturnOne_whenLoginAttemptNotExists loginAttemptκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우, μ‹€ν–‰μ‹œ 1이 더해져야 함
incrementLoginAttempt_shouldReturnFive_whenLoginAttemptIsFive loginAttemptκ°€ 5인 경우, 더 이상 μ—…λ°μ΄νŠΈ λ˜μ§€ μ•Šκ³  5둜 μœ μ§€λ˜μ–΄μ•Ό 함
deleteLoginAttempt_shouldReturnNull login attemptλ₯Ό μ‚½μž…ν•œ ν›„ μ‹€ν–‰, 이후 μ‘°νšŒμ‹œ null이 λ‚˜μ™€μ•Όν•œλ‹€

LoginScenarioTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
accessProtectedResource_shouldSucceed_whenLoggedIn 둜그인 μ‹œλ‚˜λ¦¬μ˜€ ν…ŒμŠ€νŠΈ
accessProtectedResource_sholudReturnUnAuthorized_whenAccessTokenNotExists 성곡-2. 둜그인 ν›„ 만료된 accessToken으둜 접속'/' -> TLY3000 -> μž¬μ ‘μ†
accessProtectedResource_shouldSucceed_afterAccessTokenExpired_whenReissueAccessToken 성곡-3. 둜그인 ν›„ 만료된 accessToken으둜 접속'/' -> TLY3000 -> μž¬λ°œκΈ‰ ν›„ 재 접속
verifyLoginTokens_shouldBeUnique_whenForEachLogin 성곡-4. μ—¬λŸ¬ 번 둜그인 μ‹œ 맀번 μƒˆλ‘œμš΄ accessToken, refreshToken λ°œκΈ‰
checkLoginAttempt_shouldAllowLogin_whenTtlExpires 성곡-5. 둜그인 μ œν•œ ν›„ μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ μ΄ˆκΈ°ν™”, 이후 둜그인 μ‹œλ„
checkLoginAttempt_shouldFail_whenExceededMaxAttempts μ‹€νŒ¨-1. 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έλ‘œ 5회 이상 둜그인 μ‹œλ„ ν•  경우
checkLoginAttempt_shouldResetAndBlock_whenSuccessAndExceeded μ‹€νŒ¨-2. 정상 λ‘œκ·ΈμΈμ‹œ μ‹œλ„ νšŸμˆ˜κ°€ μ΄ˆκΈ°ν™”λ˜κ³  이후 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έλ‘œ 5회 μ΄ˆκ³Όμ‹œ 둜그인 μ œν•œ

LoginTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
login_shouldSucceed_whenUserExistsAndCorrectPassword 성곡
login_shouldFail_whenUserNotExists μ‹€νŒ¨
login_shouldFail_whenPasswordNotCorrect 2. λΉ„λ°€λ²ˆν˜Έκ°€ μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 경우
login_shouldFail_whenEmailNotVerified 3. 이메일 인증이 λ˜μ§€ μ•Šμ€ 경우

LogoutScenarioTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
accessProtectedResource_shouldFail_afterLogout λ‘œκ·Έμ•„μ›ƒ μ‹œλ‚˜λ¦¬μ˜€ ν…ŒμŠ€νŠΈ

LogoutTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
logout_shouldSucceed_whenLoginSucceed 성곡
logout_shouldFailed_whenLoginSucceed_andTokenInvalid μ‹€νŒ¨
logout_shouldFailed_whenLoginSucceed_andTokenExpired μ‹€νŒ¨-2. 만료된 accessToken으둜 μš”μ²­
verifyPassword_shouldReturnVerificationToken_whenValidPassword 이쀑 인증 ν…ŒμŠ€νŠΈ
passwordVerificationToken_shouldFailed_whenInValidPassword μ‹€νŒ¨-1. λΉ„λ°€λ²ˆν˜Έκ°€ μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 경우

PasswordVerificationScenarioTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
accessProtectedResource_shouldSucceed_afterPasswordVerification μ‚¬μš©μž 이쀑 인증 μ‹œλΌλ‹ˆμ˜€ ν…ŒμŠ€νŠΈ
accessProtectedResource_shouldFail_afterXVerificationTokenExpired μ‹€νŒ¨-1. X-Verification-token λ§Œλ£Œν›„ 접속

PostSearchApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
searchPost_shouldReturnSingleResult_whenSearchWithUniqueKeyword 성곡
searchPost_shouldReturnMultipleResults_whenSearchWithCommonKeyword 2. keyword 검색 ν›„ 검색 κ²°κ³Ό 리슀트 검증
searchPost_shouldReturnEmptyList_whenSearchWithNonExistentKeyword 3. μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 데이터에 λŒ€ν•œ 검색 κ²°κ³Ό 검증
searchPost_shouldIncludePublicUserPost_whenNotFollowing 4. νŒ”λ‘œμš° μƒνƒœκ°€ μ•„λ‹ˆλ©΄μ„œ 곡개 κ³„μ •μ˜ μ‚¬μš©μžκ°€ 올린 κ²Œμ‹œκΈ€μ΄ κ²€μƒ‰λ˜λŠ”μ§€ 검증
searchPost_shouldIncludePrivateUserPost_whenFollowing 5. νŒ”λ‘œμš° μƒνƒœμ΄λ©΄μ„œ λΉ„κ³΅κ°œ 계정인 μ‚¬μš©μžκ°€ 올린 κ²Œμ‹œκΈ€μ΄ κ²€μƒ‰λ˜λŠ”μ§€ 검증
searchPost_shouldIncludeMyPost_whenSearchingOwnContent 6. λ‚΄κ°€ 올린 κ²Œμ‹œκΈ€μ΄ κ²€μƒ‰λ˜λŠ”μ§€ 검증
searchPost_shouldReturnSortedByRecent_whenSortTypeIsRecent 7. sortType = RECENT인 경우 응닡 검증
searchPost_shouldReturnSortedByPopular_whenSortTypeIsPopular 8. sortType = POPULAR인 경우 응닡 검증
searchPost_shouldIterateAllPages_usingCursorPagination 9. μ»€μ„œ 기반 νŽ˜μ΄μ§•μœΌλ‘œ 전체 검색 κ²°κ³Όλ₯Ό λ§ˆμ§€λ§‰ νŽ˜μ΄μ§€κΉŒμ§€ μˆœνšŒν•˜λ©° 쑰회
searchPost_shouldReturnAllPosts_whenKeywordIsNull μ‹€νŒ¨
searchPost_shouldNotIncludePrivateUserPost_whenNotFollowing 2. νŒ”λ‘œμš° μƒνƒœκ°€ μ•„λ‹ˆλ©΄μ„œ λΉ„κ³΅κ°œ κ³„μ •μ˜ μ‚¬μš©μžκ°€ 올린 κ²Œμ‹œκΈ€μ΄ κ²€μƒ‰λ˜μ§€ μ•ŠλŠ”μ§€ 검증
searchPost_shouldReturnError_whenSortTypeIsInvalid 3. μœ νš¨ν•˜μ§€ μ•Šμ€ sortType(RELEVANCE) μ‚¬μš© μ‹œ μ μ ˆν•œ μ—λŸ¬ λ°˜ν™˜

RemoveFollowerApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
removeFollower_shouldSuccess_01 νŒ”λ‘œμ›Œ μ‚­μ œ API ν…ŒμŠ€νŠΈ
removeFollower_shouldFail_01 μ‹€νŒ¨
removeFollower_shouldSuccess_01 2. PENDING μƒνƒœμ˜ μ‚¬μš©μžλ₯Ό νŒ”λ‘œμ›Œ μ‚­μ œ μš”μ²­ μ‹œ μ‹€νŒ¨ 검증

SampleTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
test -

UnfollowApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
unfollowUser_shouldSuccess_01 μ‚¬μš©μž μ–ΈνŒ”λ‘œμš° API ν…ŒμŠ€νŠΈ
unfollowUser_shouldFail_01 μ‹€νŒ¨
unfollowUser_shouldSuccess_01 2. PENDING μƒνƒœμ˜ μ‚¬μš©μžλ₯Ό μ–ΈνŒ”λ‘œμš° μš”μ²­ μ‹œ μ‹€νŒ¨ 검증

UpdateMyProfileApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
updateMyProfile_shouldDeleteExistingProfileImage_whenProfileImageIdIsNull 성곡
updateMyProfile_shouldUpdateProfileImage_whenProfileImageIdIsDifferent 2. κΈ°μ‘΄ ν”„λ‘œν•„ 이미지가 μ‘΄μž¬ν•˜κ³  μƒˆλ‘œμš΄ ν”„λ‘œν•„ 이미지λ₯Ό μ„€μ •ν•˜λŠ” 경우 검증
updateMyProfile_shouldKeepExistingProfileImage_whenImageIdIsSame 3. κΈ°μ‘΄ ν”„λ‘œν•„ 이미지가 μ‘΄μž¬ν•˜κ³  κΈ°μ‘΄ ν”„λ‘œν•„ 이미지λ₯Ό μœ μ§€ν•˜λŠ” 경우 검증
updateMyProfile_shouldSetNewProfileImage_whenNoExistingProfileImageAndProfileImageIdIsGiven 4. κΈ°μ‘΄ ν”„λ‘œν•„ 이미지가 μ‘΄μž¬ν•˜μ§€ μ•Šκ³  μƒˆλ‘œμš΄ ν”„λ‘œν•„ 이미지λ₯Ό μ„€μ •ν•˜λŠ” 경우 검증
updateMyProfile_shouldDoNotingToProfileImage_whenNoExistingImageAndImageIdIsNull 5. κΈ°μ‘΄ ν”„λ‘œν•„ 이미지가 μ‘΄μž¬ν•˜μ§€ μ•Šκ³  μƒˆ ν”„λ‘œν•„μ„ μ„€μ •ν•˜μ§€ μ•ŠλŠ” 경우 검증
updateUserProfile_shouldReturn409Conflict_whenRequestNicknameAlreadyExists μ‹€νŒ¨
updateMyProfile_shouldFail_whenProfileImageIdIsInvalid 2. μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” profileImageId둜 μ—…λ°μ΄νŠΈ μš”μ²­ μ‹œ 404 Not Found
updateMyProfile_shouldReturn404NotFound_whenProfileImageIdStatusIsDeleted 3. DELETED μƒνƒœμ˜ profileImageId둜 μ—…λ°μ΄νŠΈ μš”μ²­ μ‹œ 404 Not Found

UpdatePostApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
updatePost_shouldUpdatePostSuccessfully_whenWriterRequestsUpdate κ²Œμ‹œκΈ€ μ—…λ°μ΄νŠΈ ν…ŒμŠ€νŠΈ
updatePost_shouldReturnForbidden_whenNonWriterTriesToUpdatePost μ‹€νŒ¨
updatePost_shouldReturnNotFound_whenRequestNotExistsPostId 2. μž‘μ„±μžκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” postId둜 μˆ˜μ • μš”μ²­ ν•  경우
updatePost_shouldReturnBadRequest_whenContentIsBlank 3. μž‘μ„±μžκ°€ λΉ„μ–΄μžˆλŠ” content둜 μš”μ²­ ν•  경우
updatePost_shouldReturnBadRequest_whenContentExceedsMaxLength 4. κ²Œμ‹œκΈ€ μˆ˜μ • λ‚΄μš©μ΄ μ΅œλŒ€ 길이λ₯Ό μ΄ˆκ³Όν•  경우 400 BadRequest

UpdatePostCommentApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
deletePostComment_shouldReturn204_whenCommentIsActive κ²Œμ‹œκΈ€ λŒ“κΈ€ μ‚­μ œ ν…ŒμŠ€νŠΈ
deletePostComment_shouldReturnBadRequest_whenPostIsBlocked μ‹€νŒ¨
deletePostComment_shouldReturnForbidden_whenCommentWriterNotEqualsUser 2. λŒ“κΈ€ μž‘μ„±μžκ°€ μ•„λ‹Œ μ‚¬μš©μžκ°€ μ‚­μ œ μš”μ²­ μ‹œ 403 Forbidden
deletePostComment_shouldReturn400_whenCommentIsDeleted 3. 이미 μ‚­μ œλœ λŒ“κΈ€ μ‚­μ œ μš”μ²­ μ‹œ 400 Bad Request

UpdatePostStatusApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
deletePost_shouldExcludePostFromPostList_afterSuccessfulDeletion κ²Œμ‹œκΈ€ μ‚­μ œ ν…ŒμŠ€νŠΈ
deletePost_shouldReturnBadRequest_whenAlreadyDeleted μ‹€νŒ¨
deletePost_shouldReturnForbidden_whenNonOwnerRequest 2. κ²Œμ‹œκΈ€ μž‘μ„±μžκ°€ μ•„λ‹Œ μ‚¬μš©μžκ°€ μ‚­μ œ μš”μ²­ μ‹œ 403 Forbidden

UploadPostImageValidateApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
uploadImage_shouldSucceed_whenValidImageUpload 성곡
uploadImage_shouldSucceed_whenUploadMaxCount 2. 정상적인 이미지λ₯Ό μ΅œλŒ€ ν—ˆμš© 수 만큼 μ—…λ‘œλ“œ μ‹œ 응닡 검증
uploadImage_shouldReturnBadRequest_whenImageIsEmpty μ‹€νŒ¨
uploadImage_shouldReturnBadRequest_whenImageIsNull 2. 이미지가 null인 μƒνƒœμ—μ„œ μš”μ²­μ‹œ 400 Bad Request
uploadImage_shouldReturnBadRequest_whenUploadOverMaxCount 3. μ΅œλŒ€ ν—ˆμš© 수λ₯Ό μ΄ˆκ³Όν•˜λŠ” 이미지 μš”μ²­ μ‹œ 400 Bad Request
uploadImage_shouldReturnBadRequest_whenUploadOverMaxSize 4. μ΅œλŒ€ ν—ˆμš© μš©λŸ‰ 이상이 이미지 μš”μ²­ μ‹œ 400 Bad Request
uploadImage_shouldReturnBadRequest_whenUploadFileExtensionNotSupported 5. μ§€μ›ν•˜μ§€ μ•ŠλŠ” ν™•μž₯자의 νŒŒμΌμ„ μš”μ²­ μ‹œ 400 Bad Request

UploadProfileImageApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
uploadMyProfileImage_shouldSuccess 성곡

User2FATest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
verifyPassword_shouldReturnVerificationToken_whenValidPassword 성곡
passwordVerificationToken_shouldFailed_whenInValidPassword μ‹€νŒ¨

UserSearchApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
searchUser_shouldReturnSingleResult_whenSearchWithUniqueKeyword 성곡
searchUser_shouldReturnMultipleResults_whenSearchWithCommonKeyword 2. keyword 검색 ν›„ 검색 κ²°κ³Ό 리슀트 검증
searchUser_shouldReturnEmptyList_whenSearchWithNonExistentKeyword 3. μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ‹‰λ„€μž„μ— λŒ€ν•œ 검색 κ²°κ³Ό 검증
searchUser_shouldReturnApprovedStatus_whenSearchingFollowingUser 4. νŒ”λ‘œμž‰ν•˜λŠ” μ‚¬μš©μž 검색 μ‹œ μ‘λ‹΅μ˜ followStatusκ°€ APPROVED인지 검증
searchUser_shouldReturnNoneStatus_whenSearchingNotFollowingUser 5. νŒ”λ‘œμž‰ν•˜μ§€ μ•ŠλŠ” μ‚¬μš©μž 검색 μ‹œ μ‘λ‹΅μ˜ followStatusκ°€ NONE인지 검증
searchUser_shouldReturnSelfStatus_whenSearchingMyProfile 6. λ‚΄ ν”„λ‘œν•„ 검색 μ‹œ μ‘λ‹΅μ˜ followStatusκ°€ SELF인지 검증
searchUser_shouldIterateAllPages_usingCursorPagination 7. μ»€μ„œ 기반 νŽ˜μ΄μ§•μœΌλ‘œ 전체 검색 κ²°κ³Όλ₯Ό λ§ˆμ§€λ§‰ νŽ˜μ΄μ§€κΉŒμ§€ μˆœνšŒν•˜λ©° 쑰회
searchUser_shouldReturnAllUsers_whenKeywordIsNull μ‹€νŒ¨

ValidateMyProfileApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
checkNickname_shouldSuccess_whenNicknameIsUnique 성곡
checkNickname_should409Conflict_whenNicknameAlreadyExists μ‹€νŒ¨

WithdrawMyAccountApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
withdrawUser_shouldSuccess_whenUserIdExists λ‚΄ 계정 νƒˆν‡΄ ν…ŒμŠ€νŠΈ
withdrawUser_shouldReturn400BadRequest_whenUserWithdraw μ‹€νŒ¨
withdrawUser_shouldReturn400BadRequest_whenXVerifyTokenMissing 2. 이쀑인증 없이 νšŒμ› νƒˆν‡΄ μš”μ²­ μ‹œ 400 BadRequest
withdrawUser_shouldReturn400BadRequest_whenReissueAccessTokenAfterWithdraw 3. νšŒμ› νƒˆν‡΄ ν›„ 토큰 μž¬λ°œκΈ‰μ΄ λΆˆκ°€λŠ₯ν•œμ§€ 검증

DeleteAllNotificationsApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
deleteAllNotifications_WithMultipleNotifications_ShouldReturnSuccess 1. μ—¬λŸ¬ μ•Œλ¦Ό 전체 μ‚­μ œ - 성곡
deleteAllNotifications_WithNoNotifications_ShouldReturnSuccess 2. μ•Œλ¦Όμ΄ μ—†λŠ” μƒνƒœμ—μ„œ 전체 μ‚­μ œ - 성곡 (Idempotent)
deleteAllNotifications_ShouldNotDeleteOtherUsersNotifications 3. λ‹€λ₯Έ μ‚¬μš©μžμ˜ μ•Œλ¦Όμ€ μ‚­μ œλ˜μ§€ μ•ŠμŒ - 성곡
deleteAllNotifications_WithoutAuthentication_ShouldReturnBadRequest 4. 인증 없이 전체 μ•Œλ¦Ό μ‚­μ œ - 400 Bad Request
deleteAllNotifications_WithExpiredToken_ShouldReturnUnauthorized 5. 만료된 ν† ν°μœΌλ‘œ 전체 μ•Œλ¦Ό μ‚­μ œ - 401 Unauthorized
deleteAllNotifications_WithPartialNotifications_ShouldDeleteAll 6. λΆ€λΆ„μ μœΌλ‘œ μ•Œλ¦Όμ΄ μžˆλŠ” μƒνƒœμ—μ„œ 전체 μ‚­μ œ - 성곡
deleteAllNotifications_AfterAlreadyDeleted_ShouldReturnSuccess 7. 전체 μ‚­μ œ ν›„ λ‹€μ‹œ 전체 μ‚­μ œ - 성곡 (Idempotent)
deleteAllNotifications_WithLargeAmountOfNotifications_ShouldReturnSuccess 8. λŒ€λŸ‰μ˜ μ•Œλ¦Ό 전체 μ‚­μ œ - 성곡
deleteAllNotifications_WithMixedNotificationTypes_ShouldDeleteAll 9. ν˜Όν•©λœ μ•Œλ¦Ό νƒ€μž…μ˜ 전체 μ‚­μ œ - 성곡
deleteAllNotifications_PerformanceAndStabilityTest 10. 전체 μ‚­μ œ μ„±λŠ₯ 및 μ•ˆμ •μ„± 검증

DeleteNotificationApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
deleteNotification_ExistingNotification_ShouldReturnSuccess 1. μ‘΄μž¬ν•˜λŠ” μ•Œλ¦Ό μ‚­μ œ - 성곡
deleteNotification_NonExistentNotification_ShouldReturnNotFound 2. μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ•Œλ¦Ό μ‚­μ œ - 404 Not Found
deleteNotification_OtherUserNotification_ShouldReturnNotFound 3. λ‹€λ₯Έ μ‚¬μš©μžμ˜ μ•Œλ¦Ό μ‚­μ œ - 404 NotFound
deleteNotification_WithoutAuthentication_ShouldReturnBadRequest 4. 인증 없이 μ•Œλ¦Ό μ‚­μ œ - 400 Bad Request
deleteNotification_WithExpiredToken_ShouldReturnUnauthorized 5. 만료된 ν† ν°μœΌλ‘œ μ•Œλ¦Ό μ‚­μ œ - 401 Unauthorized
deleteNotification_WithSpecialCharacterEventId_ShouldReturnNotFound 6. 특수 λ¬Έμžκ°€ ν¬ν•¨λœ eventId둜 μ•Œλ¦Ό μ‚­μ œ - 404 Not Found
deleteNotification_MultipleNotificationsExist_ShouldDeleteOnlyTargetOne 7. μ—¬λŸ¬ μ•Œλ¦Ό 쀑 νŠΉμ • μ•Œλ¦Όλ§Œ μ‚­μ œ - 성곡
deleteNotification_AlreadyDeletedNotification_ShouldReturnNotFound 8. 이미 μ‚­μ œλœ μ•Œλ¦Ό μž¬μ‚­μ œ μ‹œλ„ - 404 Not Found
deleteNotification_AuthorizedUser_ShouldCompletelyRemoveData 9. κΆŒν•œμ΄ μžˆλŠ” μ‚¬μš©μžμ˜ μ•Œλ¦Ό μ‚­μ œ ν›„ 데이터 μ™„μ „ 제거 검증

GetNotificationApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getNotificationDetail_ExistingNotification_ShouldReturnSuccess 1. μ‘΄μž¬ν•˜λŠ” μ•Œλ¦Ό 쑰회 - 성곡
getNotificationDetail_NonExistentNotification_ShouldReturnNotFound 2. μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ•Œλ¦Ό 쑰회 - 404 Not Found
getNotificationDetail_OtherUserNotification_ShouldReturnForbidden 3. λ‹€λ₯Έ μ‚¬μš©μžμ˜ μ•Œλ¦Ό 쑰회 - 403 Forbidden
getNotificationDetail_WithoutAuthentication_ShouldReturnBadRequest 4. 인증 없이 μ•Œλ¦Ό 쑰회 - 400 Bad Request
getNotificationDetail_WithExpiredToken_ShouldReturnUnauthorized 5. 만료된 ν† ν°μœΌλ‘œ μ•Œλ¦Ό 쑰회 - 401 Unauthorized
getNotificationDetail_WithSpecialCharacterEventId_ShouldReturnNotFound 6. 특수 λ¬Έμžκ°€ ν¬ν•¨λœ eventId둜 μ•Œλ¦Ό 쑰회 - 404 Not Found
getNotificationDetail_MultipleNotificationsExist_ShouldReturnCorrectOne 7. μ—¬λŸ¬ μ•Œλ¦Ό 쀑 νŠΉμ • μ•Œλ¦Ό 쑰회 - 성곡
getNotificationDetail_DifferentNotificationTypes_ShouldReturnSuccess 8. λ‹€μ–‘ν•œ μ•Œλ¦Ό νƒ€μž… 쑰회 - 성곡
getNotificationDetail_WithMetadata_ShouldReturnCorrectMetadata 9. 정상적인 메타데이터 쑰회 - 성곡
getNotificationDetail_WithDifferentActorProfile_ShouldReturnCorrectProfile 10. λ‹€μ–‘ν•œ ActorProfile 정보가 ν¬ν•¨λœ μ•Œλ¦Ό 쑰회 - 성곡
getNotificationDetail_WithNullActorProfile_ShouldHandleGracefully 11. null ActorProfile둜 μ•Œλ¦Ό 쑰회 - ActorProfile ν•„λ“œ 검증

GetNotificationsByCursorApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getNotifications_WithoutParams_ShouldReturnSuccess 1. κΈ°λ³Έ μ•Œλ¦Ό λͺ©λ‘ 쑰회 (νŒŒλΌλ―Έν„° μ—†μŒ) - 성곡
getNotifications_WithLimit_ShouldReturnLimitedResults 2. limit νŒŒλΌλ―Έν„°λ‘œ μ•Œλ¦Ό λͺ©λ‘ 쑰회 - 성곡
getNotifications_WithCursor_ShouldReturnNextPage 3. μ»€μ„œ 기반 νŽ˜μ΄μ§€λ„€μ΄μ…˜ 쑰회 - 성곡
getNotifications_ShouldNotReturnOtherUsersNotifications 4. λ‹€λ₯Έ μ‚¬μš©μžμ˜ μ•Œλ¦Όμ€ μ‘°νšŒλ˜μ§€ μ•ŠμŒ - 성곡
getNotifications_WithNoNotifications_ShouldReturnEmptyList 5. 빈 κ²°κ³Ό 쑰회 - 성곡
getNotifications_WithoutAuthentication_ShouldReturnBadRequest 6. 인증 없이 μ•Œλ¦Ό λͺ©λ‘ 쑰회 - 400 Bad Request
getNotifications_WithExpiredToken_ShouldReturnUnauthorized 7. 만료된 ν† ν°μœΌλ‘œ μ•Œλ¦Ό λͺ©λ‘ 쑰회 - 401 Unauthorized
getNotifications_WithLargeLimit_ShouldReturnSuccess 8. 큰 limit κ°’μœΌλ‘œ 쑰회 - 성곡
getNotifications_WithActorProfile_ShouldReturnCorrectProfile 9. ActorProfile 정보가 ν¬ν•¨λœ μ•Œλ¦Ό λͺ©λ‘ 쑰회 - 성곡
getNotifications_ShouldReturnInTimeOrder 10. μ‹œκ°„μˆœ μ •λ ¬ 검증 - 성곡

GetUnreadNotificationsByCursorApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
getUnreadNotifications_WithoutParams_ShouldReturnSuccess 1. κΈ°λ³Έ 읽지 μ•Šμ€ μ•Œλ¦Ό λͺ©λ‘ 쑰회 (νŒŒλΌλ―Έν„° μ—†μŒ) - 성곡
getUnreadNotifications_WithLimit_ShouldReturnLimitedResults 2. limit νŒŒλΌλ―Έν„°λ‘œ 읽지 μ•Šμ€ μ•Œλ¦Ό λͺ©λ‘ 쑰회 - 성곡
getUnreadNotifications_WithCursor_ShouldReturnNextPage 3. μ»€μ„œ 기반 νŽ˜μ΄μ§€λ„€μ΄μ…˜μœΌλ‘œ 읽지 μ•Šμ€ μ•Œλ¦Ό 쑰회 - 성곡
getUnreadNotifications_ShouldNotReturnOtherUsersNotifications 4. λ‹€λ₯Έ μ‚¬μš©μžμ˜ 읽지 μ•Šμ€ μ•Œλ¦Όμ€ μ‘°νšŒλ˜μ§€ μ•ŠμŒ - 성곡
getUnreadNotifications_WithNoUnreadNotifications_ShouldReturnEmptyList 5. 읽지 μ•Šμ€ μ•Œλ¦Όμ΄ μ—†λŠ” 경우 - 빈 κ²°κ³Ό λ°˜ν™˜
getUnreadNotifications_WithNoNotifications_ShouldReturnEmptyList 6. μ•Œλ¦Όμ΄ μ „ν˜€ μ—†λŠ” 경우 - 빈 κ²°κ³Ό λ°˜ν™˜
getUnreadNotifications_WithoutAuthentication_ShouldReturnBadRequest 7. 인증 없이 읽지 μ•Šμ€ μ•Œλ¦Ό λͺ©λ‘ 쑰회 - 400 Bad Request
getUnreadNotifications_WithExpiredToken_ShouldReturnUnauthorized 8. 만료된 ν† ν°μœΌλ‘œ 읽지 μ•Šμ€ μ•Œλ¦Ό λͺ©λ‘ 쑰회 - 401 Unauthorized
getUnreadNotifications_WithMixedReadStatus_ShouldReturnOnlyUnread 9. 읽음 μƒνƒœ 혼재 μ‹œ 읽지 μ•Šμ€ μ•Œλ¦Όλ§Œ 쑰회 - 성곡
getUnreadNotifications_ShouldReturnInTimeOrder 10. μ‹œκ°„μˆœ μ •λ ¬ 검증 - 읽지 μ•Šμ€ μ•Œλ¦Όλ§Œ μ΅œμ‹ μˆœμœΌλ‘œ μ •λ ¬
getUnreadNotifications_WithActorProfile_ShouldReturnCorrectProfile 11. ActorProfile 정보가 ν¬ν•¨λœ 읽지 μ•Šμ€ μ•Œλ¦Ό 쑰회 - 성곡

MarkAllAsReadNotificationsApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
markAllAsReadNotifications_WithUnreadNotifications_ShouldReturnSuccess 1. μ—¬λŸ¬ 읽지 μ•Šμ€ μ•Œλ¦Ό 전체 읽음 처리 - 성곡
markAllAsReadNotifications_WithNoNotifications_ShouldReturnSuccess 2. μ•Œλ¦Όμ΄ μ—†λŠ” μƒνƒœμ—μ„œ 전체 읽음 처리 - 성곡 (Idempotent)
markAllAsReadNotifications_WithAllReadNotifications_ShouldReturnSuccess 3. 이미 λͺ¨λ“  μ•Œλ¦Όμ΄ 읽음 μƒνƒœμ—μ„œ 전체 읽음 처리 - 성곡 (Idempotent)
markAllAsReadNotifications_ShouldNotMarkOtherUsersNotifications 4. λ‹€λ₯Έ μ‚¬μš©μžμ˜ μ•Œλ¦Όμ€ 읽음 μ²˜λ¦¬λ˜μ§€ μ•ŠμŒ - 성곡
markAllAsReadNotifications_WithoutAuthentication_ShouldReturnBadRequest 5. 인증 없이 전체 읽음 처리 - 400 Bad Request
markAllAsReadNotifications_WithExpiredToken_ShouldReturnUnauthorized 6. 만료된 ν† ν°μœΌλ‘œ 전체 읽음 처리 - 401 Unauthorized
markAllAsReadNotifications_WithMixedReadStatus_ShouldMarkAllAsRead 7. ν˜Όν•©λœ 읽음 μƒνƒœμ˜ μ•Œλ¦Όλ“€ 전체 읽음 처리 - 성곡
markAllAsReadNotifications_WithLargeAmountOfNotifications_ShouldReturnSuccess 8. λŒ€λŸ‰μ˜ μ•Œλ¦Ό 전체 읽음 처리 - 성곡
markAllAsReadNotifications_AfterMarkingAllAsRead_ShouldShowAllReadInList 9. 전체 읽음 처리 ν›„ λͺ©λ‘ μ‘°νšŒμ—μ„œ λͺ¨λ“  μ•Œλ¦Όμ΄ 읽음 μƒνƒœ - 성곡
markAllAsReadNotifications_PerformanceAndStabilityTest 10. 전체 읽음 처리 μ„±λŠ₯ 및 μ•ˆμ •μ„± 검증

MarkAsReadNotificationApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
markAsReadNotification_UnreadNotification_ShouldReturnSuccess 1. 읽지 μ•Šμ€ μ•Œλ¦Ό 읽음 처리 - 성곡
markAsReadNotification_AlreadyReadNotification_ShouldReturnSuccess 2. 이미 읽은 μ•Œλ¦Ό 읽음 처리 - 성곡 (Idempotent)
markAsReadNotification_NonExistentNotification_ShouldReturnNotFound 3. μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ•Œλ¦Ό 읽음 처리 - 404 Not Found
markAsReadNotification_OtherUserNotification_ShouldReturnNotFound 4. λ‹€λ₯Έ μ‚¬μš©μžμ˜ μ•Œλ¦Ό 읽음 처리 - 404 NotFound
markAsReadNotification_WithoutAuthentication_ShouldReturnBadRequest 5. 인증 없이 μ•Œλ¦Ό 읽음 처리 - 400 Bad Request
markAsReadNotification_WithExpiredToken_ShouldReturnUnauthorized 6. 만료된 ν† ν°μœΌλ‘œ μ•Œλ¦Ό 읽음 처리 - 401 Unauthorized
markAsReadNotification_MultipleNotificationsExist_ShouldMarkOnlyTargetOne 7. μ—¬λŸ¬ μ•Œλ¦Ό 쀑 νŠΉμ • μ•Œλ¦Όλ§Œ 읽음 처리 - 성곡
markAsReadNotification_AfterMarkingAsRead_ShouldPersistReadStatus 8. 읽음 처리 ν›„ 데이터 μ˜μ†μ„± 검증

NotificationKafkaIntegrationTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
kafkaIntegration_PostLikeEvent_ShouldSaveToDatabase 1. POST_LIKE 이벀트 μˆ˜μ‹  및 DB μ €μž₯ - 성곡
kafkaIntegration_SavedNotificationApiVerification_ShouldReturnCorrectData 2. μ €μž₯된 μ•Œλ¦Ό API 쑰회둜 검증 - 성곡
kafkaIntegration_MultipleEvents_ShouldSaveAllAndRetrieveIndividually 3. 닀쀑 이벀트 μˆ˜μ‹  및 κ°œλ³„ 쑰회 - 성곡
kafkaIntegration_InvalidEventData_ShouldHandleGracefully 4. 잘λͺ»λœ 이벀트 데이터 처리 - Kafka λ°œμ‹  μ„±κ³΅ν•˜μ§€λ§Œ μ €μž₯ μ‹€νŒ¨
kafkaIntegration_DuplicateEventId_ShouldHandleIdempotently 5. λ™μΌν•œ eventId 쀑볡 이벀트 처리 - λ©±λ“±μ„± 확인
kafkaIntegration_BulkEvents_ShouldProcessAllSuccessfully 6. λŒ€μš©λŸ‰ 이벀트 처리 - μ„±λŠ₯ 및 μ•ˆμ •μ„± 검증

NotificationMetadataSerializationTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
testPostLikeMetadata POST_LIKE 메타데이터 μ €μž₯ 및 쑰회 ν…ŒμŠ€νŠΈ
testCommentAddedMetadata COMMENT_ADDED 메타데이터 μ €μž₯ 및 쑰회 ν…ŒμŠ€νŠΈ
testCommentLikeMetadata COMMENT_LIKE 메타데이터 μ €μž₯ 및 쑰회 ν…ŒμŠ€νŠΈ
testFollowRequestMetadata FOLLOW_REQUEST 메타데이터 μ €μž₯ 및 쑰회 ν…ŒμŠ€νŠΈ
testFollowMetadata FOLLOW 메타데이터 μ €μž₯ 및 쑰회 ν…ŒμŠ€νŠΈ
testFollowAcceptMetadata FOLLOW_ACCEPT 메타데이터 μ €μž₯ 및 쑰회 ν…ŒμŠ€νŠΈ

SecurityApiTest

ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μ‹œλ‚˜λ¦¬μ˜€
testValidAccessToken Security API 인증 ν…ŒμŠ€νŠΈ
testNoAuthorizationHeader 2. AccessToken이 μ—†λŠ” 경우 - 400 Unauthorized
testInvalidAccessTokenFormat 3. 잘λͺ»λœ ν˜•μ‹μ˜ AccessToken - 401 Unauthorized
testTokenWithoutBearer 4. Bearer 없이 ν† ν°λ§Œ μ „μ†‘ν•˜λŠ” 경우 - 400 BadRequest
testExpiredAccessToken 5. 만료된 AccessToken - 401 Unauthorized
testBlacklistedAccessToken 6. λΈ”λž™λ¦¬μŠ€νŠΈμ— λ“±λ‘λœ AccessToken - 400 BadRequest
testInvalidSignatureAccessToken 7. 잘λͺ»λœ μ„œλͺ…을 κ°€μ§„ AccessToken - 400 Bad Request
testEmptyAccessToken 8. 빈 λ¬Έμžμ—΄ AccessToken - 400 BadRequest
testMultipleValidRequests 9. μ—¬λŸ¬ 번의 정상적인 μš”μ²­ - 성곡
⚠️ **GitHub.com Fallback** ⚠️