add Dockerfile

This commit is contained in:
ondal 2025-02-15 16:51:16 +09:00
parent f81bbd170c
commit 4d2bf7fb45
102 changed files with 84 additions and 7520 deletions

Binary file not shown.

25
container/Dockerfile Normal file
View File

@ -0,0 +1,25 @@
# Build stage
FROM openjdk:23-oraclelinux8 AS builder
ARG BUILD_LIB_DIR
ARG ARTIFACTORY_FILE
COPY ${BUILD_LIB_DIR}/${ARTIFACTORY_FILE} app.jar
# Run stage
FROM openjdk:23-slim
ENV USERNAME k8s
ENV ARTIFACTORY_HOME /home/${USERNAME}
ENV JAVA_OPTS=""
# Add a non-root user
RUN adduser --system --group ${USERNAME} && \
mkdir -p ${ARTIFACTORY_HOME} && \
chown ${USERNAME}:${USERNAME} ${ARTIFACTORY_HOME}
WORKDIR ${ARTIFACTORY_HOME}
COPY --from=builder app.jar app.jar
RUN chown ${USERNAME}:${USERNAME} app.jar
USER ${USERNAME}
ENTRYPOINT [ "sh", "-c" ]
CMD ["java ${JAVA_OPTS} -jar app.jar"]

Binary file not shown.

View File

