From d3aec7eb80f8351646709e28506f0a716f0fc41d Mon Sep 17 00:00:00 2001 From: jhan0121 Date: Thu, 1 Jan 2026 20:40:57 +0900 Subject: [PATCH] =?UTF-8?q?test:=20MemberServiceTest#authenticateDevice=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BB=A4=EB=B2=84=EB=A6=AC?= =?UTF-8?q?=EC=A7=80=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/service/MemberServiceTest.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/test/java/com/recyclestudy/member/service/MemberServiceTest.java b/src/test/java/com/recyclestudy/member/service/MemberServiceTest.java index 14f0bd1..5e17cf3 100644 --- a/src/test/java/com/recyclestudy/member/service/MemberServiceTest.java +++ b/src/test/java/com/recyclestudy/member/service/MemberServiceTest.java @@ -244,6 +244,43 @@ void authenticateDevice_fail_owner() { .hasMessage("디바이스 소유자가 아닙니다."); } + @Test + @DisplayName("존재하지 않는 디바이스로 인증 시도 시 예외를 던진다") + void authenticateDevice_not_existed_device() { + // given + final Email email = Email.from("test@test.com"); + final DeviceIdentifier deviceIdentifier = DeviceIdentifier.from("test"); + + given(memberRepository.existsByEmail(email)).willReturn(true); + given(deviceRepository.findByIdentifier(deviceIdentifier)).willReturn(Optional.empty()); + + // when + // then + assertThatThrownBy(() -> memberService.authenticateDevice(email, deviceIdentifier)) + .isInstanceOf(NotFoundException.class) + .hasMessage("존재하지 않는 디바이스 아이디입니다: %s".formatted(deviceIdentifier.getValue())); + } + + @Test + @DisplayName("이미 인증 된 디바이스에 다시 인증 시도 시 예외를 던진다") + void authenticateDevice_already_auth() { + // given + final Email email = Email.from("test@test.com"); + final Email otherEmail = Email.from("other@test.com"); + final DeviceIdentifier deviceIdentifier = DeviceIdentifier.from("test"); + final Member member = Member.withoutId(email); + final Device device = Device.withoutId(member, deviceIdentifier, true, ActivationExpiredDateTime.create(now)); + + given(memberRepository.existsByEmail(otherEmail)).willReturn(true); + given(deviceRepository.findByIdentifier(deviceIdentifier)).willReturn(Optional.of(device)); + + // when + // then + assertThatThrownBy(() -> memberService.authenticateDevice(otherEmail, deviceIdentifier)) + .isInstanceOf(BadRequestException.class) + .hasMessage("이미 인증되었습니다"); + } + @Test @DisplayName("디바이스를 삭제할 수 있다") void deleteDevice() {