Files
owraweb/src/test/java/com/owrawww/service/InquiryServiceTest.java
2026-04-24 14:08:54 +09:00

88 lines
3.0 KiB
Java

package com.owrawww.service;
import com.owrawww.domain.Inquiry;
import com.owrawww.domain.mapper.InquiryMapper;
import com.owrawww.util.AesUtil;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.verify;
@ExtendWith(MockitoExtension.class)
class InquiryServiceTest {
@Mock
private InquiryMapper inquiryMapper;
@Mock
private AesUtil aesUtil;
@InjectMocks
private InquiryService inquiryService;
private Inquiry inquiry;
@BeforeEach
void setUp() {
inquiry = new Inquiry();
inquiry.setName("홍길동");
inquiry.setEmail("hong@example.com");
inquiry.setTel("010-1234-5678");
inquiry.setTitle("도입 문의");
inquiry.setContent("서비스 도입 관련 문의드립니다.");
inquiry.setSolutionGubun("PG");
}
@Test
@DisplayName("submit - 정상 입력 시 저장에 성공하고 true를 반환한다")
void submit_success() {
given(aesUtil.encrypt(inquiry.getTel())).willReturn("ENCRYPTED_TEL");
given(aesUtil.encrypt(inquiry.getEmail())).willReturn("ENCRYPTED_EMAIL");
given(aesUtil.hash(inquiry.getTel())).willReturn("HASH_TEL");
given(aesUtil.hash(inquiry.getEmail())).willReturn("HASH_EMAIL");
given(inquiryMapper.insert(any(Inquiry.class))).willReturn(1);
boolean result = inquiryService.submit(inquiry);
assertThat(result).isTrue();
verify(inquiryMapper).insert(any(Inquiry.class));
}
@Test
@DisplayName("submit - DB 저장 실패 시 false를 반환한다")
void submit_dbFails_returnsFalse() {
given(aesUtil.encrypt(any())).willReturn("ENCRYPTED");
given(aesUtil.hash(any())).willReturn("HASHED");
given(inquiryMapper.insert(any(Inquiry.class))).willReturn(0);
boolean result = inquiryService.submit(inquiry);
assertThat(result).isFalse();
}
@Test
@DisplayName("submit - 전화번호와 이메일이 암호화 및 해시화되어 저장된다")
void submit_encryptsAndHashesSensitiveFields() {
given(aesUtil.encrypt("010-1234-5678")).willReturn("ENC_TEL");
given(aesUtil.encrypt("hong@example.com")).willReturn("ENC_EMAIL");
given(aesUtil.hash("010-1234-5678")).willReturn("HASH_TEL");
given(aesUtil.hash("hong@example.com")).willReturn("HASH_EMAIL");
given(inquiryMapper.insert(any(Inquiry.class))).willReturn(1);
inquiryService.submit(inquiry);
verify(aesUtil).encrypt("010-1234-5678");
verify(aesUtil).encrypt("hong@example.com");
verify(aesUtil).hash("010-1234-5678");
verify(aesUtil).hash("hong@example.com");
}
}