@ -1,151 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - MemberControllerIntegrationTest</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>MemberControllerIntegrationTest</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt;
<a href="../packages/com.unicorn.lifesub.member.test.integration.controller.html">com.unicorn.lifesub.member.test.integration.controller</a> &gt; MemberControllerIntegrationTest</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">4</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.781s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Tests</a>
</li>
<li>
<a href="#tab1">Standard output</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Tests</h2>
<table>
<thead>
<tr>
<th>Test</th>
<th>Method name</th>
<th>Duration</th>
<th>Result</th>
</tr>
</thead>
<tr>
<td class="success">로그인 실패 테스트 - 잘못된 요청 형식</td>
<td class="success">loginFailInvalidRequest()</td>
<td class="success">0.110s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">로그인 성공 테스트</td>
<td class="success">loginSuccess()</td>
<td class="success">0.060s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">로그아웃 실패 테스트 - 잘못된 요청 형식</td>
<td class="success">logoutFailInvalidRequest()</td>
<td class="success">0.060s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">로그아웃 성공 테스트</td>
<td class="success">logoutSuccess()</td>
<td class="success">0.551s</td>
<td class="success">passed</td>
</tr>
</table>
</div>
<div id="tab1" class="tab">
<h2>Standard output</h2>
<span class="code">
<pre>
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.4.0)
2025-02-14T23:45:39.822+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.c.MemberControllerIntegrationTest : Starting MemberControllerIntegrationTest using Java 18.0.2 with PID 99945 (started by ondal in /Users/ondal/home/workspace/lifesub/member)
2025-02-14T23:45:39.825+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] .m.t.i.c.MemberControllerIntegrationTest : Running with Spring Boot v3.4.0, Spring v6.2.0
2025-02-14T23:45:39.825+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.c.MemberControllerIntegrationTest : The following 1 profile is active: &quot;integration-test&quot;
2025-02-14T23:45:40.778+09:00 WARN 99945 --- [member-service-test] [ Test worker] .s.s.UserDetailsServiceAutoConfiguration :
Using generated security password: 6aa45464-02a7-4558-8a92-e66c40f4756b
This generated password is for development use only. Your security configuration must be updated before running your application in production.
2025-02-14T23:45:40.793+09:00 INFO 99945 --- [member-service-test] [ Test worker] r$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager
2025-02-14T23:45:42.817+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.s.b.t.m.w.SpringBootMockServletContext : Initializing Spring TestDispatcherServlet ''
2025-02-14T23:45:42.821+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.s.t.web.servlet.TestDispatcherServlet : Initializing Servlet ''
2025-02-14T23:45:42.830+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.s.t.web.servlet.TestDispatcherServlet : Completed initialization in 5 ms
2025-02-14T23:45:42.954+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.c.MemberControllerIntegrationTest : Started MemberControllerIntegrationTest in 3.343 seconds (process running for 65.774)
2025-02-14T23:45:43.628+09:00 WARN 99945 --- [member-service-test] [ Test worker] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public org.springframework.http.ResponseEntity&lt;com.unicorn.lifesub.common.dto.ApiResponse&lt;com.unicorn.lifesub.common.dto.JwtTokenDTO&gt;&gt; com.unicorn.lifesub.member.controller.MemberController.login(com.unicorn.lifesub.member.dto.LoginRequest) with 2 errors: [Field error in object 'loginRequest' on field 'password': rejected value [null]; codes [NotBlank.loginRequest.password,NotBlank.password,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [loginRequest.password,password]; arguments []; default message [password]]; default message [비밀번호는 필수입니다.]] [Field error in object 'loginRequest' on field 'userId': rejected value [null]; codes [NotBlank.loginRequest.userId,NotBlank.userId,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [loginRequest.userId,userId]; arguments []; default message [userId]]; default message [사용자 ID는 필수입니다.]] ]
2025-02-14T23:45:43.705+09:00 WARN 99945 --- [member-service-test] [ Test worker] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public org.springframework.http.ResponseEntity&lt;com.unicorn.lifesub.common.dto.ApiResponse&lt;com.unicorn.lifesub.member.dto.LogoutResponse&gt;&gt; com.unicorn.lifesub.member.controller.MemberController.logout(com.unicorn.lifesub.member.dto.LogoutRequest): [Field error in object 'logoutRequest' on field 'userId': rejected value [null]; codes [NotBlank.logoutRequest.userId,NotBlank.userId,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [logoutRequest.userId,userId]; arguments []; default message [userId]]; default message [사용자 ID는 필수입니다.]] ]
</pre>
</span>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,526 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - MemberRepositoryIntegrationTest</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>MemberRepositoryIntegrationTest</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt;
<a href="../packages/com.unicorn.lifesub.member.test.integration.repository.html">com.unicorn.lifesub.member.test.integration.repository</a> &gt; MemberRepositoryIntegrationTest</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">4</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.625s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Tests</a>
</li>
<li>
<a href="#tab1">Standard output</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Tests</h2>
<table>
<thead>
<tr>
<th>Test</th>
<th>Method name</th>
<th>Duration</th>
<th>Result</th>
</tr>
</thead>
<tr>
<td class="success">회원 삭제 테스트</td>
<td class="success">givenExistingMember_whenDelete_thenCannotFind()</td>
<td class="success">0.081s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">회원 정보 업데이트 테스트</td>
<td class="success">givenExistingMember_whenUpdateInfo_thenSuccess()</td>
<td class="success">0.178s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">회원 저장 및 조회 테스트</td>
<td class="success">givenMemberEntity_whenSave_thenFindByUserId()</td>
<td class="success">0.341s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">존재하지 않는 회원 조회 테스트</td>
<td class="success">givenNonExistentUserId_whenFindByUserId_thenReturnEmpty()</td>
<td class="success">0.025s</td>
<td class="success">passed</td>
</tr>
</table>
</div>
<div id="tab1" class="tab">
<h2>Standard output</h2>
<span class="code">
<pre>2025-02-14T23:45:43.930+09:00 INFO 99945 --- [member-service-test] [ Test worker] t.c.s.AnnotationConfigContextLoaderUtils : Could not detect default configuration classes for test class [com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest]: MemberRepositoryIntegrationTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
2025-02-14T23:45:44.293+09:00 INFO 99945 --- [member-service-test] [ Test worker] .b.t.c.SpringBootTestContextBootstrapper : Found @SpringBootConfiguration com.unicorn.lifesub.member.MemberApplication for test class com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest
2025-02-14T23:45:44.315+09:00 INFO 99945 --- [member-service-test] [ Test worker] tc.postgres:13.2-alpine : Creating container for image: postgres:13.2-alpine
2025-02-14T23:45:44.451+09:00 INFO 99945 --- [member-service-test] [ Test worker] tc.postgres:13.2-alpine : Container postgres:13.2-alpine is starting: 6b79d075221360d24585825bd669f3f2099a36a70cc40b3b166e8fb6762cc3e9
2025-02-14T23:45:46.654+09:00 INFO 99945 --- [member-service-test] [ Test worker] tc.postgres:13.2-alpine : Container postgres:13.2-alpine started in PT2.338311S
2025-02-14T23:45:46.673+09:00 INFO 99945 --- [member-service-test] [ Test worker] tc.postgres:13.2-alpine : Container is started (JDBC URL: jdbc:postgresql://localhost:58666/member?loggerLevel=OFF)
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.4.0)
2025-02-14T23:45:47.048+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.r.MemberRepositoryIntegrationTest : Starting MemberRepositoryIntegrationTest using Java 18.0.2 with PID 99945 (started by ondal in /Users/ondal/home/workspace/lifesub/member)
2025-02-14T23:45:47.050+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] .m.t.i.r.MemberRepositoryIntegrationTest : Running with Spring Boot v3.4.0, Spring v6.2.0
2025-02-14T23:45:47.058+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.r.MemberRepositoryIntegrationTest : The following 1 profile is active: &quot;integration-test&quot;
2025-02-14T23:45:48.793+09:00 INFO 99945 --- [member-service-test] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2025-02-14T23:45:48.950+09:00 INFO 99945 --- [member-service-test] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 107 ms. Found 1 JPA repository interface.
2025-02-14T23:45:49.932+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2025-02-14T23:45:49.958+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled
2025-02-14T23:45:50.150+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer
2025-02-14T23:45:50.161+09:00 INFO 99945 --- [member-service-test] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Starting...
2025-02-14T23:45:50.266+09:00 INFO 99945 --- [member-service-test] [ Test worker] com.zaxxer.hikari.pool.HikariPool : HikariPool-2 - Added connection org.postgresql.jdbc.PgConnection@54210bb8
2025-02-14T23:45:50.272+09:00 INFO 99945 --- [member-service-test] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Start completed.
2025-02-14T23:45:50.290+09:00 WARN 99945 --- [member-service-test] [ Test worker] org.hibernate.orm.deprecation : HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
2025-02-14T23:45:50.300+09:00 INFO 99945 --- [member-service-test] [ Test worker] org.hibernate.orm.connections.pooling : HHH10001005: Database info:
Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-2)']
Database driver: undefined/unknown
Database version: 13.2
Autocommit mode: undefined/unknown
Isolation level: undefined/unknown
Minimum pool size: undefined/unknown
Maximum pool size: undefined/unknown
2025-02-14T23:45:50.938+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2025-02-14T23:45:51.157+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
create table member_roles (
user_id varchar(255) not null,
role varchar(255)
)
Hibernate:
create table member_roles (
user_id varchar(255) not null,
role varchar(255)
)
2025-02-14T23:45:51.193+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
create table members (
user_id varchar(255) not null,
created_at timestamp(6),
updated_at timestamp(6),
password varchar(255) not null,
user_name varchar(255) not null,
primary key (user_id)
)
Hibernate:
create table members (
user_id varchar(255) not null,
created_at timestamp(6),
updated_at timestamp(6),
password varchar(255) not null,
user_name varchar(255) not null,
primary key (user_id)
)
2025-02-14T23:45:51.224+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
alter table if exists member_roles
add constraint FKkrahbaoj05n0hyabejnnrmft
foreign key (user_id)
references members
Hibernate:
alter table if exists member_roles
add constraint FKkrahbaoj05n0hyabejnnrmft
foreign key (user_id)
references members
2025-02-14T23:45:51.242+09:00 INFO 99945 --- [member-service-test] [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2025-02-14T23:45:51.723+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.r.MemberRepositoryIntegrationTest : Started MemberRepositoryIntegrationTest in 5.01 seconds (process running for 74.544)
2025-02-14T23:45:51.942+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
2025-02-14T23:45:51.963+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
member_roles
(user_id, role)
values
(?, ?)
Hibernate:
insert
into
member_roles
(user_id, role)
values
(?, ?)
2025-02-14T23:45:52.003+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
2025-02-14T23:45:52.033+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
Hibernate:
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
2025-02-14T23:45:52.180+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
2025-02-14T23:45:52.188+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
member_roles
(user_id, role)
values
(?, ?)
Hibernate:
insert
into
member_roles
(user_id, role)
values
(?, ?)
2025-02-14T23:45:52.195+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
2025-02-14T23:45:52.203+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
Hibernate:
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
2025-02-14T23:45:52.284+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
update
members
set
created_at=?,
password=?,
updated_at=?,
user_name=?
where
user_id=?
Hibernate:
update
members
set
created_at=?,
password=?,
updated_at=?,
user_name=?
where
user_id=?
2025-02-14T23:45:52.312+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
2025-02-14T23:45:52.318+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
Hibernate:
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
2025-02-14T23:45:52.367+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
2025-02-14T23:45:52.394+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
2025-02-14T23:45:52.400+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
member_roles
(user_id, role)
values
(?, ?)
Hibernate:
insert
into
member_roles
(user_id, role)
values
(?, ?)
2025-02-14T23:45:52.404+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
2025-02-14T23:45:52.408+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
Hibernate:
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
2025-02-14T23:45:52.437+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
delete
from
member_roles
where
user_id=?
Hibernate:
delete
from
member_roles
where
user_id=?
2025-02-14T23:45:52.444+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
delete
from
members
where
user_id=?
Hibernate:
delete
from
members
where
user_id=?
2025-02-14T23:45:52.453+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
</pre>
</span>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,104 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - MemberServiceIntegrationTest</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>MemberServiceIntegrationTest</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt;
<a href="../packages/com.unicorn.lifesub.member.test.integration.service.html">com.unicorn.lifesub.member.test.integration.service</a> &gt; MemberServiceIntegrationTest</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">2</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">1.729s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Tests</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Tests</h2>
<table>
<thead>
<tr>
<th>Test</th>
<th>Method name</th>
<th>Duration</th>
<th>Result</th>
</tr>
</thead>
<tr>
<td class="success">로그아웃 처리 성공</td>
<td class="success">givenUserId_whenLogout_thenSuccess()</td>
<td class="success">1.518s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">유효한 자격증명으로 로그인 성공</td>
<td class="success">givenValidCredentials_whenLogin_thenReturnJwtToken()</td>
<td class="success">0.211s</td>
<td class="success">passed</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,110 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - CustomUserDetailsServiceUnitTest</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>CustomUserDetailsServiceUnitTest</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt;
<a href="../packages/com.unicorn.lifesub.member.test.unit.config.jwt.html">com.unicorn.lifesub.member.test.unit.config.jwt</a> &gt; CustomUserDetailsServiceUnitTest</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">3</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.112s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Tests</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Tests</h2>
<table>
<thead>
<tr>
<th>Test</th>
<th>Method name</th>
<th>Duration</th>
<th>Result</th>
</tr>
</thead>
<tr>
<td class="success">givenExistingUserId_whenLoadUser_thenReturnUserDetails</td>
<td class="success">givenExistingUserId_whenLoadUser_thenReturnUserDetails()</td>
<td class="success">0.007s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenNonExistentUserId_whenLoadUser_thenThrowException</td>
<td class="success">givenNonExistentUserId_whenLoadUser_thenThrowException()</td>
<td class="success">0.064s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenUserWithRoles_whenLoadUser_thenMapAuthoritiesCorrectly</td>
<td class="success">givenUserWithRoles_whenLoadUser_thenMapAuthoritiesCorrectly()</td>
<td class="success">0.041s</td>
<td class="success">passed</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,228 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - JwtTokenProviderUnitTest</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>JwtTokenProviderUnitTest</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt;
<a href="../packages/com.unicorn.lifesub.member.test.unit.config.jwt.html">com.unicorn.lifesub.member.test.unit.config.jwt</a> &gt; JwtTokenProviderUnitTest</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">5</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.833s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Tests</a>
</li>
<li>
<a href="#tab1">Standard output</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Tests</h2>
<table>
<thead>
<tr>
<th>Test</th>
<th>Method name</th>
<th>Duration</th>
<th>Result</th>
</tr>
</thead>
<tr>
<td class="success">givenInvalidToken_whenValidate_thenThrowException</td>
<td class="success">givenInvalidToken_whenValidate_thenThrowException()</td>
<td class="success">0.119s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenRequest_whenResolveToken_thenSuccess</td>
<td class="success">givenRequest_whenResolveToken_thenSuccess()</td>
<td class="success">0.673s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenToken_whenValidate_thenSuccess</td>
<td class="success">givenToken_whenValidate_thenSuccess()</td>
<td class="success">0.006s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenValidMember_whenCreateToken_thenSuccess</td>
<td class="success">givenValidMember_whenCreateToken_thenSuccess()</td>
<td class="success">0.028s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenValidToken_whenGetAuthentication_thenSuccess</td>
<td class="success">givenValidToken_whenGetAuthentication_thenSuccess()</td>
<td class="success">0.007s</td>
<td class="success">passed</td>
</tr>
</table>
</div>
<div id="tab1" class="tab">
<h2>Standard output</h2>
<span class="code">
<pre>2025-02-14T23:45:55.728+09:00 INFO 99945 --- [member-service-test] [ Test worker] c.u.l.m.config.jwt.JwtTokenProvider : ******** validateToken: invalid-token
2025-02-14T23:45:55.759+09:00 ERROR 99945 --- [member-service-test] [ Test worker] c.u.l.m.config.jwt.JwtTokenProvider : Undefined Error: The token was expected to have 3 parts, but got 0.
com.auth0.jwt.exceptions.JWTDecodeException: The token was expected to have 3 parts, but got 0.
at com.auth0.jwt.TokenUtils.wrongNumberOfParts(TokenUtils.java:45) ~[java-jwt-4.4.0.jar:4.4.0]
at com.auth0.jwt.TokenUtils.splitToken(TokenUtils.java:23) ~[java-jwt-4.4.0.jar:4.4.0]
at com.auth0.jwt.JWTDecoder.&lt;init&gt;(JWTDecoder.java:37) ~[java-jwt-4.4.0.jar:4.4.0]
at com.auth0.jwt.JWTVerifier.verify(JWTVerifier.java:444) ~[java-jwt-4.4.0.jar:4.4.0]
at com.unicorn.lifesub.member.config.jwt.JwtTokenProvider.validateToken(JwtTokenProvider.java:112) ~[main/:na]
at com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest.lambda$givenInvalidToken_whenValidate_thenThrowException$0(JwtTokenProviderUnitTest.java:126) ~[test/:na]
at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:53) ~[junit-jupiter-api-5.11.3.jar:5.11.3]
at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:35) ~[junit-jupiter-api-5.11.3.jar:5.11.3]
at org.junit.jupiter.api.Assertions.assertThrows(Assertions.java:3128) ~[junit-jupiter-api-5.11.3.jar:5.11.3]
at com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest.givenInvalidToken_whenValidate_thenThrowException(JwtTokenProviderUnitTest.java:126) ~[test/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:767) ~[junit-platform-commons-1.11.3.jar:1.11.3]
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(TestMethodTestDescriptor.java:217) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:156) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119) ~[na:na]
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94) ~[na:na]
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89) ~[na:na]
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) ~[na:na]
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) ~[na:na]
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) ~[na:na]
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) ~[na:na]
at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source) ~[na:na]
at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193) ~[na:na]
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) ~[na:na]
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) ~[na:na]
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) ~[na:na]
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) ~[na:na]
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) ~[na:na]
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) ~[na:na]
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) ~[gradle-worker.jar:na]
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) ~[gradle-worker.jar:na]
2025-02-14T23:45:55.832+09:00 INFO 99945 --- [member-service-test] [ Test worker] c.u.l.m.config.jwt.JwtTokenProvider : ******** validateToken: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0VXNlciIsInVzZXJJZCI6InRlc3RVc2VyIiwidXNlck5hbWUiOiJUZXN0IFVzZXIiLCJhdXRoIjpbIlJPTEVfVVNFUiJdLCJpYXQiOjE3Mzk1NDQzNTUsImV4cCI6MTc0MzE0NDM1NX0.mdBFO7WH3XMHafHC6WpEQ-j8D_uNHq8HnxubMgpfIhq6rkIOdOMO0w1iN0gskTyJOgxGAxe8P5LwynLSUO8jEQ
2025-02-14T23:45:55.859+09:00 INFO 99945 --- [member-service-test] [ Test worker] c.u.l.m.config.jwt.JwtTokenProvider : ******** validateToken: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0VXNlciIsImF1dGgiOlsiUk9MRV9VU0VSIl19.s0nwJ9sbCd7YYRCIj2yGgbuNP3KgpZ5SssKSOoo_FDg8mCrxilGVMaiv2gPGq0q0hx_RC413cAeMM-Y4nurEIw
</pre>
</span>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,116 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - MemberUnitTest</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>MemberUnitTest</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt;
<a href="../packages/com.unicorn.lifesub.member.test.unit.domain.html">com.unicorn.lifesub.member.test.unit.domain</a> &gt; MemberUnitTest</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">4</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.008s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Tests</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Tests</h2>
<table>
<thead>
<tr>
<th>Test</th>
<th>Method name</th>
<th>Duration</th>
<th>Result</th>
</tr>
</thead>
<tr>
<td class="success">givenMemberDomain_whenConvertToEntity_thenSuccess</td>
<td class="success">givenMemberDomain_whenConvertToEntity_thenSuccess()</td>
<td class="success">0.003s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenMemberEntity_whenConvertToDomain_thenSuccess</td>
<td class="success">givenMemberEntity_whenConvertToDomain_thenSuccess()</td>
<td class="success">0s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenMemberInfo_whenBuildMember_thenSuccess</td>
<td class="success">givenMemberInfo_whenBuildMember_thenSuccess()</td>
<td class="success">0.002s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenMultipleRoles_whenBuildMember_thenSuccess</td>
<td class="success">givenMultipleRoles_whenBuildMember_thenSuccess()</td>
<td class="success">0.003s</td>
<td class="success">passed</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,116 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - MemberServiceImplUnitTest</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>MemberServiceImplUnitTest</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt;
<a href="../packages/com.unicorn.lifesub.member.test.unit.service.html">com.unicorn.lifesub.member.test.unit.service</a> &gt; MemberServiceImplUnitTest</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">4</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.055s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Tests</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Tests</h2>
<table>
<thead>
<tr>
<th>Test</th>
<th>Method name</th>
<th>Duration</th>
<th>Result</th>
</tr>
</thead>
<tr>
<td class="success">givenInvalidPassword_whenLogin_thenThrowException</td>
<td class="success">givenInvalidPassword_whenLogin_thenThrowException()</td>
<td class="success">0.017s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenLogoutRequest_whenLogout_thenSuccess</td>
<td class="success">givenLogoutRequest_whenLogout_thenSuccess()</td>
<td class="success">0.010s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenNonExistentUser_whenLogin_thenThrowException</td>
<td class="success">givenNonExistentUser_whenLogin_thenThrowException()</td>
<td class="success">0.008s</td>
<td class="success">passed</td>
</tr>
<tr>
<td class="success">givenValidCredentials_whenLogin_thenSuccess</td>
<td class="success">givenValidCredentials_whenLogin_thenSuccess()</td>
<td class="success">0.020s</td>
<td class="success">passed</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,179 +0,0 @@
body {
margin: 0;
padding: 0;
font-family: sans-serif;
font-size: 12pt;
}
body, a, a:visited {
color: #303030;
}
#content {
padding-left: 50px;
padding-right: 50px;
padding-top: 30px;
padding-bottom: 30px;
}
#content h1 {
font-size: 160%;
margin-bottom: 10px;
}
#footer {
margin-top: 100px;
font-size: 80%;
white-space: nowrap;
}
#footer, #footer a {
color: #a0a0a0;
}
#line-wrapping-toggle {
vertical-align: middle;
}
#label-for-line-wrapping-toggle {
vertical-align: middle;
}
ul {
margin-left: 0;
}
h1, h2, h3 {
white-space: nowrap;
}
h2 {
font-size: 120%;
}
ul.tabLinks {
padding-left: 0;
padding-top: 10px;
padding-bottom: 10px;
overflow: auto;
min-width: 800px;
width: auto !important;
width: 800px;
}
ul.tabLinks li {
float: left;
height: 100%;
list-style: none;
padding-left: 10px;
padding-right: 10px;
padding-top: 5px;
padding-bottom: 5px;
margin-bottom: 0;
-moz-border-radius: 7px;
border-radius: 7px;
margin-right: 25px;
border: solid 1px #d4d4d4;
background-color: #f0f0f0;
}
ul.tabLinks li:hover {
background-color: #fafafa;
}
ul.tabLinks li.selected {
background-color: #c5f0f5;
border-color: #c5f0f5;
}
ul.tabLinks a {
font-size: 120%;
display: block;
outline: none;
text-decoration: none;
margin: 0;
padding: 0;
}
ul.tabLinks li h2 {
margin: 0;
padding: 0;
}
div.tab {
}
div.selected {
display: block;
}
div.deselected {
display: none;
}
div.tab table {
min-width: 350px;
width: auto !important;
width: 350px;
border-collapse: collapse;
}
div.tab th, div.tab table {
border-bottom: solid #d0d0d0 1px;
}
div.tab th {
text-align: left;
white-space: nowrap;
padding-left: 6em;
}
div.tab th:first-child {
padding-left: 0;
}
div.tab td {
white-space: nowrap;
padding-left: 6em;
padding-top: 5px;
padding-bottom: 5px;
}
div.tab td:first-child {
padding-left: 0;
}
div.tab td.numeric, div.tab th.numeric {
text-align: right;
}
span.code {
display: inline-block;
margin-top: 0em;
margin-bottom: 1em;
}
span.code pre {
font-size: 11pt;
padding-top: 10px;
padding-bottom: 10px;
padding-left: 10px;
padding-right: 10px;
margin: 0;
background-color: #f7f7f7;
border: solid 1px #d0d0d0;
min-width: 700px;
width: auto !important;
width: 700px;
}
span.wrapped pre {
word-wrap: break-word;
white-space: pre-wrap;
word-break: break-all;
}
label.hidden {
display: none;
}

