init: 클린 기반 auth 서버 설계

This commit is contained in:
DongHyeonka
2026-07-24 14:30:18 +09:00
parent 471db0203d
commit 8a1ac1e769
3642 changed files with 275893 additions and 1 deletions
@@ -0,0 +1,116 @@
<!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 - class_level_validation_failure_is_reported_under_global_bucket()</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">
<div class="breadcrumbs">
<a class="breadcrumb" href="../index.html">all</a> &gt;
<a class="breadcrumb" href="index.html">com.project.auth.ValidationExceptionHandlerIntegrationTest</a> &gt;
<span class="breadcrumb">class_level_validation_failure_is_reported_under_global_bucket()</span>
</div>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="successGroup" href="#">Gradle Test Run :bootstrap:test</a>
</li>
</ul>
<div class="tab">
<h2>Gradle Test Run :bootstrap:test</h2>
<h1>class_level_validation_failure_is_reported_under_global_bucket()</h1>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="" href="#">summary</a>
</li>
<li>
<a class="" href="#">standard output</a>
</li>
</ul>
<div class="tab">
<h2>summary</h2>
<div>
<div class="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox">
<div class="counter">1</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>skipped</p>
</div>
</td>
<td>
<div class="infoBox duration">
<div class="counter">0.037s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="tab">
<h2>standard output</h2>
<span class="code">
<pre id="root-0-test-stdout-class_level_validation_failure_is_reported_under_global_bucket()">2026-05-12T15:59:46.115+09:00 INFO 3742337 --- [ Test worker] [traceId=] o.s.b.t.m.w.SpringBootMockServletContext : Initializing Spring TestDispatcherServlet ''
2026-05-12T15:59:46.115+09:00 INFO 3742337 --- [ Test worker] [traceId=] o.s.t.web.servlet.TestDispatcherServlet : Initializing Servlet ''
2026-05-12T15:59:46.116+09:00 INFO 3742337 --- [ Test worker] [traceId=] o.s.t.web.servlet.TestDispatcherServlet : Completed initialization in 1 ms
2026-05-12T15:59:46.120+09:00 DEBUG 3742337 --- [ Test worker] [traceId=3a984c61c5768cf40e72193588812db9] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.project.auth.ValidationExceptionHandlerIntegrationTest$ValidationTestController#signup(SignupRequest)
2026-05-12T15:59:46.124+09:00 DEBUG 3742337 --- [ Test worker] [traceId=3a984c61c5768cf40e72193588812db9] m.m.a.RequestResponseBodyMethodProcessor : Read &quot;application/json&quot; to [SignupRequest[password=abc, passwordConfirm=different]]
2026-05-12T15:59:46.135+09:00 DEBUG 3742337 --- [ Test worker] [traceId=3a984c61c5768cf40e72193588812db9] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler com.project.auth.presentation.support.exception.ValidationExceptionHandler#handleValidationException(MethodArgumentNotValidException)
2026-05-12T15:59:46.136+09:00 WARN 3742337 --- [ Test worker] [traceId=3a984c61c5768cf40e72193588812db9] c.p.a.p.s.e.ValidationExceptionHandler : Validation failed: {__global__=[passwords must match]}
2026-05-12T15:59:46.138+09:00 DEBUG 3742337 --- [ Test worker] [traceId=3a984c61c5768cf40e72193588812db9] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/yaml]
2026-05-12T15:59:46.138+09:00 DEBUG 3742337 --- [ Test worker] [traceId=3a984c61c5768cf40e72193588812db9] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Writing [ApiResult[success=false, code=PRES-001, message=요청 값이 올바르지 않습니다., data=null, errors={__global__=[pas (truncated)...]
2026-05-12T15:59:46.142+09:00 DEBUG 3742337 --- [ Test worker] [traceId=3a984c61c5768cf40e72193588812db9] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in java.lang.String com.project.auth.ValidationExceptionHandlerIntegrationTest$ValidationTestController.signup(com.project.auth.ValidationExceptionHandlerIntegrationTest$SignupRequest): [Error in object 'signupRequest': codes [PasswordsMatch.signupRequest,PasswordsMatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [signupRequest]; arguments []; default message []]; default message [passwords must match]] ]
</pre>
<button class="clipboard-copy-btn" aria-label="Copy to clipboard" data-copy-element-id="root-0-test-stdout-class_level_validation_failure_is_reported_under_global_bucket()">Copy</button>
</span>
</div>
</div>
</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="https://www.gradle.org">Gradle 9.3.1</a> at May 12, 2026, 3:59:51PM</p>
</div>
</div>
</body>
</html>
@@ -0,0 +1,115 @@
<!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 - constraint_violation_uses_json_pointer_for_property_path()</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">
<div class="breadcrumbs">
<a class="breadcrumb" href="../index.html">all</a> &gt;
<a class="breadcrumb" href="index.html">com.project.auth.ValidationExceptionHandlerIntegrationTest</a> &gt;
<span class="breadcrumb">constraint_violation_uses_json_pointer_for_property_path()</span>
</div>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="successGroup" href="#">Gradle Test Run :bootstrap:test</a>
</li>
</ul>
<div class="tab">
<h2>Gradle Test Run :bootstrap:test</h2>
<h1>constraint_violation_uses_json_pointer_for_property_path()</h1>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="" href="#">summary</a>
</li>
<li>
<a class="" href="#">standard output</a>
</li>
</ul>
<div class="tab">
<h2>summary</h2>
<div>
<div class="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox">
<div class="counter">1</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>skipped</p>
</div>
</td>
<td>
<div class="infoBox duration">
<div class="counter">0.022s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="tab">
<h2>standard output</h2>
<span class="code">
<pre id="root-0-test-stdout-constraint_violation_uses_json_pointer_for_property_path()">2026-05-12T15:59:46.151+09:00 INFO 3742337 --- [ Test worker] [traceId=] o.s.b.t.m.w.SpringBootMockServletContext : Initializing Spring TestDispatcherServlet ''
2026-05-12T15:59:46.151+09:00 INFO 3742337 --- [ Test worker] [traceId=] o.s.t.web.servlet.TestDispatcherServlet : Initializing Servlet ''
2026-05-12T15:59:46.153+09:00 INFO 3742337 --- [ Test worker] [traceId=] o.s.t.web.servlet.TestDispatcherServlet : Completed initialization in 2 ms
2026-05-12T15:59:46.155+09:00 DEBUG 3742337 --- [ Test worker] [traceId=1c3315bffbb2eb84202975305487dab8] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.project.auth.ValidationExceptionHandlerIntegrationTest$ValidationTestController#search(String)
2026-05-12T15:59:46.166+09:00 DEBUG 3742337 --- [ Test worker] [traceId=1c3315bffbb2eb84202975305487dab8] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler com.project.auth.presentation.support.exception.ValidationExceptionHandler#handleConstraintViolationException(ConstraintViolationException)
2026-05-12T15:59:46.167+09:00 WARN 3742337 --- [ Test worker] [traceId=1c3315bffbb2eb84202975305487dab8] c.p.a.p.s.e.ValidationExceptionHandler : Constraint violation: {/search/q=[must be at least 2 chars]}
2026-05-12T15:59:46.167+09:00 DEBUG 3742337 --- [ Test worker] [traceId=1c3315bffbb2eb84202975305487dab8] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/yaml]
2026-05-12T15:59:46.167+09:00 DEBUG 3742337 --- [ Test worker] [traceId=1c3315bffbb2eb84202975305487dab8] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Writing [ApiResult[success=false, code=PRES-006, message=요청 값이 제약 조건을 위반했습니다., data=null, errors={/search/q=[ (truncated)...]
2026-05-12T15:59:46.168+09:00 DEBUG 3742337 --- [ Test worker] [traceId=1c3315bffbb2eb84202975305487dab8] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [jakarta.validation.ConstraintViolationException: search.q: must be at least 2 chars]
</pre>
<button class="clipboard-copy-btn" aria-label="Copy to clipboard" data-copy-element-id="root-0-test-stdout-constraint_violation_uses_json_pointer_for_property_path()">Copy</button>
</span>
</div>
</div>
</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="https://www.gradle.org">Gradle 9.3.1</a> at May 12, 2026, 3:59:51PM</p>
</div>
</div>
</body>
</html>
@@ -0,0 +1,116 @@
<!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 - field_level_and_class_level_violations_coexist_in_response()</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">
<div class="breadcrumbs">
<a class="breadcrumb" href="../index.html">all</a> &gt;
<a class="breadcrumb" href="index.html">com.project.auth.ValidationExceptionHandlerIntegrationTest</a> &gt;
<span class="breadcrumb">field_level_and_class_level_violations_coexist_in_response()</span>
</div>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="successGroup" href="#">Gradle Test Run :bootstrap:test</a>
</li>
</ul>
<div class="tab">
<h2>Gradle Test Run :bootstrap:test</h2>
<h1>field_level_and_class_level_violations_coexist_in_response()</h1>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="" href="#">summary</a>
</li>
<li>
<a class="" href="#">standard output</a>
</li>
</ul>
<div class="tab">
<h2>summary</h2>
<div>
<div class="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox">
<div class="counter">1</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>skipped</p>
</div>
</td>
<td>
<div class="infoBox duration">
<div class="counter">0.012s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="tab">
<h2>standard output</h2>
<span class="code">
<pre id="root-0-test-stdout-field_level_and_class_level_violations_coexist_in_response()">2026-05-12T15:59:46.175+09:00 INFO 3742337 --- [ Test worker] [traceId=] o.s.b.t.m.w.SpringBootMockServletContext : Initializing Spring TestDispatcherServlet ''
2026-05-12T15:59:46.175+09:00 INFO 3742337 --- [ Test worker] [traceId=] o.s.t.web.servlet.TestDispatcherServlet : Initializing Servlet ''
2026-05-12T15:59:46.176+09:00 INFO 3742337 --- [ Test worker] [traceId=] o.s.t.web.servlet.TestDispatcherServlet : Completed initialization in 1 ms
2026-05-12T15:59:46.178+09:00 DEBUG 3742337 --- [ Test worker] [traceId=40737d1324e5f0819295bae39d8673e8] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.project.auth.ValidationExceptionHandlerIntegrationTest$ValidationTestController#signup(SignupRequest)
2026-05-12T15:59:46.179+09:00 DEBUG 3742337 --- [ Test worker] [traceId=40737d1324e5f0819295bae39d8673e8] m.m.a.RequestResponseBodyMethodProcessor : Read &quot;application/json&quot; to [SignupRequest[password=, passwordConfirm=different]]
2026-05-12T15:59:46.180+09:00 DEBUG 3742337 --- [ Test worker] [traceId=40737d1324e5f0819295bae39d8673e8] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler com.project.auth.presentation.support.exception.ValidationExceptionHandler#handleValidationException(MethodArgumentNotValidException)
2026-05-12T15:59:46.180+09:00 WARN 3742337 --- [ Test worker] [traceId=40737d1324e5f0819295bae39d8673e8] c.p.a.p.s.e.ValidationExceptionHandler : Validation failed: {/password=[password is required], __global__=[passwords must match]}
2026-05-12T15:59:46.181+09:00 DEBUG 3742337 --- [ Test worker] [traceId=40737d1324e5f0819295bae39d8673e8] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/yaml]
2026-05-12T15:59:46.181+09:00 DEBUG 3742337 --- [ Test worker] [traceId=40737d1324e5f0819295bae39d8673e8] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Writing [ApiResult[success=false, code=PRES-001, message=요청 값이 올바르지 않습니다., data=null, errors={/password=[pass (truncated)...]
2026-05-12T15:59:46.182+09:00 DEBUG 3742337 --- [ Test worker] [traceId=40737d1324e5f0819295bae39d8673e8] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in java.lang.String com.project.auth.ValidationExceptionHandlerIntegrationTest$ValidationTestController.signup(com.project.auth.ValidationExceptionHandlerIntegrationTest$SignupRequest) with 2 errors: [Field error in object 'signupRequest' on field 'password': rejected value []; codes [NotBlank.signupRequest.password,NotBlank.password,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [signupRequest.password,password]; arguments []; default message [password]]; default message [password is required]] [Error in object 'signupRequest': codes [PasswordsMatch.signupRequest,PasswordsMatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [signupRequest]; arguments []; default message []]; default message [passwords must match]] ]
</pre>
<button class="clipboard-copy-btn" aria-label="Copy to clipboard" data-copy-element-id="root-0-test-stdout-field_level_and_class_level_violations_coexist_in_response()">Copy</button>
</span>
</div>
</div>
</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="https://www.gradle.org">Gradle 9.3.1</a> at May 12, 2026, 3:59:51PM</p>
</div>
</div>
</body>
</html>