diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 7049f9ac..00000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,74 +0,0 @@
-pipeline{
- agent any
- environment {
- SCRIPT_PATH = '/var/jenkins_home/custom/kurum'
- }
- tools {
- gradle 'kurum'
- }
- stages{
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('Prepare'){
- steps {
- sh 'gradle clean'
- }
- }
- stage('Replace Prod Properties') {
- steps {
- withCredentials([
- file(credentialsId: 'kurumprod', variable: 'kurumprod'),
- file(credentialsId: 'firebase', variable: 'firebase')
- ]) {
- script {
- sh 'cp $kurumprod ./src/main/resources/application-prod.yml'
- sh 'cp $firebase ./src/main/resources/kuroom-90fb5-firebase-adminsdk-fbsvc-f264f66c64.json'
- }
- }
- }
- }
- stage('Build') {
- steps {
- sh 'gradle build'
- }
- }
- stage('Deploy') {
- steps {
- sh '''
- cp ./docker/docker-compose.blue.yml ${SCRIPT_PATH}
- cp ./docker/docker-compose.green.yml ${SCRIPT_PATH}
- cp ./docker/Dockerfile ${SCRIPT_PATH}
- cp ./scripts/deploy.sh ${SCRIPT_PATH}
- cp ./build/libs/*.jar ${SCRIPT_PATH}
- chmod +x ${SCRIPT_PATH}/deploy.sh
- ${SCRIPT_PATH}/deploy.sh
- '''
- }
- }
- }
- post {
- success {
- withCredentials([string(credentialsId: 'Discord-Webhook', variable: 'DISCORD')]) {
- discordSend description: "✅ 성공: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})\n최근 커밋: '${env.GIT_COMMIT_MESSAGE}'",
- footer: "footer 표시",
- link: env.BUILD_URL,
- result: currentBuild.currentResult,
- title: "젠킨스 JOB",
- webhookURL: "$DISCORD"
- }
- }
- failure {
- withCredentials([string(credentialsId: 'Discord-Webhook', variable: 'DISCORD')]) {
- discordSend description: "❌ 실패: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})\n최근 커밋: '${env.GIT_COMMIT_MESSAGE}'",
- footer: "footer 표시",
- link: env.BUILD_URL,
- result: currentBuild.currentResult,
- title: "젠킨스 JOB",
- webhookURL: "$DISCORD"
- }
- }
- }
-}
diff --git a/README.md b/README.md
deleted file mode 100644
index 43389191..00000000
--- a/README.md
+++ /dev/null
@@ -1,61 +0,0 @@
-## 쿠룸 백엔드
-
-
-## 기술 스택
-
-### 백엔드
-
-
-
-
-### 인프라
-
-
-
-### CI/CD
-
-
-
-### 모니터링
-
-
-
-## 기술 의사 결정
-
-
-   Spring RestDocs
-
-### 도입 배경
-
----
-- Swagger (Springdoc OpenAPI)와 같은 UI 기반 문서화 도구도 있지만,
-테스트 코드 기반이 아니라서, 실제 API와 문서가 불일치할 가능성이 있음
-
-- Spring REST Docs는 테스트 코드 기반으로 API 문서를 자동 생성하기 때문에
-API 변경 사항이 있으면 테스트 코드 수정과 함께 문서도 자동 업데이트됨
-### 선택지
-
----
-
-| | Swagger | Spring REST Docs |
-|:---:|:-----------------------------------------------------------|:-----------------------------------------------------------------------------------------|
-| 장점 | 쉬운 세팅 및 사용, 실제 API 호출 기능 제공 | 실제 API의 동작을 테스트하면서 문서가 생성되므로, 코드와 문서 사이의 불일치가 발생할 가능성이 적음 |
-| 단점 | 코드에 주석을 기반으로 하므로, 실제 코드와 문서화 사이에 불일치 발생 가능 | 테스트 코드 작성에 투자해야 하는 시간과 노력이 필요 |
-
-### 최종 결정
-
----
-프로덕션 코드에 영향이 없고, 컨트롤러 테스트 코드를 의무화하는 Spring REST Docs와
API를 호출 할 수 있는 웹 기반 UI가 제공하는 Swagger UI 통합 사용
-
-
-## 멤버
-
-### 백엔드
-
-|
|
|
|
|
-|:-----------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------:|
-| [혜리](https://github.com/Hyeri1ee) | [현준](https://github.com/buzz0331) | [재윤](https://github.com/tintin010) | [민우](https://github.com/kmw10693) |
-
-
-
-
diff --git a/build.gradle b/build.gradle
index 4043f622..5d57a1a1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,6 +1,3 @@
-// 1. Import 추가
-//import org.hidetake.gradle.swagger.generator.GenerateSwaggerUI
-
buildscript {
ext {
restdocsApiSpecVersion = '0.18.3' // restdocsApiSpecVersion 버전 변수 설정
@@ -16,72 +13,10 @@ plugins {
id 'com.epages.restdocs-api-spec' version "${restdocsApiSpecVersion}"
//swagger generator 플러그인 추가
id 'org.hidetake.swagger.generator' version '2.18.2'
- id 'jacoco'
}
group = 'ku-rum'
version = '0.0.1-SNAPSHOT'
-
-jacoco {
- toolVersion = "0.8.8"
- reportsDirectory = layout.buildDirectory.dir('customJacocoReportDir')
-}
-
-test {
- finalizedBy jacocoTestReport // test 작업이 끝나고 jacocoTestReport를 실행
-}
-
-jacocoTestReport {
- dependsOn test // test 종속성 추가
-
- reports {
- xml.required = true
- csv.required = false
- html.required = true
- }
-
- def QDomainList = []
- for (qPattern in '**/QA'..'**/QZ') { // QClass 대응
- QDomainList.add(qPattern + '*')
- }
-
- afterEvaluate {
- classDirectories.setFrom(files(classDirectories.files.collect {
- fileTree(dir: it, exclude: [
- '**/dto/**',
- '**/event/**',
- '**/*InitData*',
- '**/*Application*',
- '**/exception/**',
- '**/service/alarm/**',
- '**/aop/**',
- '**/config/**',
- '**/MemberRole*',
- '**/oauth/**'
- ] + QDomainList)
- }))
- }
-
- finalizedBy 'jacocoTestCoverageVerification' // jacocoTestReport 태스크가 끝난 후 실행
-}
-
-jacocoTestCoverageVerification {
- violationRules {
-
- rule {
- enabled = true
- //코드 버커리지 체크 기준
- element = 'CLASS'
-
- limit {
- counter = 'CLASS'
- value = 'COVEREDRATIO'
- minimum = 0.0
- }
- }
- }
-}
-
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
@@ -127,8 +62,6 @@ dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
- implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
- annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
@@ -146,17 +79,6 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'
- implementation 'org.apache.httpcomponents.client5:httpclient5:5.2'
- implementation 'org.seleniumhq.selenium:selenium-java:4.12.1'
- implementation 'io.github.bonigarcia:webdrivermanager:5.7.0'
-
- // Selenium Java
- implementation 'org.seleniumhq.selenium:selenium-java:4.12.1'
-
- // WebDriver Manager
- implementation 'io.github.bonigarcia:webdrivermanager:5.7.0'
- implementation 'org.jsoup:jsoup:1.15.3'
-
// JWT
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.3'
@@ -165,9 +87,6 @@ dependencies {
// OAUTH
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
- // JSOUP
- implementation 'org.jsoup:jsoup:1.17.2'
-
// Spring REST Docs 의존성
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
// 8. openAPI3 추가
diff --git a/docs/README_EN.md b/docs/README_EN.md
deleted file mode 100644
index 2439cab9..00000000
--- a/docs/README_EN.md
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-# KU:Room
-
-
-[](README_KR.md)
-[](README_EN.md)
-
-University Life Guide **"KU:Room"** Backend Repository.
-
-
-- From the 2025 academic year, the department will be reorganized into an Open Major Program, making it easier to access university life information!
-- You can view **all university announcements** (academic, international, career, etc.) in one place!
-- You can check the **campus map** and find information about various facilities (K-Cube, K-Hub, convenience stores, student cafeterias, etc.).
-- **Community features** allow you to mark locations, post messages, and engage in discussions through comments.
-
-
-
-## Table of Contents
-
-- [Backend Members](#backend-members)
-- [Demo](#demo)
-- [Architecture](#architecture)
-- [Stack](#stack)
-- [Collaboration](#collaboration)
-- [License](#license)
-
-
-
-
-## Backend Members
-
-
-|
|
|
|
|
-|:-----------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------:|
-| [Hyeri](https://github.com/Hyeri1ee) | [Hyunjun](https://github.com/buzz0331) | [Jaeyoon](https://github.com/tintin010) | [Minu](https://github.com/kmw10693) |
-
-
-## Demo
-
-coming soon~
-
-## Architecture
-
-coming soon~
-
-
-## Stack
-
-### 🛠️ Dependencies
-- Java 17, Junit 5
-- Spring Boot 3.0
-- MySQL
-
-### 🛠️ Stack
-#### Framework -
-#### Database -
-#### ORM -
-#### Deploy -
-#### API Docs -
-#### Test -
-
-## Collaboration
-
-To make development more enjoyable and efficient, KU:Room follows these collaboration practices:
-
-Automation with GitHub Actions
-
-- When a pull request is created, a Jira task is automatically generated!
-- Every day at 4 PM, pending pull requests are notified via Discord!
-- Deadlines are automatically updated with labels, making it easier to track due dates!
-
-
-## License
-ⓒ 2025. KU:Room All rights reserved.
diff --git a/docs/README_KR.md b/docs/README_KR.md
deleted file mode 100644
index d6520702..00000000
--- a/docs/README_KR.md
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
-# KU:Room
-
-
-[](README_KR.md)
-[](README_EN.md)
-
-대학생활 가이드 **"쿠름"** 백엔드 레포 입니다.
-
-
-- 2025학년도부터 자유전공학부로 개편되어 대학생활 정보를 쉽게 얻을 수 있도록 만들었어요!
-- **학교 공지사항**(학사,국제,취창업 등)을 한 번에 볼 수 있어요!
-- **학교 맵**과 각종 편의시설(k-cube,k-hub,편의점,학생식당 등)의 위치와 정보들을 볼 수 있어요!
-- **커뮤니티 기능**이 있어서 포인트를 찍고 글, 댓글로 소통할 수 있어요!
-
-
-
-## 목차
-
-- [백엔드멤버](#백엔드멤버)
-- [데모](#데모)
-- [아키텍쳐](#아키텍쳐)
-- [스택](#스택)
-- [협업방식](#협업방식)
-- [권한](#권한)
-
-
-
-
-## 백엔드멤버
-
-
-|
|
|
|
|
-|:-----------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------:|
-| [혜리](https://github.com/Hyeri1ee) | [현준](https://github.com/buzz0331) | [재윤](https://github.com/tintin010) | [민우](https://github.com/kmw10693) |
-
-
-## 데모
-
-coming soon~
-
-## 아키텍쳐
-
-coming soon~
-
-
-
-
-
-## 스택
-
-### 🛠️ 의존성
-- Java 17, Junit 5
-- Spring Boot 3.0
-- MySQL
-
-### 🛠️ 스택
-#### Framework
-
-
-#### Database
-
-
-#### ORM
-
-
-#### Deploy
-
-
-#### API Docs
-
-
-#### Test
-
-
-## 협업방식
-
-보다 더 재밌고 효율적인 개발을 하기 위해 쿠름은 이런 협업방식을 추구해요
-
-git action으로 업무 자동화
-
-- Pull request를 생성하면 Jira 일정이 자동 생성돼요!
-- 매일 오후 4시마다 남은 Pull request 목록들이 디스코드로 알림이 가요!
-- 자동으로 마감기한 라벨이 변경되어 마감기한을 지키기 수월해요!
-
-
-
-## 권한
-ⓒ 2025. KU:Room All rights reserved.
\ No newline at end of file
diff --git a/src/main/java/ku_rum/backend/domain/oauth/handler/OAuth2AuthenticationSuccessHandler.java b/src/main/java/ku_rum/backend/domain/oauth/handler/OAuth2AuthenticationSuccessHandler.java
index ff202a3e..99199997 100644
--- a/src/main/java/ku_rum/backend/domain/oauth/handler/OAuth2AuthenticationSuccessHandler.java
+++ b/src/main/java/ku_rum/backend/domain/oauth/handler/OAuth2AuthenticationSuccessHandler.java
@@ -1,10 +1,14 @@
package ku_rum.backend.domain.oauth.handler;
-import com.github.dockerjava.api.exception.BadRequestException;
+import static ku_rum.backend.domain.oauth.handler.HttpCookieOAuth2AuthorizationRequestRepository.REDIRECT_URI_PARAM_COOKIE_NAME;
+
import jakarta.annotation.PostConstruct;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Optional;
import ku_rum.backend.domain.oauth.domain.OAuth2MemberInfo;
import ku_rum.backend.domain.oauth.domain.PreSignupPrincipal;
import ku_rum.backend.domain.oauth.domain.ProviderType;
@@ -17,17 +21,10 @@
import org.springframework.security.core.Authentication;
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
-import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
import org.springframework.stereotype.Component;
import org.springframework.web.util.UriComponentsBuilder;
-import java.io.IOException;
-import java.net.URI;
-import java.util.Optional;
-
-import static ku_rum.backend.domain.oauth.handler.HttpCookieOAuth2AuthorizationRequestRepository.REDIRECT_URI_PARAM_COOKIE_NAME;
-
@Component
@RequiredArgsConstructor
public class OAuth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
@@ -60,12 +57,13 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
getRedirectStrategy().sendRedirect(request, response, targetUrl);
}
- protected String determineTargetUrl(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
+ protected String determineTargetUrl(HttpServletRequest request, HttpServletResponse response,
+ Authentication authentication) {
Optional redirectUri = CookieUtils.getCookie(request, REDIRECT_URI_PARAM_COOKIE_NAME)
.map(Cookie::getValue);
if (redirectUri.isPresent() && !isAuthorizedRedirectUri(redirectUri.get())) {
- throw new BadRequestException("승인되지 않은 리다이렉션 URI입니다");
+ throw new RuntimeException("승인되지 않은 리다이렉션 URI입니다");
}
String targetUrl = redirectUri.orElse(getDefaultTargetUrl());
diff --git a/src/main/java/ku_rum/backend/global/config/QueryDslConfig.java b/src/main/java/ku_rum/backend/global/config/QueryDslConfig.java
deleted file mode 100644
index 0c9c46da..00000000
--- a/src/main/java/ku_rum/backend/global/config/QueryDslConfig.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package ku_rum.backend.global.config;
-
-import com.querydsl.jpa.impl.JPAQueryFactory;
-import jakarta.persistence.EntityManager;
-import jakarta.persistence.PersistenceContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class QueryDslConfig {
-
- @PersistenceContext
- private EntityManager entityManager;
-
- @Bean
- public JPAQueryFactory jpaQueryFactory() {
- return new JPAQueryFactory(entityManager);
- }
-}
\ No newline at end of file
diff --git a/src/main/java/ku_rum/backend/global/handler/GlobalExceptionControllerAdvice.java b/src/main/java/ku_rum/backend/global/handler/GlobalExceptionControllerAdvice.java
index 1e24f012..75983373 100644
--- a/src/main/java/ku_rum/backend/global/handler/GlobalExceptionControllerAdvice.java
+++ b/src/main/java/ku_rum/backend/global/handler/GlobalExceptionControllerAdvice.java
@@ -1,28 +1,32 @@
package ku_rum.backend.global.handler;
-import com.github.dockerjava.api.exception.BadRequestException;
-import com.github.dockerjava.api.exception.InternalServerErrorException;
+import static ku_rum.backend.global.support.status.BaseExceptionResponseStatus.ACCESS_DENIED;
+import static ku_rum.backend.global.support.status.BaseExceptionResponseStatus.BAD_REQUEST;
+import static ku_rum.backend.global.support.status.BaseExceptionResponseStatus.FIELD_ERROR;
+import static ku_rum.backend.global.support.status.BaseExceptionResponseStatus.INTERNAL_SERVER_ERROR;
+import static ku_rum.backend.global.support.status.BaseExceptionResponseStatus.METHOD_ARGUMENT_ERROR;
+import static ku_rum.backend.global.support.status.BaseExceptionResponseStatus.METHOD_NOT_ALLOWED;
+import static ku_rum.backend.global.support.status.BaseExceptionResponseStatus.SERVER_ERROR;
+import static ku_rum.backend.global.support.status.BaseExceptionResponseStatus.URL_NOT_FOUND;
+
import jakarta.validation.ConstraintViolationException;
+import java.util.ArrayList;
+import java.util.List;
import ku_rum.backend.global.exception.global.GlobalException;
import ku_rum.backend.global.support.response.BaseErrorResponse;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.TypeMismatchException;
import org.springframework.http.HttpStatus;
+import org.springframework.security.access.AccessDeniedException;
import org.springframework.validation.FieldError;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
-import org.springframework.security.access.AccessDeniedException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
import org.springframework.web.servlet.NoHandlerFoundException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static ku_rum.backend.global.support.status.BaseExceptionResponseStatus.*;
-
@Slf4j
@RestControllerAdvice
@@ -36,7 +40,7 @@ public BaseErrorResponse handleServerException(final Exception e) {
}
@ResponseStatus(HttpStatus.BAD_REQUEST)
- @ExceptionHandler({BadRequestException.class, NoHandlerFoundException.class, TypeMismatchException.class})
+ @ExceptionHandler({NoHandlerFoundException.class, TypeMismatchException.class})
public BaseErrorResponse handleBadRequest(final Exception e) {
log.error("[handle BadRequest]", e);
return new BaseErrorResponse(URL_NOT_FOUND);
@@ -44,7 +48,8 @@ public BaseErrorResponse handleBadRequest(final Exception e) {
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
- public BaseErrorResponse handle_HttpRequestMethodNotSupportedException(final HttpRequestMethodNotSupportedException e) {
+ public BaseErrorResponse handle_HttpRequestMethodNotSupportedException(
+ final HttpRequestMethodNotSupportedException e) {
log.error("[handle_HttpRequestMethodNotSupportedException]", e);
return new BaseErrorResponse(METHOD_NOT_ALLOWED);
}
@@ -56,13 +61,6 @@ public BaseErrorResponse handle_ConstraintViolationException(final ConstraintVio
return new BaseErrorResponse(BAD_REQUEST);
}
- @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
- @ExceptionHandler(InternalServerErrorException.class)
- public BaseErrorResponse handle_InternalServerError(final InternalServerErrorException e) {
- log.error("[handle_InternalServerError]", e);
- return new BaseErrorResponse(INTERNAL_SERVER_ERROR);
- }
-
@ResponseStatus(HttpStatus.FORBIDDEN)
@ExceptionHandler(AccessDeniedException.class)
public BaseErrorResponse handle_AccessDeniedException(final AccessDeniedException e) {
@@ -82,7 +80,8 @@ public List MethodArgumentNotValidExceptionHandler(final Meth
List responses = new ArrayList<>();
for (FieldError error : e.getFieldErrors()) {
log.error("errorFieldName : {}, error message : {}", error.getField(), error.getDefaultMessage());
- BaseErrorResponse baseErrorResponse = new BaseErrorResponse(FIELD_ERROR.getStatus(), error.getDefaultMessage());
+ BaseErrorResponse baseErrorResponse = new BaseErrorResponse(FIELD_ERROR.getStatus(),
+ error.getDefaultMessage());
responses.add(baseErrorResponse);
}
return responses;
diff --git a/src/test/java/ku_rum/backend/domain/common/mail/presentation/MailControllerTest.java b/src/test/java/ku_rum/backend/domain/common/mail/presentation/MailControllerTest.java
index c352d5c8..a933856a 100644
--- a/src/test/java/ku_rum/backend/domain/common/mail/presentation/MailControllerTest.java
+++ b/src/test/java/ku_rum/backend/domain/common/mail/presentation/MailControllerTest.java
@@ -14,10 +14,10 @@
import ku_rum.backend.domain.common.mail.dto.request.MailVerificationRequest;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
-import org.openqa.selenium.json.JsonType;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
+import org.springframework.restdocs.payload.JsonFieldType;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.ActiveProfiles;
@@ -53,22 +53,22 @@ void authCode() throws Exception {
.description("이메일 인증 요청")
.requestFields(
fieldWithPath("email")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("건국대학교 웹메일")
.attributes(constraints("이메일 형식을 지켜야 합니다."))
)
.responseFields(
fieldWithPath("code")
- .type(JsonType.STRING)
+ .type(JsonFieldType.NUMBER)
.description("성공시 반환 코드 (200)"),
fieldWithPath("status")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공시 상태 값 (OK)"),
fieldWithPath("message")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 메시지 (OK)"),
fieldWithPath("data")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 '메일이 성공적으로 전송되었습니다.' 반환합니다.")
).build())));
}
@@ -98,26 +98,26 @@ void verificationCode() throws Exception {
.description("이메일 인증 코드 검증")
.requestFields(
fieldWithPath("email")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("건국대학교 웹메일")
.attributes(constraints("이메일 형식을 지켜야 합니다.")),
fieldWithPath("code")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("건국대학교 웹메일")
.attributes(constraints("사용자가 받은 인증코드를 입력받습니다."))
)
.responseFields(
fieldWithPath("code")
- .type(JsonType.NUMBER)
+ .type(JsonFieldType.NUMBER)
.description("성공시 반환 코드 (200)"),
fieldWithPath("status")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("올바른 인증코드 시 상태 값 (OK)"),
fieldWithPath("message")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("올바른 인증코드 시 메시지 (OK)"),
fieldWithPath("data.verified")
- .type(JsonType.BOOLEAN)
+ .type(JsonFieldType.BOOLEAN)
.description("인증 성공 여부")
).build())));
}
diff --git a/src/test/java/ku_rum/backend/domain/user/presentation/UserControllerTest.java b/src/test/java/ku_rum/backend/domain/user/presentation/UserControllerTest.java
index 18e321f0..a99e18b0 100644
--- a/src/test/java/ku_rum/backend/domain/user/presentation/UserControllerTest.java
+++ b/src/test/java/ku_rum/backend/domain/user/presentation/UserControllerTest.java
@@ -41,7 +41,6 @@
import ku_rum.backend.global.security.CustomUserDetails;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
-import org.openqa.selenium.json.JsonType;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
@@ -101,43 +100,43 @@ void createUser() throws Exception {
.description("신규 유저 생성")
.requestFields(
fieldWithPath("loginId")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("멤버 아이디")
.attributes(constraints("아이디 입력은 필수입니다. 최소 6자 이상입니다.")),
fieldWithPath("email")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("멤버 이메일")
.attributes(constraints("유저의 이메일")),
fieldWithPath("nickname")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("멤버 닉네임")
.attributes(constraints("닉네임 입력은 필수입니다. 최대 8자 이하입니다.")),
fieldWithPath("password")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("멤버 패스워드")
.attributes(constraints("비밀번호는 영어와 숫자를 포함해서 8자 이상 20자 이내로 입력해주세요.")),
fieldWithPath("studentId")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("멤버 학번")
.attributes(constraints("학번은 20으로 시작하고, 9자리여야 합니다.")),
fieldWithPath("department")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("멤버 학과")
.attributes(constraints("ex) 컴퓨터공학부")),
fieldWithPath("agreementStatus")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("선택 동의 여부")
.attributes(constraints("ex) AGREED/DISAGREED"))
)
.responseFields(
fieldWithPath("code")
- .type(JsonType.STRING)
+ .type(JsonFieldType.NUMBER)
.description("성공시 반환 코드 (200)"),
fieldWithPath("status")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공시 상태 값 (OK)"),
fieldWithPath("message")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 메시지 (OK)")
).build())));
}
@@ -202,13 +201,13 @@ void createUserBySocial() throws Exception {
)
.responseFields(
fieldWithPath("code")
- .type(JsonType.NUMBER)
+ .type(JsonFieldType.NUMBER)
.description("성공시 반환 코드 (200)"),
fieldWithPath("status")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공시 상태 값 (OK)"),
fieldWithPath("message")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 메시지 (OK)")
).build())));
}
@@ -236,22 +235,22 @@ void validateEmail() throws Exception {
.description("이메일 중복 확인")
.requestFields(
fieldWithPath("email")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("멤버 이메일")
.attributes(constraints("중복 확인할 이메일"))
)
.responseFields(
fieldWithPath("code")
- .type(JsonType.NUMBER)
+ .type(JsonFieldType.NUMBER)
.description("성공시 반환 코드 (200)"),
fieldWithPath("status")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공시 상태 값 (OK)"),
fieldWithPath("message")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 메시지 값 (OK)"),
fieldWithPath("data")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 '올바른 이메일 입니다.' 반환")
).build())));
}
@@ -285,22 +284,22 @@ void changeProfile() throws Exception {
)
.requestFields(
fieldWithPath("imageUrl")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("새로 변경할 프로필")
.attributes(constraints("새로 변경할 프로필입니다."))
)
.responseFields(
fieldWithPath("code")
- .type(JsonType.NUMBER)
+ .type(JsonFieldType.NUMBER)
.description("성공시 반환 코드 (200)"),
fieldWithPath("status")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공시 상태 값 (OK)"),
fieldWithPath("message")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 메시지 값 (OK)"),
fieldWithPath("data")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 반환 메시지")
).build())));
}
@@ -594,34 +593,34 @@ void getUserProfile() throws Exception {
)
.responseFields(
fieldWithPath("code")
- .type(JsonType.NUMBER)
+ .type(JsonFieldType.NUMBER)
.description("성공시 반환 코드 (200)"),
fieldWithPath("status")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공시 상태 값 (OK)"),
fieldWithPath("message")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 메시지 값 (OK)"),
fieldWithPath("data.profileImage")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("회원 프로필 이미지 URL"),
fieldWithPath("data.email")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("회원 이메일"),
fieldWithPath("data.loginId")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("회원 로그인 아이디"),
fieldWithPath("data.nickname")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("회원 닉네임"),
fieldWithPath("data.studentId")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("회원 학번"),
fieldWithPath("data.departments[].department")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("회원 학과"),
fieldWithPath("data.departments[].college")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("회원 단과대")
).build())));
}
diff --git a/src/test/java/ku_rum/backend/domain/user/presentation/UserProfileControllerTest.java b/src/test/java/ku_rum/backend/domain/user/presentation/UserProfileControllerTest.java
index 59448c55..9cf5bc1e 100644
--- a/src/test/java/ku_rum/backend/domain/user/presentation/UserProfileControllerTest.java
+++ b/src/test/java/ku_rum/backend/domain/user/presentation/UserProfileControllerTest.java
@@ -29,7 +29,6 @@
import ku_rum.backend.global.security.CustomUserDetails;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
-import org.openqa.selenium.json.JsonType;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
@@ -116,32 +115,32 @@ void resetAccount() throws Exception {
.description("로그인 전 비밀번호 변경")
.requestFields(
fieldWithPath("emailRequest.email")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("인증 이메일 주소"),
fieldWithPath("emailRequest.code")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("이메일 인증 코드"),
fieldWithPath("loginId")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("비밀번호 변경할 아이디")
.attributes(constraints("비밀번호를 변경할 아이디입니다.")),
fieldWithPath("newPassword")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("새 비밀번호")
.attributes(constraints("새 비밀번호입니다."))
)
.responseFields(
fieldWithPath("code")
- .type(JsonType.NUMBER)
+ .type(JsonFieldType.NUMBER)
.description("성공시 반환 코드 (200)"),
fieldWithPath("status")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공시 상태 값 (OK)"),
fieldWithPath("message")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 메시지 값 (OK)"),
fieldWithPath("data")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 '아이디/비밀번호가 변경되었습니다.' 반환")
).build())));
}
@@ -175,26 +174,26 @@ void passwordReset() throws Exception {
)
.requestFields(
fieldWithPath("prevPassword")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("기존 비밀번호")
.attributes(constraints("기존 비밀번호입니다.")),
fieldWithPath("newPassword")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("새 비밀번호")
.attributes(constraints("새 비밀번호입니다."))
)
.responseFields(
fieldWithPath("code")
- .type(JsonType.NUMBER)
+ .type(JsonFieldType.NUMBER)
.description("성공시 반환 코드 (200)"),
fieldWithPath("status")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공시 상태 값 (OK)"),
fieldWithPath("message")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 메시지 값 (OK)"),
fieldWithPath("data")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 '아이디/비밀번호가 변경되었습니다.' 반환")
).build())));
}
@@ -224,16 +223,16 @@ void deactivateUser() throws Exception {
)
.responseFields(
fieldWithPath("code")
- .type(JsonType.NUMBER)
+ .type(JsonFieldType.NUMBER)
.description("성공 시 반환 코드 (200)"),
fieldWithPath("status")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 상태 값 (OK)"),
fieldWithPath("message")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 메시지 값 (회원 탈퇴가 완료되었습니다.)"),
fieldWithPath("data")
- .type(JsonType.STRING)
+ .type(JsonFieldType.STRING)
.description("성공 시 메시지 값 (회원 탈퇴가 완료되었습니다.)")
).build()
)