View File

@ -1,84 +0,0 @@
#summary {
margin-top: 30px;
margin-bottom: 40px;
}
#summary table {
border-collapse: collapse;
}
#summary td {
vertical-align: top;
}
.breadcrumbs, .breadcrumbs a {
color: #606060;
}
.infoBox {
width: 110px;
padding-top: 15px;
padding-bottom: 15px;
text-align: center;
}
.infoBox p {
margin: 0;
}
.counter, .percent {
font-size: 120%;
font-weight: bold;
margin-bottom: 8px;
}
#duration {
width: 125px;
}
#successRate, .summaryGroup {
border: solid 2px #d0d0d0;
-moz-border-radius: 10px;
border-radius: 10px;
}
#successRate {
width: 140px;
margin-left: 35px;
}
#successRate .percent {
font-size: 180%;
}
.success, .success a {
color: #008000;
}
div.success, #successRate.success {
background-color: #bbd9bb;
border-color: #008000;
}
.failures, .failures a {
color: #b60808;
}
.skipped, .skipped a {
color: #c09853;
}
div.failures, #successRate.failures {
background-color: #ecdada;
border-color: #b60808;
}
ul.linkList {
padding-left: 0;
}
ul.linkList li {
list-style: none;
margin-bottom: 5px;
}

View File

