Skip to content

Commit f5e43c0

Browse files
authored
fix: preRegister Device FingerPrinting 시도 횟수 중복 체크 코드 수정
1 parent 01d35e6 commit f5e43c0

3 files changed

Lines changed: 17 additions & 346 deletions

File tree

backend/src/main/java/com/back/api/preregister/service/PreRegisterService.java

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,7 @@ public PreRegisterResponse register(Long eventId, Long userId, PreRegisterCreate
9999
// 모든 검증 통과 후 SMS 인증 플래그 삭제
100100
deleteSmsVerificationFlag(request.phoneNumber());
101101

102-
// Fingerprint 성공 기록 (이벤트별, 사전등록 액션)
103-
if (fingerprintService != null && visitorId != null) {
104-
fingerprintService.recordAttempt(visitorId, eventId, FingerprintService.ACTION_PRE_REGISTER, true);
105-
}
102+
// Fingerprint 기록은 FingerprintRecordFilter에서 자동 처리됨 (중복 방지)
106103

107104
return PreRegisterResponse.from(preRegister);
108105
}
@@ -128,23 +125,14 @@ public PreRegisterResponse register(Long eventId, Long userId, PreRegisterCreate
128125
)
129126
);
130127

131-
// Fingerprint 성공 기록 (이벤트별, 사전등록 액션)
132-
if (fingerprintService != null && visitorId != null) {
133-
fingerprintService.recordAttempt(visitorId, eventId, FingerprintService.ACTION_PRE_REGISTER, true);
134-
}
128+
// Fingerprint 기록은 FingerprintRecordFilter에서 자동 처리됨 (중복 방지)
135129