@ -1,263 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - Test Summary</title>
<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
<script src="js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>Test Summary</h1>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">29</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">11.231s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Packages</a>
</li>
<li>
<a href="#tab1">Classes</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Packages</h2>
<table>
<thead>
<tr>
<th>Package</th>
<th>Tests</th>
<th>Failures</th>
<th>Ignored</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thead>
<tbody>
<tr>
<td class="success">
<a href="packages/com.unicorn.lifesub.member.test.e2e.html">com.unicorn.lifesub.member.test.e2e</a>
</td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>7.088s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="packages/com.unicorn.lifesub.member.test.integration.controller.html">com.unicorn.lifesub.member.test.integration.controller</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.781s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="packages/com.unicorn.lifesub.member.test.integration.repository.html">com.unicorn.lifesub.member.test.integration.repository</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.625s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="packages/com.unicorn.lifesub.member.test.integration.service.html">com.unicorn.lifesub.member.test.integration.service</a>
</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>1.729s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="packages/com.unicorn.lifesub.member.test.unit.config.jwt.html">com.unicorn.lifesub.member.test.unit.config.jwt</a>
</td>
<td>8</td>
<td>0</td>
<td>0</td>
<td>0.945s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="packages/com.unicorn.lifesub.member.test.unit.domain.html">com.unicorn.lifesub.member.test.unit.domain</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.008s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="packages/com.unicorn.lifesub.member.test.unit.service.html">com.unicorn.lifesub.member.test.unit.service</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.055s</td>
<td class="success">100%</td>
</tr>
</tbody>
</table>
</div>
<div id="tab1" class="tab">
<h2>Classes</h2>
<table>
<thead>
<tr>
<th>Class</th>
<th>Tests</th>
<th>Failures</th>
<th>Ignored</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thead>
<tbody>
<tr>
<td class="success">
<a href="classes/com.unicorn.lifesub.member.test.e2e.MemberE2ETest.html">com.unicorn.lifesub.member.test.e2e.MemberE2ETest</a>
</td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>7.088s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="classes/com.unicorn.lifesub.member.test.integration.controller.MemberControllerIntegrationTest.html">com.unicorn.lifesub.member.test.integration.controller.MemberControllerIntegrationTest</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.781s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="classes/com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest.html">com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.625s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="classes/com.unicorn.lifesub.member.test.integration.service.MemberServiceIntegrationTest.html">com.unicorn.lifesub.member.test.integration.service.MemberServiceIntegrationTest</a>
</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>1.729s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="classes/com.unicorn.lifesub.member.test.unit.config.jwt.CustomUserDetailsServiceUnitTest.html">com.unicorn.lifesub.member.test.unit.config.jwt.CustomUserDetailsServiceUnitTest</a>
</td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>0.112s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="classes/com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest.html">com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest</a>
</td>
<td>5</td>
<td>0</td>
<td>0</td>
<td>0.833s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="classes/com.unicorn.lifesub.member.test.unit.domain.MemberUnitTest.html">com.unicorn.lifesub.member.test.unit.domain.MemberUnitTest</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.008s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="classes/com.unicorn.lifesub.member.test.unit.service.MemberServiceImplUnitTest.html">com.unicorn.lifesub.member.test.unit.service.MemberServiceImplUnitTest</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.055s</td>
<td class="success">100%</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,194 +0,0 @@
(function (window, document) {
"use strict";
var tabs = {};
function changeElementClass(element, classValue) {
if (element.getAttribute("className")) {
element.setAttribute("className", classValue);
} else {
element.setAttribute("class", classValue);
}
}
function getClassAttribute(element) {
if (element.getAttribute("className")) {
return element.getAttribute("className");
} else {
return element.getAttribute("class");
}
}
function addClass(element, classValue) {
changeElementClass(element, getClassAttribute(element) + " " + classValue);
}
function removeClass(element, classValue) {
changeElementClass(element, getClassAttribute(element).replace(classValue, ""));
}
function initTabs() {
var container = document.getElementById("tabs");
tabs.tabs = findTabs(container);
tabs.titles = findTitles(tabs.tabs);
tabs.headers = findHeaders(container);
tabs.select = select;
tabs.deselectAll = deselectAll;
tabs.select(0);
return true;
}
function getCheckBox() {
return document.getElementById("line-wrapping-toggle");
}
function getLabelForCheckBox() {
return document.getElementById("label-for-line-wrapping-toggle");
}
function findCodeBlocks() {
var spans = document.getElementById("tabs").getElementsByTagName("span");
var codeBlocks = [];
for (var i = 0; i < spans.length; ++i) {
if (spans[i].className.indexOf("code") >= 0) {
codeBlocks.push(spans[i]);
}
}
return codeBlocks;
}
function forAllCodeBlocks(operation) {
var codeBlocks = findCodeBlocks();
for (var i = 0; i < codeBlocks.length; ++i) {
operation(codeBlocks[i], "wrapped");
}
}
function toggleLineWrapping() {
var checkBox = getCheckBox();
if (checkBox.checked) {
forAllCodeBlocks(addClass);
} else {
forAllCodeBlocks(removeClass);
}
}
function initControls() {
if (findCodeBlocks().length > 0) {
var checkBox = getCheckBox();
var label = getLabelForCheckBox();
checkBox.onclick = toggleLineWrapping;
checkBox.checked = false;
removeClass(label, "hidden");
}
}
function switchTab() {
var id = this.id.substr(1);
for (var i = 0; i < tabs.tabs.length; i++) {
if (tabs.tabs[i].id === id) {
tabs.select(i);
break;
}
}
return false;
}
function select(i) {
this.deselectAll();
changeElementClass(this.tabs[i], "tab selected");
changeElementClass(this.headers[i], "selected");
while (this.headers[i].firstChild) {
this.headers[i].removeChild(this.headers[i].firstChild);
}
var h2 = document.createElement("H2");
h2.appendChild(document.createTextNode(this.titles[i]));
this.headers[i].appendChild(h2);
}
function deselectAll() {
for (var i = 0; i < this.tabs.length; i++) {
changeElementClass(this.tabs[i], "tab deselected");
changeElementClass(this.headers[i], "deselected");
while (this.headers[i].firstChild) {
this.headers[i].removeChild(this.headers[i].firstChild);
}
var a = document.createElement("A");
a.setAttribute("id", "ltab" + i);
a.setAttribute("href", "#tab" + i);
a.onclick = switchTab;
a.appendChild(document.createTextNode(this.titles[i]));
this.headers[i].appendChild(a);
}
}
function findTabs(container) {
return findChildElements(container, "DIV", "tab");
}
function findHeaders(container) {
var owner = findChildElements(container, "UL", "tabLinks");
return findChildElements(owner[0], "LI", null);
}
function findTitles(tabs) {
var titles = [];
for (var i = 0; i < tabs.length; i++) {
var tab = tabs[i];
var header = findChildElements(tab, "H2", null)[0];
header.parentNode.removeChild(header);
if (header.innerText) {
titles.push(header.innerText);
} else {
titles.push(header.textContent);
}
}
return titles;
}
function findChildElements(container, name, targetClass) {
var elements = [];
var children = container.childNodes;
for (var i = 0; i < children.length; i++) {
var child = children.item(i);
if (child.nodeType === 1 && child.nodeName === name) {
if (targetClass && child.className.indexOf(targetClass) < 0) {
continue;
}
elements.push(child);
}
}
return elements;
}
// Entry point.
window.onload = function() {
initTabs();
initControls();
};
} (window, window.document));

View File

@ -1,103 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - Package com.unicorn.lifesub.member.test.e2e</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>Package com.unicorn.lifesub.member.test.e2e</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt; com.unicorn.lifesub.member.test.e2e</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">3</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">7.088s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Classes</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Classes</h2>
<table>
<thread>
<tr>
<th>Class</th>
<th>Tests</th>
<th>Failures</th>
<th>Ignored</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thread>
<tr>
<td class="success">
<a href="../classes/com.unicorn.lifesub.member.test.e2e.MemberE2ETest.html">MemberE2ETest</a>
</td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>7.088s</td>
<td class="success">100%</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,103 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - Package com.unicorn.lifesub.member.test.integration.controller</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>Package com.unicorn.lifesub.member.test.integration.controller</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt; com.unicorn.lifesub.member.test.integration.controller</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">4</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.781s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Classes</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Classes</h2>
<table>
<thread>
<tr>
<th>Class</th>
<th>Tests</th>
<th>Failures</th>
<th>Ignored</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thread>
<tr>
<td class="success">
<a href="../classes/com.unicorn.lifesub.member.test.integration.controller.MemberControllerIntegrationTest.html">MemberControllerIntegrationTest</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.781s</td>
<td class="success">100%</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,103 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - Package com.unicorn.lifesub.member.test.integration.repository</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>Package com.unicorn.lifesub.member.test.integration.repository</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt; com.unicorn.lifesub.member.test.integration.repository</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">4</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.625s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Classes</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Classes</h2>
<table>
<thread>
<tr>
<th>Class</th>
<th>Tests</th>
<th>Failures</th>
<th>Ignored</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thread>
<tr>
<td class="success">
<a href="../classes/com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest.html">MemberRepositoryIntegrationTest</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.625s</td>
<td class="success">100%</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,103 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - Package com.unicorn.lifesub.member.test.integration.service</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>Package com.unicorn.lifesub.member.test.integration.service</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt; com.unicorn.lifesub.member.test.integration.service</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">2</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">1.729s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Classes</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Classes</h2>
<table>
<thread>
<tr>
<th>Class</th>
<th>Tests</th>
<th>Failures</th>
<th>Ignored</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thread>
<tr>
<td class="success">
<a href="../classes/com.unicorn.lifesub.member.test.integration.service.MemberServiceIntegrationTest.html">MemberServiceIntegrationTest</a>
</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>1.729s</td>
<td class="success">100%</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,113 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - Package com.unicorn.lifesub.member.test.unit.config.jwt</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>Package com.unicorn.lifesub.member.test.unit.config.jwt</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt; com.unicorn.lifesub.member.test.unit.config.jwt</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">8</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.945s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Classes</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Classes</h2>
<table>
<thread>
<tr>
<th>Class</th>
<th>Tests</th>
<th>Failures</th>
<th>Ignored</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thread>
<tr>
<td class="success">
<a href="../classes/com.unicorn.lifesub.member.test.unit.config.jwt.CustomUserDetailsServiceUnitTest.html">CustomUserDetailsServiceUnitTest</a>
</td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>0.112s</td>
<td class="success">100%</td>
</tr>
<tr>
<td class="success">
<a href="../classes/com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest.html">JwtTokenProviderUnitTest</a>
</td>
<td>5</td>
<td>0</td>
<td>0</td>
<td>0.833s</td>
<td class="success">100%</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,103 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - Package com.unicorn.lifesub.member.test.unit.domain</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>Package com.unicorn.lifesub.member.test.unit.domain</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt; com.unicorn.lifesub.member.test.unit.domain</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">4</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.008s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Classes</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Classes</h2>
<table>
<thread>
<tr>
<th>Class</th>
<th>Tests</th>
<th>Failures</th>
<th>Ignored</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thread>
<tr>
<td class="success">
<a href="../classes/com.unicorn.lifesub.member.test.unit.domain.MemberUnitTest.html">MemberUnitTest</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.008s</td>
<td class="success">100%</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,103 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - Package com.unicorn.lifesub.member.test.unit.service</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>Package com.unicorn.lifesub.member.test.unit.service</h1>
<div class="breadcrumbs">
<a href="../index.html">all</a> &gt; com.unicorn.lifesub.member.test.unit.service</div>
<div id="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox" id="tests">
<div class="counter">4</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox" id="failures">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox" id="ignored">
<div class="counter">0</div>
<p>ignored</p>
</div>
</td>
<td>
<div class="infoBox" id="duration">
<div class="counter">0.055s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success" id="successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<div id="tabs">
<ul class="tabLinks">
<li>
<a href="#tab0">Classes</a>
</li>
</ul>
<div id="tab0" class="tab">
<h2>Classes</h2>
<table>
<thread>
<tr>
<th>Class</th>
<th>Tests</th>
<th>Failures</th>
<th>Ignored</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thread>
<tr>
<td class="success">
<a href="../classes/com.unicorn.lifesub.member.test.unit.service.MemberServiceImplUnitTest.html">MemberServiceImplUnitTest</a>
</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0.055s</td>
<td class="success">100%</td>
</tr>
</table>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="http://www.gradle.org">Gradle 8.4</a> at 2025. 2. 14. 오후 11:46:27</p>
</div>
</div>
</body>
</html>