136130
return PreRegisterResponse.from(savedPreRegister);
137131
} catch (ErrorException e) {
138-
// Fingerprint 실패 기록 (검증 실패) - 이벤트별, 사전등록 액션
139-
if (fingerprintService != null && visitorId != null) {
140-
fingerprintService.recordAttempt(visitorId, eventId, FingerprintService.ACTION_PRE_REGISTER, false);
141-
}
132+
// Fingerprint 기록은 FingerprintRecordFilter에서 자동 처리됨 (중복 방지)
142133
throw e;
143134
} catch (Exception e) {
144-
// Fingerprint 실패 기록 (시스템 에러) - 이벤트별, 사전등록 액션
145-
if (fingerprintService != null && visitorId != null) {
146-
fingerprintService.recordAttempt(visitorId, eventId, FingerprintService.ACTION_PRE_REGISTER, false);
147-
}
135+
// Fingerprint 기록은 FingerprintRecordFilter에서 자동 처리됨 (중복 방지)
148136
throw e;
149137
}
150138
}
@@ -172,7 +160,7 @@ public List<PreRegisterResponse> getMyPreRegister(Long userId) {
172160
.map(preRegister -> {
173161
Event event = preRegister.getEvent();
174162
String imageUrl = null;
175-
if(event.getImageUrl() != null && !event.getImageUrl().isBlank()) {
163+
if (event.getImageUrl() != null && !event.getImageUrl().isBlank()) {
176164
imageUrl = s3PresignedService.issueDownloadUrl(event.getImageUrl());
177165
}
178166

backend/src/test/java/com/back/api/preregister/service/PreRegisterServiceTest.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,7 +1267,7 @@ void register_Success_ReRegisterWithVisitorId() {
12671267
class FingerprintRecording {
12681268

12691269
@Test
1270-
@DisplayName("신규 등록 성공 시 visitorId로 성공 기록 (line 133)")
1270+
@DisplayName("신규 등록 성공 시 Service에서 Fingerprint 기록하지 않음 (FingerprintRecordFilter에서 처리)")
12711271
void register_Success_RecordFingerprintSuccess() {
12721272
// given
12731273
PreRegisterCreateRequest request = PreRegisterRequestFactory.fakePreRegisterRequest(
@@ -1284,12 +1284,12 @@ void register_Success_RecordFingerprintSuccess() {
12841284
visitorId
12851285
);
12861286

1287-
// then: Fingerprint 성공 기록 호출 검증
1288-
verify(fingerprintService).recordAttempt(eq(visitorId), any(Long.class), eq("pre_register"), eq(true));
1287+
// then: Service에서는 Fingerprint 기록하지 않음 (중복 방지 - FingerprintRecordFilter에서 자동 처리)
1288+
verify(fingerprintService, never()).recordAttempt(any(), any(), any(), anyBoolean());
12891289
}
12901290

12911291
@Test
1292-
@DisplayName("재등록 성공 시 visitorId로 성공 기록 (line 104)")
1292+
@DisplayName("재등록 성공 시 Service에서 Fingerprint 기록하지 않음 (FingerprintRecordFilter에서 처리)")
12931293
void register_ReRegister_RecordFingerprintSuccess() {
12941294
// given: CANCELED 상태의 사전등록
12951295
PreRegister canceledPreRegister = PreRegister.builder()
@@ -1315,12 +1315,12 @@ void register_ReRegister_RecordFingerprintSuccess() {
13151315
visitorId
13161316
);
13171317

1318-
// then: Fingerprint 성공 기록 호출 검증
1319-
verify(fingerprintService).recordAttempt(eq(visitorId), any(Long.class), eq("pre_register"), eq(true));
1318+
// then: Service에서는 Fingerprint 기록하지 않음 (중복 방지 - FingerprintRecordFilter에서 자동 처리)
1319+
verify(fingerprintService, never()).recordAttempt(any(), any(), any(), anyBoolean());
13201320
}
13211321

13221322
@Test
1323-
@DisplayName("ErrorException 발생 시 visitorId로 실패 기록 (lines 140, 142)")
1323+
@DisplayName("ErrorException 발생 시 Service에서 Fingerprint 기록하지 않음 (FingerprintRecordFilter에서 처리)")
13241324
void register_ErrorException_RecordFingerprintFailure() {
13251325
// given: 잘못된 생년월일로 ErrorException 유발
13261326
PreRegisterCreateRequest request = PreRegisterRequestFactory.fakePreRegisterRequest(
@@ -1339,12 +1339,12 @@ void register_ErrorException_RecordFingerprintFailure() {
13391339
.isInstanceOf(ErrorException.class)
13401340
.hasMessage(PreRegisterErrorCode.INVALID_USER_INFO.getMessage());
13411341

1342-
// then: Fingerprint 실패 기록 호출 검증
1343-
verify(fingerprintService).recordAttempt(eq(visitorId), any(Long.class), eq("pre_register"), eq(false));
1342+
// then: Service에서는 Fingerprint 기록하지 않음 (중복 방지 - FingerprintRecordFilter에서 자동 처리)
1343+
verify(fingerprintService, never()).recordAttempt(any(), any(), any(), anyBoolean());
13441344
}
13451345

13461346
@Test
1347-
@DisplayName("ErrorException 발생visitorId로 실패 기록 - 약관 미동의 (lines 140, 142)")
1347+
@DisplayName("약관 미동의Service에서 Fingerprint 기록하지 않음 (FingerprintRecordFilter에서 처리)")
13481348
void register_TermsNotAgreed_RecordFingerprintFailure() {
13491349
// given: 약관 미동의로 ErrorException 유발
13501350
PreRegisterCreateRequest request = PreRegisterRequestFactory.fakePreRegisterRequestWithoutTerms(
@@ -1363,8 +1363,8 @@ void register_TermsNotAgreed_RecordFingerprintFailure() {
13631363
.isInstanceOf(ErrorException.class)
13641364
.hasMessage(PreRegisterErrorCode.TERMS_NOT_AGREED.getMessage());
13651365

1366-
// then: Fingerprint 실패 기록 호출 검증
1367-
verify(fingerprintService).recordAttempt(eq(visitorId), any(Long.class), eq("pre_register"), eq(false));
1366+
// then: Service에서는 Fingerprint 기록하지 않음 (중복 방지 - FingerprintRecordFilter에서 자동 처리)
1367+
verify(fingerprintService, never()).recordAttempt(any(), any(), any(), anyBoolean());
13681368
}
13691369

13701370
// Note: Lines 143, 146, 148 (일반 Exception catch 블록)은 통합 테스트로 커버하기 어려움

0 commit comments

Comments
 (0)