View File

@ -1,35 +0,0 @@
# src/test/resources/application-e2e-test.yml
spring:
application:
name: member-service-test
jpa:
hibernate:
ddl-auto: create-drop
show-sql: true
properties:
hibernate:
format_sql: true
dialect: org.hibernate.dialect.PostgreSQLDialect
# JWT 설정
jwt:
secret-key: testSecretKeyForE2ETestingPurposesOnlyDoNotUseInProduction
access-token-validity: 3600000 # 1시간
refresh-token-validity: 86400000 # 24시간
allowed-origins: http://localhost:3000
# 로깅 설정
logging:
level:
com.unicorn: DEBUG
org.hibernate.SQL: DEBUG
org.hibernate.type.descriptor.sql.BasicBinder: TRACE
# 테스트용 사용자 설정
test:
user:
id: testuser
password: Test1234!
name: Test User

View File

@ -1,36 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.unicorn.lifesub.member.test.integration.controller.MemberControllerIntegrationTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2025-02-14T14:45:42" hostname="ihaegyeong-ui-MacBookAir.local" time="0.804">
<properties/>
<testcase name="로그아웃 성공 테스트" classname="com.unicorn.lifesub.member.test.integration.controller.MemberControllerIntegrationTest" time="0.551"/>
<testcase name="로그인 실패 테스트 - 잘못된 요청 형식" classname="com.unicorn.lifesub.member.test.integration.controller.MemberControllerIntegrationTest" time="0.11"/>
<testcase name="로그아웃 실패 테스트 - 잘못된 요청 형식" classname="com.unicorn.lifesub.member.test.integration.controller.MemberControllerIntegrationTest" time="0.06"/>
<testcase name="로그인 성공 테스트" classname="com.unicorn.lifesub.member.test.integration.controller.MemberControllerIntegrationTest" time="0.06"/>
<system-out><![CDATA[
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.4.0)
2025-02-14T23:45:39.822+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.c.MemberControllerIntegrationTest : Starting MemberControllerIntegrationTest using Java 18.0.2 with PID 99945 (started by ondal in /Users/ondal/home/workspace/lifesub/member)
2025-02-14T23:45:39.825+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] .m.t.i.c.MemberControllerIntegrationTest : Running with Spring Boot v3.4.0, Spring v6.2.0
2025-02-14T23:45:39.825+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.c.MemberControllerIntegrationTest : The following 1 profile is active: "integration-test"
2025-02-14T23:45:40.778+09:00 WARN 99945 --- [member-service-test] [ Test worker] .s.s.UserDetailsServiceAutoConfiguration :
Using generated security password: 6aa45464-02a7-4558-8a92-e66c40f4756b
This generated password is for development use only. Your security configuration must be updated before running your application in production.
2025-02-14T23:45:40.793+09:00 INFO 99945 --- [member-service-test] [ Test worker] r$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager
2025-02-14T23:45:42.817+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.s.b.t.m.w.SpringBootMockServletContext : Initializing Spring TestDispatcherServlet ''
2025-02-14T23:45:42.821+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.s.t.web.servlet.TestDispatcherServlet : Initializing Servlet ''
2025-02-14T23:45:42.830+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.s.t.web.servlet.TestDispatcherServlet : Completed initialization in 5 ms
2025-02-14T23:45:42.954+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.c.MemberControllerIntegrationTest : Started MemberControllerIntegrationTest in 3.343 seconds (process running for 65.774)
2025-02-14T23:45:43.628+09:00 WARN 99945 --- [member-service-test] [ Test worker] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public org.springframework.http.ResponseEntity<com.unicorn.lifesub.common.dto.ApiResponse<com.unicorn.lifesub.common.dto.JwtTokenDTO>> com.unicorn.lifesub.member.controller.MemberController.login(com.unicorn.lifesub.member.dto.LoginRequest) with 2 errors: [Field error in object 'loginRequest' on field 'password': rejected value [null]; codes [NotBlank.loginRequest.password,NotBlank.password,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [loginRequest.password,password]; arguments []; default message [password]]; default message [비밀번호는 필수입니다.]] [Field error in object 'loginRequest' on field 'userId': rejected value [null]; codes [NotBlank.loginRequest.userId,NotBlank.userId,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [loginRequest.userId,userId]; arguments []; default message [userId]]; default message [사용자 ID는 필수입니다.]] ]
2025-02-14T23:45:43.705+09:00 WARN 99945 --- [member-service-test] [ Test worker] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public org.springframework.http.ResponseEntity<com.unicorn.lifesub.common.dto.ApiResponse<com.unicorn.lifesub.member.dto.LogoutResponse>> com.unicorn.lifesub.member.controller.MemberController.logout(com.unicorn.lifesub.member.dto.LogoutRequest): [Field error in object 'logoutRequest' on field 'userId': rejected value [null]; codes [NotBlank.logoutRequest.userId,NotBlank.userId,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [logoutRequest.userId,userId]; arguments []; default message [userId]]; default message [사용자 ID는 필수입니다.]] ]
]]></system-out>
<system-err><![CDATA[]]></system-err>
</testsuite>

View File

@ -1,411 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2025-02-14T14:45:51" hostname="ihaegyeong-ui-MacBookAir.local" time="0.67">
<properties/>
<testcase name="회원 저장 및 조회 테스트" classname="com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest" time="0.341"/>
<testcase name="회원 정보 업데이트 테스트" classname="com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest" time="0.178"/>
<testcase name="존재하지 않는 회원 조회 테스트" classname="com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest" time="0.025"/>
<testcase name="회원 삭제 테스트" classname="com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest" time="0.081"/>
<system-out><![CDATA[2025-02-14T23:45:43.930+09:00 INFO 99945 --- [member-service-test] [ Test worker] t.c.s.AnnotationConfigContextLoaderUtils : Could not detect default configuration classes for test class [com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest]: MemberRepositoryIntegrationTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
2025-02-14T23:45:44.293+09:00 INFO 99945 --- [member-service-test] [ Test worker] .b.t.c.SpringBootTestContextBootstrapper : Found @SpringBootConfiguration com.unicorn.lifesub.member.MemberApplication for test class com.unicorn.lifesub.member.test.integration.repository.MemberRepositoryIntegrationTest
2025-02-14T23:45:44.315+09:00 INFO 99945 --- [member-service-test] [ Test worker] tc.postgres:13.2-alpine : Creating container for image: postgres:13.2-alpine
2025-02-14T23:45:44.451+09:00 INFO 99945 --- [member-service-test] [ Test worker] tc.postgres:13.2-alpine : Container postgres:13.2-alpine is starting: 6b79d075221360d24585825bd669f3f2099a36a70cc40b3b166e8fb6762cc3e9
2025-02-14T23:45:46.654+09:00 INFO 99945 --- [member-service-test] [ Test worker] tc.postgres:13.2-alpine : Container postgres:13.2-alpine started in PT2.338311S
2025-02-14T23:45:46.673+09:00 INFO 99945 --- [member-service-test] [ Test worker] tc.postgres:13.2-alpine : Container is started (JDBC URL: jdbc:postgresql://localhost:58666/member?loggerLevel=OFF)
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.4.0)
2025-02-14T23:45:47.048+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.r.MemberRepositoryIntegrationTest : Starting MemberRepositoryIntegrationTest using Java 18.0.2 with PID 99945 (started by ondal in /Users/ondal/home/workspace/lifesub/member)
2025-02-14T23:45:47.050+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] .m.t.i.r.MemberRepositoryIntegrationTest : Running with Spring Boot v3.4.0, Spring v6.2.0
2025-02-14T23:45:47.058+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.r.MemberRepositoryIntegrationTest : The following 1 profile is active: "integration-test"
2025-02-14T23:45:48.793+09:00 INFO 99945 --- [member-service-test] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2025-02-14T23:45:48.950+09:00 INFO 99945 --- [member-service-test] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 107 ms. Found 1 JPA repository interface.
2025-02-14T23:45:49.932+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2025-02-14T23:45:49.958+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled
2025-02-14T23:45:50.150+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer
2025-02-14T23:45:50.161+09:00 INFO 99945 --- [member-service-test] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Starting...
2025-02-14T23:45:50.266+09:00 INFO 99945 --- [member-service-test] [ Test worker] com.zaxxer.hikari.pool.HikariPool : HikariPool-2 - Added connection org.postgresql.jdbc.PgConnection@54210bb8
2025-02-14T23:45:50.272+09:00 INFO 99945 --- [member-service-test] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Start completed.
2025-02-14T23:45:50.290+09:00 WARN 99945 --- [member-service-test] [ Test worker] org.hibernate.orm.deprecation : HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
2025-02-14T23:45:50.300+09:00 INFO 99945 --- [member-service-test] [ Test worker] org.hibernate.orm.connections.pooling : HHH10001005: Database info:
Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-2)']
Database driver: undefined/unknown
Database version: 13.2
Autocommit mode: undefined/unknown
Isolation level: undefined/unknown
Minimum pool size: undefined/unknown
Maximum pool size: undefined/unknown
2025-02-14T23:45:50.938+09:00 INFO 99945 --- [member-service-test] [ Test worker] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2025-02-14T23:45:51.157+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
create table member_roles (
user_id varchar(255) not null,
role varchar(255)
)
Hibernate:
create table member_roles (
user_id varchar(255) not null,
role varchar(255)
)
2025-02-14T23:45:51.193+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
create table members (
user_id varchar(255) not null,
created_at timestamp(6),
updated_at timestamp(6),
password varchar(255) not null,
user_name varchar(255) not null,
primary key (user_id)
)
Hibernate:
create table members (
user_id varchar(255) not null,
created_at timestamp(6),
updated_at timestamp(6),
password varchar(255) not null,
user_name varchar(255) not null,
primary key (user_id)
)
2025-02-14T23:45:51.224+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
alter table if exists member_roles
add constraint FKkrahbaoj05n0hyabejnnrmft
foreign key (user_id)
references members
Hibernate:
alter table if exists member_roles
add constraint FKkrahbaoj05n0hyabejnnrmft
foreign key (user_id)
references members
2025-02-14T23:45:51.242+09:00 INFO 99945 --- [member-service-test] [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2025-02-14T23:45:51.723+09:00 INFO 99945 --- [member-service-test] [ Test worker] .m.t.i.r.MemberRepositoryIntegrationTest : Started MemberRepositoryIntegrationTest in 5.01 seconds (process running for 74.544)
2025-02-14T23:45:51.942+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
2025-02-14T23:45:51.963+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
member_roles
(user_id, role)
values
(?, ?)
Hibernate:
insert
into
member_roles
(user_id, role)
values
(?, ?)
2025-02-14T23:45:52.003+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
2025-02-14T23:45:52.033+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
Hibernate:
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
2025-02-14T23:45:52.180+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
2025-02-14T23:45:52.188+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
member_roles
(user_id, role)
values
(?, ?)
Hibernate:
insert
into
member_roles
(user_id, role)
values
(?, ?)
2025-02-14T23:45:52.195+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
2025-02-14T23:45:52.203+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
Hibernate:
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
2025-02-14T23:45:52.284+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
update
members
set
created_at=?,
password=?,
updated_at=?,
user_name=?
where
user_id=?
Hibernate:
update
members
set
created_at=?,
password=?,
updated_at=?,
user_name=?
where
user_id=?
2025-02-14T23:45:52.312+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
2025-02-14T23:45:52.318+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
Hibernate:
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
2025-02-14T23:45:52.367+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
2025-02-14T23:45:52.394+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
members
(created_at, password, updated_at, user_name, user_id)
values
(?, ?, ?, ?, ?)
2025-02-14T23:45:52.400+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
insert
into
member_roles
(user_id, role)
values
(?, ?)
Hibernate:
insert
into
member_roles
(user_id, role)
values
(?, ?)
2025-02-14T23:45:52.404+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
2025-02-14T23:45:52.408+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
Hibernate:
select
r1_0.user_id,
r1_0.role
from
member_roles r1_0
where
r1_0.user_id=?
2025-02-14T23:45:52.437+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
delete
from
member_roles
where
user_id=?
Hibernate:
delete
from
member_roles
where
user_id=?
2025-02-14T23:45:52.444+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
delete
from
members
where
user_id=?
Hibernate:
delete
from
members
where
user_id=?
2025-02-14T23:45:52.453+09:00 DEBUG 99945 --- [member-service-test] [ Test worker] org.hibernate.SQL :
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
Hibernate:
select
me1_0.user_id,
me1_0.created_at,
me1_0.password,
me1_0.updated_at,
me1_0.user_name
from
members me1_0
where
me1_0.user_id=?
]]></system-out>
<system-err><![CDATA[]]></system-err>
</testsuite>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.unicorn.lifesub.member.test.integration.service.MemberServiceIntegrationTest" tests="2" skipped="0" failures="0" errors="0" timestamp="2025-02-14T14:45:53" hostname="ihaegyeong-ui-MacBookAir.local" time="1.771">
<properties/>
<testcase name="로그아웃 처리 성공" classname="com.unicorn.lifesub.member.test.integration.service.MemberServiceIntegrationTest" time="1.518"/>
<testcase name="유효한 자격증명으로 로그인 성공" classname="com.unicorn.lifesub.member.test.integration.service.MemberServiceIntegrationTest" time="0.211"/>
<system-out><![CDATA[]]></system-out>
<system-err><![CDATA[]]></system-err>
</testsuite>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.unicorn.lifesub.member.test.unit.config.jwt.CustomUserDetailsServiceUnitTest" tests="3" skipped="0" failures="0" errors="0" timestamp="2025-02-14T14:45:54" hostname="ihaegyeong-ui-MacBookAir.local" time="0.121">
<properties/>
<testcase name="givenNonExistentUserId_whenLoadUser_thenThrowException" classname="com.unicorn.lifesub.member.test.unit.config.jwt.CustomUserDetailsServiceUnitTest" time="0.064"/>
<testcase name="givenUserWithRoles_whenLoadUser_thenMapAuthoritiesCorrectly" classname="com.unicorn.lifesub.member.test.unit.config.jwt.CustomUserDetailsServiceUnitTest" time="0.041"/>
<testcase name="givenExistingUserId_whenLoadUser_thenReturnUserDetails" classname="com.unicorn.lifesub.member.test.unit.config.jwt.CustomUserDetailsServiceUnitTest" time="0.007"/>
<system-out><![CDATA[]]></system-out>
<system-err><![CDATA[]]></system-err>
</testsuite>

View File

@ -1,108 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest" tests="5" skipped="0" failures="0" errors="0" timestamp="2025-02-14T14:45:55" hostname="ihaegyeong-ui-MacBookAir.local" time="0.846">
<properties/>
<testcase name="givenRequest_whenResolveToken_thenSuccess" classname="com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest" time="0.673"/>
<testcase name="givenInvalidToken_whenValidate_thenThrowException" classname="com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest" time="0.119"/>
<testcase name="givenValidMember_whenCreateToken_thenSuccess" classname="com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest" time="0.028"/>
<testcase name="givenValidToken_whenGetAuthentication_thenSuccess" classname="com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest" time="0.007"/>
<testcase name="givenToken_whenValidate_thenSuccess" classname="com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest" time="0.006"/>
<system-out><![CDATA[2025-02-14T23:45:55.728+09:00 INFO 99945 --- [member-service-test] [ Test worker] c.u.l.m.config.jwt.JwtTokenProvider : ******** validateToken: invalid-token
2025-02-14T23:45:55.759+09:00 ERROR 99945 --- [member-service-test] [ Test worker] c.u.l.m.config.jwt.JwtTokenProvider : Undefined Error: The token was expected to have 3 parts, but got 0.
com.auth0.jwt.exceptions.JWTDecodeException: The token was expected to have 3 parts, but got 0.
at com.auth0.jwt.TokenUtils.wrongNumberOfParts(TokenUtils.java:45) ~[java-jwt-4.4.0.jar:4.4.0]
at com.auth0.jwt.TokenUtils.splitToken(TokenUtils.java:23) ~[java-jwt-4.4.0.jar:4.4.0]
at com.auth0.jwt.JWTDecoder.<init>(JWTDecoder.java:37) ~[java-jwt-4.4.0.jar:4.4.0]
at com.auth0.jwt.JWTVerifier.verify(JWTVerifier.java:444) ~[java-jwt-4.4.0.jar:4.4.0]
at com.unicorn.lifesub.member.config.jwt.JwtTokenProvider.validateToken(JwtTokenProvider.java:112) ~[main/:na]
at com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest.lambda$givenInvalidToken_whenValidate_thenThrowException$0(JwtTokenProviderUnitTest.java:126) ~[test/:na]
at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:53) ~[junit-jupiter-api-5.11.3.jar:5.11.3]
at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:35) ~[junit-jupiter-api-5.11.3.jar:5.11.3]
at org.junit.jupiter.api.Assertions.assertThrows(Assertions.java:3128) ~[junit-jupiter-api-5.11.3.jar:5.11.3]
at com.unicorn.lifesub.member.test.unit.config.jwt.JwtTokenProviderUnitTest.givenInvalidToken_whenValidate_thenThrowException(JwtTokenProviderUnitTest.java:126) ~[test/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:767) ~[junit-platform-commons-1.11.3.jar:1.11.3]
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(TestMethodTestDescriptor.java:217) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) ~[junit-jupiter-engine-5.11.3.jar:5.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:156) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) ~[junit-platform-engine-1.11.3.jar:1.11.3]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) ~[junit-platform-launcher-1.8.2.jar:1.8.2]
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119) ~[na:na]
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94) ~[na:na]
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89) ~[na:na]
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) ~[na:na]
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) ~[na:na]
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) ~[na:na]
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) ~[na:na]
at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source) ~[na:na]
at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193) ~[na:na]
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) ~[na:na]
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) ~[na:na]
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) ~[na:na]
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) ~[na:na]
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) ~[na:na]
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) ~[na:na]
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) ~[gradle-worker.jar:na]
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) ~[gradle-worker.jar:na]
2025-02-14T23:45:55.832+09:00 INFO 99945 --- [member-service-test] [ Test worker] c.u.l.m.config.jwt.JwtTokenProvider : ******** validateToken: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0VXNlciIsInVzZXJJZCI6InRlc3RVc2VyIiwidXNlck5hbWUiOiJUZXN0IFVzZXIiLCJhdXRoIjpbIlJPTEVfVVNFUiJdLCJpYXQiOjE3Mzk1NDQzNTUsImV4cCI6MTc0MzE0NDM1NX0.mdBFO7WH3XMHafHC6WpEQ-j8D_uNHq8HnxubMgpfIhq6rkIOdOMO0w1iN0gskTyJOgxGAxe8P5LwynLSUO8jEQ
2025-02-14T23:45:55.859+09:00 INFO 99945 --- [member-service-test] [ Test worker] c.u.l.m.config.jwt.JwtTokenProvider : ******** validateToken: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0VXNlciIsImF1dGgiOlsiUk9MRV9VU0VSIl19.s0nwJ9sbCd7YYRCIj2yGgbuNP3KgpZ5SssKSOoo_FDg8mCrxilGVMaiv2gPGq0q0hx_RC413cAeMM-Y4nurEIw
]]></system-out>
<system-err><![CDATA[]]></system-err>
</testsuite>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.unicorn.lifesub.member.test.unit.domain.MemberUnitTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2025-02-14T14:45:55" hostname="ihaegyeong-ui-MacBookAir.local" time="0.011">
<properties/>
<testcase name="givenMemberDomain_whenConvertToEntity_thenSuccess" classname="com.unicorn.lifesub.member.test.unit.domain.MemberUnitTest" time="0.003"/>
<testcase name="givenMemberEntity_whenConvertToDomain_thenSuccess" classname="com.unicorn.lifesub.member.test.unit.domain.MemberUnitTest" time="0.0"/>
<testcase name="givenMemberInfo_whenBuildMember_thenSuccess" classname="com.unicorn.lifesub.member.test.unit.domain.MemberUnitTest" time="0.002"/>
<testcase name="givenMultipleRoles_whenBuildMember_thenSuccess" classname="com.unicorn.lifesub.member.test.unit.domain.MemberUnitTest" time="0.003"/>
<system-out><![CDATA[]]></system-out>
<system-err><![CDATA[]]></system-err>
</testsuite>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.unicorn.lifesub.member.test.unit.service.MemberServiceImplUnitTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2025-02-14T14:45:55" hostname="ihaegyeong-ui-MacBookAir.local" time="0.059">
<properties/>
<testcase name="givenValidCredentials_whenLogin_thenSuccess" classname="com.unicorn.lifesub.member.test.unit.service.MemberServiceImplUnitTest" time="0.02"/>
<testcase name="givenLogoutRequest_whenLogout_thenSuccess" classname="com.unicorn.lifesub.member.test.unit.service.MemberServiceImplUnitTest" time="0.01"/>
<testcase name="givenInvalidPassword_whenLogin_thenThrowException" classname="com.unicorn.lifesub.member.test.unit.service.MemberServiceImplUnitTest" time="0.017"/>
<testcase name="givenNonExistentUser_whenLogin_thenThrowException" classname="com.unicorn.lifesub.member.test.unit.service.MemberServiceImplUnitTest" time="0.008"/>
<system-out><![CDATA[]]></system-out>
<system-err><![CDATA[]]></system-err>
</testsuite>

View File

@ -6,7 +6,7 @@ Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
Build-Jdk-Spec: 18
Build-Jdk-Spec: 17
Implementation-Title: member
Implementation-Version: 1.0.0

View File

@ -3,6 +3,7 @@ package com.unicorn.lifesub.member.config;
import com.unicorn.lifesub.member.config.jwt.CustomUserDetailsService;
import com.unicorn.lifesub.member.config.jwt.JwtAuthenticationFilter;
import com.unicorn.lifesub.member.config.jwt.JwtTokenProvider;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -22,8 +23,8 @@ import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import java.util.Arrays;
import java.util.List;
@Slf4j
@Configuration //Config 레이어의 클래스임을 나타내며 Bean클래스로 등록되어 실행시 자동으로 객체가 생성됨
@EnableWebSecurity //인증 처리 라이브러리인 Spring Security를 활성화함
@SuppressWarnings("unused") //unused 경고를 표시하지 않게 하는 어노테이션
@ -78,13 +79,38 @@ public class SecurityConfig {
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList(allowedOrigins.split(",")));
configuration.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "OPTIONS"));
configuration.setAllowedHeaders(List.of("*"));
// 허용된 origin 로깅
log.info("Allowed origins: {}", allowedOrigins);
String[] origins = allowedOrigins.split(",");
for (String origin : origins) {
log.info("Adding allowed origin: {}", origin.trim());
configuration.addAllowedOrigin(origin.trim());
}
// HTTP 메서드 설정
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
// 헤더 설정
configuration.setAllowedHeaders(Arrays.asList(
"Authorization",
"Content-Type",
"X-Requested-With",
"Accept",
"Origin",
"Access-Control-Request-Method",
"Access-Control-Request-Headers"
));
// 인증 정보 허용
configuration.setAllowCredentials(true);
// preflight 요청의 캐시 시간 설정 (1시간)
configuration.setMaxAge(3600L);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,12 @@
Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.launch.JarLauncher
Start-Class: com.unicorn.lifesub.mysub.infra.MySubApplication
Spring-Boot-Version: 3.4.0
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
Build-Jdk-Spec: 17
Implementation-Title: mysub-infra
Implementation-Version: 1.0.0

View File

@ -0,0 +1,2 @@
Manifest-Version: 1.0

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,12 @@
Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.launch.JarLauncher
Start-Class: com.unicorn.lifesub.recommend.RecommendApplication
Spring-Boot-Version: 3.4.0
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
Build-Jdk-Spec: 17
Implementation-Title: recommend
Implementation-Version: 1.0.0

Some files were not shown because too many files have changed in this diff Show More