diff --git a/.gradle/6.8.2/executionHistory/executionHistory.bin b/.gradle/6.8.2/executionHistory/executionHistory.bin
index 71f25f8f..8966cb25 100644
Binary files a/.gradle/6.8.2/executionHistory/executionHistory.bin and b/.gradle/6.8.2/executionHistory/executionHistory.bin differ
diff --git a/.gradle/6.8.2/executionHistory/executionHistory.lock b/.gradle/6.8.2/executionHistory/executionHistory.lock
index 935f1944..e42125e7 100644
Binary files a/.gradle/6.8.2/executionHistory/executionHistory.lock and b/.gradle/6.8.2/executionHistory/executionHistory.lock differ
diff --git a/.gradle/6.8.2/fileHashes/fileHashes.bin b/.gradle/6.8.2/fileHashes/fileHashes.bin
index 56d750b6..b5972558 100644
Binary files a/.gradle/6.8.2/fileHashes/fileHashes.bin and b/.gradle/6.8.2/fileHashes/fileHashes.bin differ
diff --git a/.gradle/6.8.2/fileHashes/fileHashes.lock b/.gradle/6.8.2/fileHashes/fileHashes.lock
index 568d88f4..bf55a7a0 100644
Binary files a/.gradle/6.8.2/fileHashes/fileHashes.lock and b/.gradle/6.8.2/fileHashes/fileHashes.lock differ
diff --git a/.gradle/6.8.2/javaCompile/javaCompile.lock b/.gradle/6.8.2/javaCompile/javaCompile.lock
index 8879fb0c..fb59e5ea 100644
Binary files a/.gradle/6.8.2/javaCompile/javaCompile.lock and b/.gradle/6.8.2/javaCompile/javaCompile.lock differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 09a36556..aeaa8542 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
deleted file mode 100644
index 51737e01..00000000
--- a/.idea/workspace.xml
+++ /dev/null
@@ -1,420 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1617807302753
-
-
- 1617807302753
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1618063878165
-
-
-
- 1618063878165
-
-
- 1618556428314
-
-
-
- 1618556428314
-
-
- 1618750650206
-
-
-
- 1618750650206
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- file://$PROJECT_DIR$/src/main/java/com/project/devidea/modules/account/Account.java
- 246
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 4d119fe9..d85acef7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,59 +5,6 @@ plugins {
id 'jacoco'
}
-test {
- finalizedBy 'jacocoTestReport'
-}
-
-jacoco {
- toolVersion = "0.8.5"
-}
-
-jacocoTestReport {
- reports {
- html.enabled true
- csv.enabled true
- xml.enabled false
- }
-
- afterEvaluate {
- getClassDirectories().setFrom(files(classDirectories.files.collect {
- fileTree(dir: it,
- exclude: ['**/Q*'])
- }))
- }
-
- finalizedBy 'jacocoTestCoverageVerification'
-}
-
-jacocoTestCoverageVerification {
- afterEvaluate {
- getClassDirectories().setFrom(files(classDirectories.files.collect {
- fileTree(dir: it, exclude: ['**/Q*', '**/Q*.class'])
- }))
- }
-
- violationRules {
- rule {
- enabled = true
- element = 'CLASS'
- // includes = []
-
- limit {
- counter = 'LINE'
- value = 'COVEREDRATIO'
- minimum = 0.00
- }
-
- excludes = ['*.TechNewsController.*','*.Q.*','*.CrawlingTest.*','*.Q*','**/Q*.class']
- }
-
- rule {
- }
-
- }
-}
-
group = 'com.project'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
@@ -131,11 +78,6 @@ dependencies {
implementation group: 'commons-io', name: 'commons-io', version: '2.6'
// //https://mvnrepository.com/artifact/de.flapdoodle.embed/de.flapdoodle.embed.mongo
// testImplementation group: 'de.flapdoodle.embed', name: 'de.flapdoodle.embed.mongo', version: '2.2.0'
- // https://mvnrepository.com/artifact/cz.jirutka.spring/embedmongo-spring
-// testImplementation group: 'cz.jirutka.spring', name: 'embedmongo-spring', version: '1.1'
- implementation platform('com.google.cloud:libraries-bom:19.0.0')
- compile 'com.google.cloud:google-cloud-language'
-
}
def generated='src/main/generated'
@@ -150,11 +92,67 @@ tasks.withType(JavaCompile) {
clean.doLast {
file(generated).deleteDir()
}
+
test {
useJUnitPlatform()
+ finalizedBy jacocoTestReport
}
+
+jacocoTestReport {
+ dependsOn test
+}
+
+jacoco {
+ toolVersion = "0.8.6"
+}
+
+jacocoTestReport {
+ reports {
+ html.enabled true
+ csv.enabled true
+ xml.enabled false
+ }
+
+ afterEvaluate {
+ getClassDirectories().setFrom(files(classDirectories.files.collect {
+ fileTree(dir: it,
+ exclude: ['**/Q*'])
+ }))
+ }
+
+ finalizedBy 'jacocoTestCoverageVerification'
+}
+
+jacocoTestCoverageVerification {
+ afterEvaluate {
+ getClassDirectories().setFrom(files(classDirectories.files.collect {
+ fileTree(dir: it, exclude: ['**/Q*', '**/Q*.class'])
+ }))
+ }
+
+ violationRules {
+ rule {
+ enabled = true
+ element = 'CLASS'
+ // includes = []
+
+ limit {
+ counter = 'LINE'
+ value = 'COVEREDRATIO'
+ minimum = 0.00
+ }
+
+ excludes = ['*.TechNewsController.*','*.Q.*','*.CrawlingTest.*','*.Q*','**/Q*.class']
+ }
+
+ rule {
+ }
+
+ }
+}
+
dependencyManagement {
imports {
mavenBom "com.vaadin:vaadin-bom:8.1.0"
}
-}
+}
\ No newline at end of file
diff --git a/build/tmp/compileJava/source-classes-mapping.txt b/build/tmp/compileJava/source-classes-mapping.txt
deleted file mode 100644
index 027a3756..00000000
--- a/build/tmp/compileJava/source-classes-mapping.txt
+++ /dev/null
@@ -1,569 +0,0 @@
-com/project/devidea/modules/content/resume/form/education/EducationRequest.java
- com.project.devidea.modules.content.resume.form.education.EducationRequest
-com/project/devidea/modules/community/QComment.java
- com.project.devidea.modules.community.QComment
-com/project/devidea/modules/community/validator/EnumValidator.java
- com.project.devidea.modules.community.validator.EnumValidator
-com/project/devidea/modules/content/study/apply/StudyApply.java
- com.project.devidea.modules.content.study.apply.StudyApply
- com.project.devidea.modules.content.study.apply.StudyApply$StudyApplyBuilder
-com/project/devidea/infra/config/YamlPropertySourceFactory.java
- com.project.devidea.infra.config.YamlPropertySourceFactory
-com/project/devidea/infra/config/AsyncConfig.java
- com.project.devidea.infra.config.AsyncConfig
-com/project/devidea/modules/tagzone/zone/Zone.java
- com.project.devidea.modules.tagzone.zone.Zone
- com.project.devidea.modules.tagzone.zone.Zone$ZoneBuilder
-com/project/devidea/modules/content/resume/form/project/UpdateProjectRequest.java
- com.project.devidea.modules.content.resume.form.project.UpdateProjectRequest
- com.project.devidea.modules.content.resume.form.project.UpdateProjectRequest$UpdateProjectRequestBuilder
-com/project/devidea/modules/content/study/service/StudyService.java
- com.project.devidea.modules.content.study.service.StudyService
-com/project/devidea/modules/content/study/aop/StudyNotificationAspect.java
- com.project.devidea.modules.content.study.aop.StudyNotificationAspect
-com/project/devidea/modules/content/resume/activity/QActivity.java
- com.project.devidea.modules.content.resume.activity.QActivity
-com/project/devidea/modules/content/resume/education/QEducation.java
- com.project.devidea.modules.content.resume.education.QEducation
-com/project/devidea/infra/config/security/SecurityConfig.java
- com.project.devidea.infra.config.security.SecurityConfig
-com/project/devidea/modules/environment/QEnvironment.java
- com.project.devidea.modules.environment.QEnvironment
-com/project/devidea/modules/content/tech/Crawling.java
- com.project.devidea.modules.content.tech.Crawling
-com/project/devidea/modules/content/study/controller/StudyAdminController.java
- com.project.devidea.modules.content.study.controller.StudyAdminController
-com/project/devidea/modules/content/resume/form/award/AwardRequest.java
- com.project.devidea.modules.content.resume.form.award.AwardRequest
-com/project/devidea/modules/account/dto/Update.java
- com.project.devidea.modules.account.dto.Update
- com.project.devidea.modules.account.dto.Update$Interest
- com.project.devidea.modules.account.dto.Update$Interest$InterestBuilder
- com.project.devidea.modules.account.dto.Update$MainActivityZone
- com.project.devidea.modules.account.dto.Update$MainActivityZone$MainActivityZoneBuilder
- com.project.devidea.modules.account.dto.Update$NicknameRequest
- com.project.devidea.modules.account.dto.Update$NicknameRequest$NicknameRequestBuilder
- com.project.devidea.modules.account.dto.Update$Notification
- com.project.devidea.modules.account.dto.Update$Notification$NotificationBuilder
- com.project.devidea.modules.account.dto.Update$PasswordRequest
- com.project.devidea.modules.account.dto.Update$PasswordRequest$PasswordRequestBuilder
- com.project.devidea.modules.account.dto.Update$ProfileRequest
- com.project.devidea.modules.account.dto.Update$ProfileRequest$ProfileRequestBuilder
- com.project.devidea.modules.account.dto.Update$ProfileResponse
- com.project.devidea.modules.account.dto.Update$ProfileResponse$ProfileResponseBuilder
-com/project/devidea/modules/tagzone/zone/ZoneForm.java
- com.project.devidea.modules.tagzone.zone.ZoneForm
-com/project/devidea/modules/content/suggestion/form/SuggestionRequest.java
- com.project.devidea.modules.content.suggestion.form.SuggestionRequest
- com.project.devidea.modules.content.suggestion.form.SuggestionRequest$SuggestionRequestBuilder
-com/project/devidea/modules/content/techNews/crawling/LineCrawling.java
- com.project.devidea.modules.content.techNews.crawling.LineCrawling
-com/project/devidea/modules/content/study/repository/StudyRepository.java
- com.project.devidea.modules.content.study.repository.StudyRepository
-com/project/devidea/modules/content/mentoring/form/UpdateMentorRequest.java
- com.project.devidea.modules.content.mentoring.form.UpdateMentorRequest
- com.project.devidea.modules.content.mentoring.form.UpdateMentorRequest$UpdateMentorRequestBuilder
-com/project/devidea/modules/content/study/form/StudyBaseForm.java
- com.project.devidea.modules.content.study.form.StudyBaseForm
-com/project/devidea/infra/error/ErrorResponse.java
- com.project.devidea.infra.error.ErrorResponse
- com.project.devidea.infra.error.ErrorResponse$FieldError
-com/project/devidea/infra/eventHandler/GlobalExceptionHandler.java
- com.project.devidea.infra.eventHandler.GlobalExceptionHandler
-com/project/devidea/modules/account/repository/AccountRepositoryCustom.java
- com.project.devidea.modules.account.repository.AccountRepositoryCustom
-com/project/devidea/modules/tagzone/zone/ZoneRepository.java
- com.project.devidea.modules.tagzone.zone.ZoneRepository
-com/project/devidea/modules/account/repository/AccountRepository.java
- com.project.devidea.modules.account.repository.AccountRepository
-com/project/devidea/modules/content/mentoring/MentorService.java
- com.project.devidea.modules.content.mentoring.MentorService
-com/project/devidea/modules/content/suggestion/Suggestion.java
- com.project.devidea.modules.content.suggestion.Suggestion
- com.project.devidea.modules.content.suggestion.Suggestion$SuggestionBuilder
-com/project/devidea/modules/notification/NotificationController.java
- com.project.devidea.modules.notification.NotificationController
- com.project.devidea.modules.notification.NotificationController$ResponseNotifications
-com/project/devidea/modules/content/resume/award/QAward.java
- com.project.devidea.modules.content.resume.award.QAward
-com/project/devidea/modules/content/resume/award/AwardController.java
- com.project.devidea.modules.content.resume.award.AwardController
- com.project.devidea.modules.content.resume.award.AwardController$AwardDto
-com/project/devidea/modules/community/validator/Enum.java
- com.project.devidea.modules.community.validator.Enum
-com/project/devidea/modules/content/resume/education/EducationRepository.java
- com.project.devidea.modules.content.resume.education.EducationRepository
-com/project/devidea/modules/tagzone/tag/Tag.java
- com.project.devidea.modules.tagzone.tag.Tag
- com.project.devidea.modules.tagzone.tag.Tag$TagBuilder
-com/project/devidea/modules/content/mentoring/exception/InvalidInputException.java
- com.project.devidea.modules.content.mentoring.exception.InvalidInputException
-com/project/devidea/modules/tagzone/tag/TagsResponseDto.java
- com.project.devidea.modules.tagzone.tag.TagsResponseDto
-com/project/devidea/infra/config/security/LoginUser.java
- com.project.devidea.infra.config.security.LoginUser
-com/project/devidea/modules/content/resume/ResumeRepository.java
- com.project.devidea.modules.content.resume.ResumeRepository
-com/project/devidea/modules/content/resume/form/career/CreateCareerRequest.java
- com.project.devidea.modules.content.resume.form.career.CreateCareerRequest
- com.project.devidea.modules.content.resume.form.career.CreateCareerRequest$CreateCareerRequestBuilder
-com/project/devidea/modules/content/recruit/validator/BasicValidator.java
- com.project.devidea.modules.content.recruit.validator.BasicValidator
-com/project/devidea/modules/content/study/notification/StudyNotificationImpl.java
- com.project.devidea.modules.content.study.notification.StudyNotificationImpl
-com/project/devidea/modules/content/resume/validator/EducationRequestValidator.java
- com.project.devidea.modules.content.resume.validator.EducationRequestValidator
-com/project/devidea/infra/config/security/oauth/provider/SocialOAuth.java
- com.project.devidea.infra.config.security.oauth.provider.SocialOAuth
-com/project/devidea/modules/content/resume/form/project/CreateProjectRequest.java
- com.project.devidea.modules.content.resume.form.project.CreateProjectRequest
- com.project.devidea.modules.content.resume.form.project.CreateProjectRequest$CreateProjectRequestBuilder
-com/project/devidea/modules/event/validator/BasicValidator.java
- com.project.devidea.modules.event.validator.BasicValidator
-com/project/devidea/infra/error/exception/ErrorCode.java
- com.project.devidea.infra.error.exception.ErrorCode
-com/project/devidea/modules/content/suggestion/SuggestionService.java
- com.project.devidea.modules.content.suggestion.SuggestionService
-com/project/devidea/modules/content/study/repository/StudyRepositoryImpl.java
- com.project.devidea.modules.content.study.repository.StudyRepositoryImpl
-com/project/devidea/modules/content/resume/career/CareerService.java
- com.project.devidea.modules.content.resume.career.CareerService
-com/project/devidea/modules/account/exception/AccountException.java
- com.project.devidea.modules.account.exception.AccountException
-com/project/devidea/modules/community/CommunityController.java
- com.project.devidea.modules.community.CommunityController
-com/project/devidea/modules/environment/Environment.java
- com.project.devidea.modules.environment.Environment
- com.project.devidea.modules.environment.Environment$EnvironmentBuilder
-com/project/devidea/infra/config/security/jwt/JwtAuthenticationEntryPoint.java
- com.project.devidea.infra.config.security.jwt.JwtAuthenticationEntryPoint
-com/project/devidea/modules/content/resume/form/CreateResumeRequest.java
- com.project.devidea.modules.content.resume.form.CreateResumeRequest
- com.project.devidea.modules.content.resume.form.CreateResumeRequest$CreateResumeRequestBuilder
-com/project/devidea/modules/content/resume/QResume.java
- com.project.devidea.modules.content.resume.QResume
-com/project/devidea/modules/account/service/AccountServiceImpl.java
- com.project.devidea.modules.account.service.AccountServiceImpl
-com/project/devidea/modules/content/study/validator/StudyRequestFormValidator.java
- com.project.devidea.modules.content.study.validator.StudyRequestFormValidator
-com/project/devidea/modules/tagzone/tag/TagController.java
- com.project.devidea.modules.tagzone.tag.TagController
-com/project/devidea/modules/content/resume/ResumeService.java
- com.project.devidea.modules.content.resume.ResumeService
-com/project/devidea/modules/content/mentoring/MentorRepository.java
- com.project.devidea.modules.content.mentoring.MentorRepository
-com/project/devidea/modules/community/CommunityType.java
- com.project.devidea.modules.community.CommunityType
-com/project/devidea/modules/content/resume/activity/ActivityController.java
- com.project.devidea.modules.content.resume.activity.ActivityController
- com.project.devidea.modules.content.resume.activity.ActivityController$ActivityDto
-com/project/devidea/modules/main/form/BasicForm.java
- com.project.devidea.modules.main.form.BasicForm
-com/project/devidea/modules/content/study/Study.java
- com.project.devidea.modules.content.study.Study
- com.project.devidea.modules.content.study.Study$StudyBuilder
-com/project/devidea/modules/content/resume/form/activity/CreateActivityRequest.java
- com.project.devidea.modules.content.resume.form.activity.CreateActivityRequest
- com.project.devidea.modules.content.resume.form.activity.CreateActivityRequest$CreateActivityRequestBuilder
-com/project/devidea/infra/config/AppConfig.java
- com.project.devidea.infra.config.AppConfig
-com/project/devidea/modules/content/mentoring/MenteeController.java
- com.project.devidea.modules.content.mentoring.MenteeController
- com.project.devidea.modules.content.mentoring.MenteeController$MenteeDto
-com/project/devidea/modules/community/QCommunity.java
- com.project.devidea.modules.community.QCommunity
-com/project/devidea/modules/content/study/service/StudyServiceImpl.java
- com.project.devidea.modules.content.study.service.StudyServiceImpl
-com/project/devidea/infra/aop/LoggingAspect.java
- com.project.devidea.infra.aop.LoggingAspect
-com/project/devidea/infra/mail/EmailServiceImpl.java
- com.project.devidea.infra.mail.EmailServiceImpl
-com/project/devidea/modules/community/CommunityService.java
- com.project.devidea.modules.community.CommunityService
-com/project/devidea/modules/content/study/controller/StudyBasicController.java
- com.project.devidea.modules.content.study.controller.StudyBasicController
-com/project/devidea/infra/config/security/oauth/OAuthService.java
- com.project.devidea.infra.config.security.oauth.OAuthService
-com/project/devidea/modules/content/resume/career/Career.java
- com.project.devidea.modules.content.resume.career.Career
- com.project.devidea.modules.content.resume.career.Career$CareerBuilder
-com/project/devidea/modules/content/study/apply/StudyApplyRepository.java
- com.project.devidea.modules.content.study.apply.StudyApplyRepository
-com/project/devidea/modules/content/resume/education/EducationController.java
- com.project.devidea.modules.content.resume.education.EducationController
- com.project.devidea.modules.content.resume.education.EducationController$EducationDto
-com/project/devidea/modules/content/resume/form/career/CareerRequest.java
- com.project.devidea.modules.content.resume.form.career.CareerRequest
-com/project/devidea/modules/content/tech/BasicForm.java
- com.project.devidea.modules.content.tech.BasicForm
-com/project/devidea/modules/account/QAccount.java
- com.project.devidea.modules.account.QAccount
-com/project/devidea/modules/content/mentoring/MenteeService.java
- com.project.devidea.modules.content.mentoring.MenteeService
-com/project/devidea/modules/notification/Notification.java
- com.project.devidea.modules.notification.Notification
- com.project.devidea.modules.notification.Notification$NotificationBuilder
-com/project/devidea/modules/account/event/SendEmailToken.java
- com.project.devidea.modules.account.event.SendEmailToken
- com.project.devidea.modules.account.event.SendEmailToken$SendEmailTokenBuilder
-com/project/devidea/modules/account/repository/AccountRepositoryCustomImpl.java
- com.project.devidea.modules.account.repository.AccountRepositoryCustomImpl
-com/project/devidea/modules/content/study/exception/StudyResponse.java
- com.project.devidea.modules.content.study.exception.StudyResponse
-com/project/devidea/modules/content/techNews/TechNewsRepository.java
- com.project.devidea.modules.content.techNews.TechNewsRepository
-com/project/devidea/modules/InitService.java
- com.project.devidea.modules.InitService
-com/project/devidea/infra/error/GlobalExceptionController.java
- com.project.devidea.infra.error.GlobalExceptionController
-com/project/devidea/modules/content/resume/validator/ProjectRequestValidator.java
- com.project.devidea.modules.content.resume.validator.ProjectRequestValidator
-com/project/devidea/modules/community/form/RequestCommunity.java
- com.project.devidea.modules.community.form.RequestCommunity
- com.project.devidea.modules.community.form.RequestCommunity$RequestCommunityBuilder
-com/project/devidea/modules/content/suggestion/SuggestionController.java
- com.project.devidea.modules.content.suggestion.SuggestionController
- com.project.devidea.modules.content.suggestion.SuggestionController$SuggestionDto
-com/project/devidea/modules/account/repository/InterestRepository.java
- com.project.devidea.modules.account.repository.InterestRepository
-com/project/devidea/modules/content/resume/form/UpdateResumeRequest.java
- com.project.devidea.modules.content.resume.form.UpdateResumeRequest
- com.project.devidea.modules.content.resume.form.UpdateResumeRequest$UpdateResumeRequestBuilder
-com/project/devidea/infra/config/security/SHA256.java
- com.project.devidea.infra.config.security.SHA256
-com/project/devidea/modules/content/study/StudyMember.java
- com.project.devidea.modules.content.study.StudyMember
- com.project.devidea.modules.content.study.StudyMember$StudyMemberBuilder
-com/project/devidea/modules/content/mentoring/QMentor.java
- com.project.devidea.modules.content.mentoring.QMentor
-com/project/devidea/modules/content/mentoring/Mentor.java
- com.project.devidea.modules.content.mentoring.Mentor
- com.project.devidea.modules.content.mentoring.Mentor$MentorBuilder
-com/project/devidea/modules/content/resume/award/AwardRepository.java
- com.project.devidea.modules.content.resume.award.AwardRepository
-com/project/devidea/modules/content/techNews/crawling/KakaoCrawling.java
- com.project.devidea.modules.content.techNews.crawling.KakaoCrawling
-com/project/devidea/modules/account/validator/SignUpRequestValidator.java
- com.project.devidea.modules.account.validator.SignUpRequestValidator
-com/project/devidea/modules/community/CommunityRepository.java
- com.project.devidea.modules.community.CommunityRepository
-com/project/devidea/modules/account/validator/PasswordValidator.java
- com.project.devidea.modules.account.validator.PasswordValidator
-com/project/devidea/modules/content/resume/award/Award.java
- com.project.devidea.modules.content.resume.award.Award
- com.project.devidea.modules.content.resume.award.Award$AwardBuilder
-com/project/devidea/modules/content/study/form/StudyListForm.java
- com.project.devidea.modules.content.study.form.StudyListForm
-com/project/devidea/modules/content/mentoring/Mentee.java
- com.project.devidea.modules.content.mentoring.Mentee
- com.project.devidea.modules.content.mentoring.Mentee$MenteeBuilder
-com/project/devidea/modules/content/study/form/OpenRecruitForm.java
- com.project.devidea.modules.content.study.form.OpenRecruitForm
-com/project/devidea/modules/content/recruit/form/BasicForm.java
- com.project.devidea.modules.content.recruit.form.BasicForm
-com/project/devidea/modules/content/mentoring/validator/MenteeRequestValidator.java
- com.project.devidea.modules.content.mentoring.validator.MenteeRequestValidator
-com/project/devidea/modules/content/study/exception/StudyRequestNotValidException.java
- com.project.devidea.modules.content.study.exception.StudyRequestNotValidException
-com/project/devidea/modules/like/form/BasicForm.java
- com.project.devidea.modules.like.form.BasicForm
-com/project/devidea/modules/content/study/form/StudySearchForm.java
- com.project.devidea.modules.content.study.form.StudySearchForm
- com.project.devidea.modules.content.study.form.StudySearchForm$StudySearchFormBuilder
-com/project/devidea/modules/content/resume/validator/AwardRequestValidator.java
- com.project.devidea.modules.content.resume.validator.AwardRequestValidator
-com/project/devidea/modules/tagzone/zone/ZoneService.java
- com.project.devidea.modules.tagzone.zone.ZoneService
-com/project/devidea/modules/account/service/AccountService.java
- com.project.devidea.modules.account.service.AccountService
-com/project/devidea/modules/content/resume/education/EducationService.java
- com.project.devidea.modules.content.resume.education.EducationService
-com/project/devidea/modules/content/study/StudySampleGenerator.java
- com.project.devidea.modules.content.study.StudySampleGenerator
-com/project/devidea/DevideaApplication.java
- com.project.devidea.DevideaApplication
-com/project/devidea/modules/content/techNews/TechNews.java
- com.project.devidea.modules.content.techNews.TechNews
- com.project.devidea.modules.content.techNews.TechNews$TechNewsBuilder
-com/project/devidea/modules/content/resume/project/ProjectService.java
- com.project.devidea.modules.content.resume.project.ProjectService
-com/project/devidea/modules/content/study/Level.java
- com.project.devidea.modules.content.study.Level
-com/project/devidea/modules/content/study/notification/StudyNoticationType.java
- com.project.devidea.modules.content.study.notification.StudyNoticationType
-com/project/devidea/infra/config/security/jwt/JwtTokenUtil.java
- com.project.devidea.infra.config.security.jwt.JwtTokenUtil
-com/project/devidea/modules/content/mentoring/exception/NotCorrectException.java
- com.project.devidea.modules.content.mentoring.exception.NotCorrectException
-com/project/devidea/modules/account/repository/MainActivityZoneRepository.java
- com.project.devidea.modules.account.repository.MainActivityZoneRepository
-com/project/devidea/modules/content/study/apply/StudyApplyForm.java
- com.project.devidea.modules.content.study.apply.StudyApplyForm
- com.project.devidea.modules.content.study.apply.StudyApplyForm$StudyApplyFormBuilder
-com/project/devidea/modules/account/AccountInfoController.java
- com.project.devidea.modules.account.AccountInfoController
-com/project/devidea/modules/community/Comment.java
- com.project.devidea.modules.community.Comment
-com/project/devidea/modules/content/mentoring/form/CreateMenteeRequest.java
- com.project.devidea.modules.content.mentoring.form.CreateMenteeRequest
- com.project.devidea.modules.content.mentoring.form.CreateMenteeRequest$CreateMenteeRequestBuilder
-com/project/devidea/modules/notification/NotificationRepository.java
- com.project.devidea.modules.notification.NotificationRepository
-com/project/devidea/modules/content/resume/activity/ActivityService.java
- com.project.devidea.modules.content.resume.activity.ActivityService
-com/project/devidea/modules/account/AccountController.java
- com.project.devidea.modules.account.AccountController
-com/project/devidea/modules/content/resume/Resume.java
- com.project.devidea.modules.content.resume.Resume
- com.project.devidea.modules.content.resume.Resume$ResumeBuilder
-com/project/devidea/modules/account/event/AccountEventListener.java
- com.project.devidea.modules.account.event.AccountEventListener
-com/project/devidea/modules/content/study/aop/AlreadyExistError.java
- com.project.devidea.modules.content.study.aop.AlreadyExistError
-com/project/devidea/modules/content/resume/form/activity/UpdateActivityRequest.java
- com.project.devidea.modules.content.resume.form.activity.UpdateActivityRequest
- com.project.devidea.modules.content.resume.form.activity.UpdateActivityRequest$UpdateActivityRequestBuilder
-com/project/devidea/infra/config/security/CurrentUser.java
- com.project.devidea.infra.config.security.CurrentUser
-com/project/devidea/modules/account/validator/NicknameValidator.java
- com.project.devidea.modules.account.validator.NicknameValidator
-com/project/devidea/modules/content/study/notification/StudyNotification.java
- com.project.devidea.modules.content.study.notification.StudyNotification
-com/project/devidea/infra/aop/annotation/LogExecutionTime.java
- com.project.devidea.infra.aop.annotation.LogExecutionTime
-com/project/devidea/modules/main/validator/BasicValidator.java
- com.project.devidea.modules.main.validator.BasicValidator
-com/project/devidea/modules/content/study/apply/QStudyApply.java
- com.project.devidea.modules.content.study.apply.QStudyApply
-com/project/devidea/modules/event/form/BasicForm.java
- com.project.devidea.modules.event.form.BasicForm
-com/project/devidea/modules/content/resume/form/career/UpdateCareerRequest.java
- com.project.devidea.modules.content.resume.form.career.UpdateCareerRequest
- com.project.devidea.modules.content.resume.form.career.UpdateCareerRequest$UpdateCareerRequestBuilder
-com/project/devidea/modules/content/techNews/TechSite.java
- com.project.devidea.modules.content.techNews.TechSite
-com/project/devidea/modules/content/study/repository/StudySearchConditions.java
- com.project.devidea.modules.content.study.repository.StudySearchConditions
-com/project/devidea/modules/content/mentoring/form/MentorRequest.java
- com.project.devidea.modules.content.mentoring.form.MentorRequest
-com/project/devidea/modules/tagzone/zone/ZoneController.java
- com.project.devidea.modules.tagzone.zone.ZoneController
-com/project/devidea/infra/error/exception/EntityNotFoundException.java
- com.project.devidea.infra.error.exception.EntityNotFoundException
-com/project/devidea/modules/content/study/apply/StudyApplyListForm.java
- com.project.devidea.modules.content.study.apply.StudyApplyListForm
-com/project/devidea/modules/content/resume/form/ResumeRequest.java
- com.project.devidea.modules.content.resume.form.ResumeRequest
-com/project/devidea/modules/content/resume/education/Education.java
- com.project.devidea.modules.content.resume.education.Education
- com.project.devidea.modules.content.resume.education.Education$EducationBuilder
-com/project/devidea/modules/content/mentoring/exception/NotFoundException.java
- com.project.devidea.modules.content.mentoring.exception.NotFoundException
-com/project/devidea/modules/content/resume/form/award/UpdateAwardRequest.java
- com.project.devidea.modules.content.resume.form.award.UpdateAwardRequest
- com.project.devidea.modules.content.resume.form.award.UpdateAwardRequest$UpdateAwardRequestBuilder
-com/project/devidea/modules/content/study/aop/StudyAuthorityAspect.java
- com.project.devidea.modules.content.study.aop.StudyAuthorityAspect
-com/project/devidea/modules/account/MainActivityZone.java
- com.project.devidea.modules.account.MainActivityZone
- com.project.devidea.modules.account.MainActivityZone$MainActivityZoneBuilder
-com/project/devidea/modules/account/Account.java
- com.project.devidea.modules.account.Account
- com.project.devidea.modules.account.Account$AccountBuilder
-com/project/devidea/modules/account/validator/SignUpOAuthRequestValidator.java
- com.project.devidea.modules.account.validator.SignUpOAuthRequestValidator
-com/project/devidea/modules/content/resume/career/CareerController.java
- com.project.devidea.modules.content.resume.career.CareerController
- com.project.devidea.modules.content.resume.career.CareerController$CareerDto
-com/project/devidea/modules/community/Community.java
- com.project.devidea.modules.community.Community
- com.project.devidea.modules.community.Community$CommunityBuilder
-com/project/devidea/modules/content/resume/form/award/CreateAwardRequest.java
- com.project.devidea.modules.content.resume.form.award.CreateAwardRequest
- com.project.devidea.modules.content.resume.form.award.CreateAwardRequest$CreateAwardRequestBuilder
-com/project/devidea/modules/content/study/QStudy.java
- com.project.devidea.modules.content.study.QStudy
-com/project/devidea/modules/content/resume/project/QProject.java
- com.project.devidea.modules.content.resume.project.QProject
-com/project/devidea/modules/tagzone/tag/TagService.java
- com.project.devidea.modules.tagzone.tag.TagService
-com/project/devidea/modules/content/study/repository/StudyMemberRepository.java
- com.project.devidea.modules.content.study.repository.StudyMemberRepository
-com/project/devidea/modules/content/resume/career/QCareer.java
- com.project.devidea.modules.content.resume.career.QCareer
-com/project/devidea/infra/error/exception/DataBusinessException.java
- com.project.devidea.infra.error.exception.DataBusinessException
-com/project/devidea/modules/content/mentoring/QMentee.java
- com.project.devidea.modules.content.mentoring.QMentee
-com/project/devidea/infra/config/security/oauth/provider/SocialLoginTypeConverter.java
- com.project.devidea.infra.config.security.oauth.provider.SocialLoginTypeConverter
-com/project/devidea/infra/config/security/jwt/JwtRequestFilter.java
- com.project.devidea.infra.config.security.jwt.JwtRequestFilter
-com/project/devidea/modules/content/techNews/crawling/Crawling.java
- com.project.devidea.modules.content.techNews.crawling.Crawling
-com/project/devidea/infra/config/security/oauth/provider/GithubOAuth.java
- com.project.devidea.infra.config.security.oauth.provider.GithubOAuth
-com/project/devidea/modules/content/resume/validator/ActivityRequestValidator.java
- com.project.devidea.modules.content.resume.validator.ActivityRequestValidator
-com/project/devidea/modules/content/study/form/EmpowerForm.java
- com.project.devidea.modules.content.study.form.EmpowerForm
-com/project/devidea/modules/content/study/StudyRole.java
- com.project.devidea.modules.content.study.StudyRole
-com/project/devidea/modules/content/mentoring/validator/MentorRequestValidator.java
- com.project.devidea.modules.content.mentoring.validator.MentorRequestValidator
-com/project/devidea/infra/config/security/oauth/provider/SocialLoginType.java
- com.project.devidea.infra.config.security.oauth.provider.SocialLoginType
-com/project/devidea/infra/config/MultipleCacheManagerConfig.java
- com.project.devidea.infra.config.MultipleCacheManagerConfig
-com/project/devidea/modules/content/suggestion/QSuggestion.java
- com.project.devidea.modules.content.suggestion.QSuggestion
-com/project/devidea/modules/content/study/form/StudyDetailForm.java
- com.project.devidea.modules.content.study.form.StudyDetailForm
-com/project/devidea/modules/content/mentoring/form/CreateMentorRequest.java
- com.project.devidea.modules.content.mentoring.form.CreateMentorRequest
- com.project.devidea.modules.content.mentoring.form.CreateMentorRequest$CreateMentorRequestBuilder
-com/project/devidea/infra/config/QuerydslConfig.java
- com.project.devidea.infra.config.QuerydslConfig
-com/project/devidea/infra/config/security/CustomUserDetailService.java
- com.project.devidea.infra.config.security.CustomUserDetailService
-com/project/devidea/modules/content/mentoring/form/MenteeRequest.java
- com.project.devidea.modules.content.mentoring.form.MenteeRequest
-com/project/devidea/infra/config/SwaggerConfig.java
- com.project.devidea.infra.config.SwaggerConfig
-com/project/devidea/modules/content/techNews/crawling/DaangnCrawling.java
- com.project.devidea.modules.content.techNews.crawling.DaangnCrawling
-com/project/devidea/modules/content/study/exception/StudyAuthorityRequiredException.java
- com.project.devidea.modules.content.study.exception.StudyAuthorityRequiredException
-com/project/devidea/modules/environment/EnvironmentRepository.java
- com.project.devidea.modules.environment.EnvironmentRepository
-com/project/devidea/modules/account/dto/SignUp.java
- com.project.devidea.modules.account.dto.SignUp
- com.project.devidea.modules.account.dto.SignUp$CommonRequest
- com.project.devidea.modules.account.dto.SignUp$CommonRequest$CommonRequestBuilder
- com.project.devidea.modules.account.dto.SignUp$DetailRequest
- com.project.devidea.modules.account.dto.SignUp$DetailRequest$DetailRequestBuilder
- com.project.devidea.modules.account.dto.SignUp$OAuthRequest
- com.project.devidea.modules.account.dto.SignUp$OAuthRequest$OAuthRequestBuilder
- com.project.devidea.modules.account.dto.SignUp$Response
- com.project.devidea.modules.account.dto.SignUp$Response$ResponseBuilder
-com/project/devidea/modules/content/resume/form/activity/ActivityRequest.java
- com.project.devidea.modules.content.resume.form.activity.ActivityRequest
-com/project/devidea/modules/content/resume/project/ProjectController.java
- com.project.devidea.modules.content.resume.project.ProjectController
- com.project.devidea.modules.content.resume.project.ProjectController$ProjectDto
-com/project/devidea/modules/content/mentoring/form/UpdateMenteeRequest.java
- com.project.devidea.modules.content.mentoring.form.UpdateMenteeRequest
- com.project.devidea.modules.content.mentoring.form.UpdateMenteeRequest$UpdateMenteeRequestBuilder
-com/project/devidea/modules/content/resume/project/Project.java
- com.project.devidea.modules.content.resume.project.Project
- com.project.devidea.modules.content.resume.project.Project$ProjectBuilder
-com/project/devidea/modules/like/validator/BasicValidator.java
- com.project.devidea.modules.like.validator.BasicValidator
-com/project/devidea/modules/notification/NotificationService.java
- com.project.devidea.modules.notification.NotificationService
-com/project/devidea/modules/content/study/QStudyMember.java
- com.project.devidea.modules.content.study.QStudyMember
-com/project/devidea/modules/content/study/KindsOf.java
- com.project.devidea.modules.content.study.KindsOf
-com/project/devidea/modules/content/mentoring/AbstractService.java
- com.project.devidea.modules.content.mentoring.AbstractService
-com/project/devidea/infra/error/GlobalResponse.java
- com.project.devidea.infra.error.GlobalResponse
- com.project.devidea.infra.error.GlobalResponse$GlobalResponseBuilder
-com/project/devidea/modules/content/study/StudyFactory.java
- com.project.devidea.modules.content.study.StudyFactory
-com/project/devidea/modules/content/study/form/StudyMakingForm.java
- com.project.devidea.modules.content.study.form.StudyMakingForm
-com/project/devidea/modules/content/techNews/crawling/JavableCrawling.java
- com.project.devidea.modules.content.techNews.crawling.JavableCrawling
-com/project/devidea/modules/content/study/aop/StudyErrorAspect.java
- com.project.devidea.modules.content.study.aop.StudyErrorAspect
-com/project/devidea/modules/content/study/repository/StudyRepositoryCustom.java
- com.project.devidea.modules.content.study.repository.StudyRepositoryCustom
-com/project/devidea/infra/mail/EmailMessage.java
- com.project.devidea.infra.mail.EmailMessage
- com.project.devidea.infra.mail.EmailMessage$EmailMessageBuilder
-com/project/devidea/modules/account/dto/Login.java
- com.project.devidea.modules.account.dto.Login
- com.project.devidea.modules.account.dto.Login$Common
- com.project.devidea.modules.account.dto.Login$Common$CommonBuilder
- com.project.devidea.modules.account.dto.Login$OAuth
- com.project.devidea.modules.account.dto.Login$OAuth$OAuthBuilder
- com.project.devidea.modules.account.dto.Login$Response
- com.project.devidea.modules.account.dto.Login$Response$ResponseBuilder
-com/project/devidea/modules/content/resume/form/education/UpdateEducationRequest.java
- com.project.devidea.modules.content.resume.form.education.UpdateEducationRequest
- com.project.devidea.modules.content.resume.form.education.UpdateEducationRequest$UpdateEducationRequestBuilder
-com/project/devidea/modules/account/service/AccountInfoService.java
- com.project.devidea.modules.account.service.AccountInfoService
-com/project/devidea/infra/error/exception/BusinessException.java
- com.project.devidea.infra.error.exception.BusinessException
-com/project/devidea/infra/config/security/oauth/provider/GoogleOAuth.java
- com.project.devidea.infra.config.security.oauth.provider.GoogleOAuth
-com/project/devidea/modules/content/resume/award/AwardService.java
- com.project.devidea.modules.content.resume.award.AwardService
-com/project/devidea/modules/content/resume/activity/ActivityRepository.java
- com.project.devidea.modules.content.resume.activity.ActivityRepository
-com/project/devidea/modules/content/suggestion/SuggestionRepository.java
- com.project.devidea.modules.content.suggestion.SuggestionRepository
-com/project/devidea/infra/config/AppProperties.java
- com.project.devidea.infra.config.AppProperties
-com/project/devidea/modules/content/resume/validator/CareerRequestValidator.java
- com.project.devidea.modules.content.resume.validator.CareerRequestValidator
-com/project/devidea/modules/content/study/form/TagZoneForm.java
- com.project.devidea.modules.content.study.form.TagZoneForm
-com/project/devidea/modules/content/resume/project/ProjectRepository.java
- com.project.devidea.modules.content.resume.project.ProjectRepository
-com/project/devidea/modules/content/study/controller/StudyManagerController.java
- com.project.devidea.modules.content.study.controller.StudyManagerController
-com/project/devidea/modules/account/Interest.java
- com.project.devidea.modules.account.Interest
- com.project.devidea.modules.account.Interest$InterestBuilder
-com/project/devidea/modules/tagzone/tag/TagRepository.java
- com.project.devidea.modules.tagzone.tag.TagRepository
-com/project/devidea/modules/content/mentoring/exception/AlreadyExistException.java
- com.project.devidea.modules.content.mentoring.exception.AlreadyExistException
-com/project/devidea/modules/content/study/exception/StudyNullException.java
- com.project.devidea.modules.content.study.exception.StudyNullException
-com/project/devidea/modules/account/QMainActivityZone.java
- com.project.devidea.modules.account.QMainActivityZone
-com/project/devidea/modules/content/resume/form/education/CreateEducationRequest.java
- com.project.devidea.modules.content.resume.form.education.CreateEducationRequest
- com.project.devidea.modules.content.resume.form.education.CreateEducationRequest$CreateEducationRequestBuilder
-com/project/devidea/modules/notification/NotificationType.java
- com.project.devidea.modules.notification.NotificationType
-com/project/devidea/modules/tagzone/zone/QZone.java
- com.project.devidea.modules.tagzone.zone.QZone
-com/project/devidea/modules/account/QInterest.java
- com.project.devidea.modules.account.QInterest
-com/project/devidea/modules/notification/aop/WithNotification.java
- com.project.devidea.modules.notification.aop.WithNotification
-com/project/devidea/infra/mail/EmailService.java
- com.project.devidea.infra.mail.EmailService
-com/project/devidea/modules/content/resume/activity/Activity.java
- com.project.devidea.modules.content.resume.activity.Activity
- com.project.devidea.modules.content.resume.activity.Activity$ActivityBuilder
-com/project/devidea/modules/content/techNews/TechNewsController.java
- com.project.devidea.modules.content.techNews.TechNewsController
-com/project/devidea/modules/content/resume/ResumeController.java
- com.project.devidea.modules.content.resume.ResumeController
- com.project.devidea.modules.content.resume.ResumeController$ResumeDto
-com/project/devidea/modules/tagzone/zone/ZonesResponseDto.java
- com.project.devidea.modules.tagzone.zone.ZonesResponseDto
-com/project/devidea/modules/tagzone/tag/QTag.java
- com.project.devidea.modules.tagzone.tag.QTag
-com/project/devidea/modules/content/resume/form/project/ProjectRequest.java
- com.project.devidea.modules.content.resume.form.project.ProjectRequest
-com/project/devidea/modules/content/mentoring/MenteeRepository.java
- com.project.devidea.modules.content.mentoring.MenteeRepository
-com/project/devidea/modules/content/resume/career/CareerRepository.java
- com.project.devidea.modules.content.resume.career.CareerRepository
-com/project/devidea/modules/content/study/exception/AlreadyStudyExistsException.java
- com.project.devidea.modules.content.study.exception.AlreadyStudyExistsException
-com/project/devidea/modules/notification/QNotification.java
- com.project.devidea.modules.notification.QNotification
-com/project/devidea/infra/config/WebConfig.java
- com.project.devidea.infra.config.WebConfig
-com/project/devidea/modules/content/mentoring/MentorController.java
- com.project.devidea.modules.content.mentoring.MentorController
- com.project.devidea.modules.content.mentoring.MentorController$MentorDto
diff --git a/lombok.config b/lombok.config
index 8477c6d9..484d062d 100644
--- a/lombok.config
+++ b/lombok.config
@@ -1,3 +1,2 @@
#config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true
-
diff --git a/src/main/java/com/project/devidea/infra/config/security/CustomUserDetailService.java b/src/main/java/com/project/devidea/infra/config/security/CustomUserDetailService.java
index f6a79fd7..7345bcca 100644
--- a/src/main/java/com/project/devidea/infra/config/security/CustomUserDetailService.java
+++ b/src/main/java/com/project/devidea/infra/config/security/CustomUserDetailService.java
@@ -1,7 +1,7 @@
package com.project.devidea.infra.config.security;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.userdetails.UserDetails;
diff --git a/src/main/java/com/project/devidea/infra/config/security/LoginUser.java b/src/main/java/com/project/devidea/infra/config/security/LoginUser.java
index 141d4a40..79b4b821 100644
--- a/src/main/java/com/project/devidea/infra/config/security/LoginUser.java
+++ b/src/main/java/com/project/devidea/infra/config/security/LoginUser.java
@@ -1,7 +1,7 @@
package com.project.devidea.infra.config.security;
import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import lombok.Getter;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
diff --git a/src/main/java/com/project/devidea/infra/config/security/oauth/OAuthService.java b/src/main/java/com/project/devidea/infra/config/security/oauth/OAuthService.java
index 7e9ba9c2..96fc91c4 100644
--- a/src/main/java/com/project/devidea/infra/config/security/oauth/OAuthService.java
+++ b/src/main/java/com/project/devidea/infra/config/security/oauth/OAuthService.java
@@ -1,12 +1,11 @@
package com.project.devidea.infra.config.security.oauth;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.dto.Login;
import com.project.devidea.modules.account.dto.SignUp;
-import java.security.NoSuchAlgorithmException;
import java.util.Map;
-// todo : 구조 리팩토링
+
public interface OAuthService {
SignUp.Response signUpOAuth(SignUp.OAuthRequest request);
diff --git a/src/main/java/com/project/devidea/modules/InitService.java b/src/main/java/com/project/devidea/modules/InitService.java
index ee8b744e..7b007df2 100644
--- a/src/main/java/com/project/devidea/modules/InitService.java
+++ b/src/main/java/com/project/devidea/modules/InitService.java
@@ -3,7 +3,7 @@
import com.project.devidea.modules.environment.Environment;
import com.project.devidea.modules.environment.EnvironmentRepository;
import com.project.devidea.infra.config.security.SHA256;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.content.mentoring.Mentee;
import com.project.devidea.modules.content.mentoring.MenteeRepository;
@@ -130,8 +130,41 @@ void Setting(){
.quit(true)
.build();
+ Account quitTestAccount = Account.builder()
+ .nickname("탈퇴테스트회원")
+ .email("out@out.com")
+ .emailCheckToken("abcdefghijklmn")
+ .bio("bio")
+ .gender("남성")
+ .roles("ROLE_USER")
+ .name("고범석")
+ .password("{bcrypt}" + bCryptPasswordEncoder.encode(SHA256.encrypt("1234")))
+ .joinedAt(LocalDateTime.now())
+ .modifiedAt(LocalDateTime.now())
+ .interests(new HashSet<>())
+ .mainActivityZones(new HashSet<>())
+ .quit(false)
+ .build();
+
+ Account updateTestAccount = Account.builder()
+ .nickname("업뎃테스트")
+ .email("update@update.com")
+ .emailCheckToken("token123")
+ .bio("bio")
+ .gender("남성")
+ .roles("ROLE_USER")
+ .name("고범석")
+ .password("{bcrypt}" + bCryptPasswordEncoder.encode(SHA256.encrypt("1234")))
+ .joinedAt(LocalDateTime.now())
+ .modifiedAt(LocalDateTime.now())
+ .interests(new HashSet<>())
+ .mainActivityZones(new HashSet<>())
+ .quit(false)
+ .build();
+
studyRepository.saveAll(studySampleGenerator.generateDumy(30));
- accountRepository.saveAll(Arrays.asList(account,account2,account3, quitAccount));
+ accountRepository.saveAll(Arrays.asList(account,account2,account3, quitAccount, quitTestAccount,
+ updateTestAccount));
studyRepository.findAll().stream().forEach(study -> {
studyService.addMember(account,study, StudyRole.팀장);
studyService.addMember(account2,study, StudyRole.회원);
diff --git a/src/main/java/com/project/devidea/modules/account/AccountController.java b/src/main/java/com/project/devidea/modules/account/AccountController.java
deleted file mode 100644
index 81cea70f..00000000
--- a/src/main/java/com/project/devidea/modules/account/AccountController.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.project.devidea.modules.account;
-
-import com.project.devidea.infra.config.security.LoginUser;
-import com.project.devidea.infra.error.GlobalResponse;
-import com.project.devidea.modules.account.dto.*;
-import com.project.devidea.modules.account.services.AccountService;
-import com.project.devidea.modules.account.validator.SignUpOAuthRequestValidator;
-import com.project.devidea.modules.account.validator.SignUpRequestValidator;
-import io.swagger.annotations.ApiOperation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.annotation.AuthenticationPrincipal;
-import org.springframework.web.bind.WebDataBinder;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.security.NoSuchAlgorithmException;
-import java.util.Map;
-
-@RestController
-@RequiredArgsConstructor
-public class AccountController {
-
- // TODO : api 수정하기, Update쪽으로 들어가는게 맞는거 같음!
- @DeleteMapping("/account/quit")
- @ApiOperation("회원탈퇴")
- public ResponseEntity> quit(@AuthenticationPrincipal LoginUser loginUser) {
-
-// accountService.quit(loginUser);
- return new ResponseEntity<>(GlobalResponse.of(), HttpStatus.OK);
- }
-}
diff --git a/src/main/java/com/project/devidea/modules/account/controllers/CommonSignUpController.java b/src/main/java/com/project/devidea/modules/account/controllers/CommonSignUpController.java
index bfc8dc38..695c6463 100644
--- a/src/main/java/com/project/devidea/modules/account/controllers/CommonSignUpController.java
+++ b/src/main/java/com/project/devidea/modules/account/controllers/CommonSignUpController.java
@@ -2,10 +2,12 @@
import com.project.devidea.infra.error.GlobalResponse;
import com.project.devidea.modules.account.dto.SignUp;
-import com.project.devidea.modules.account.services.signUp.SignUpAndAuthenticationEmailService;
+import com.project.devidea.modules.account.services.signUp.AuthenticationEmailService;
+import com.project.devidea.modules.account.services.signUp.SignUpService;
import com.project.devidea.modules.account.validator.SignUpRequestValidator;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.WebDataBinder;
@@ -15,14 +17,13 @@
import javax.validation.Valid;
import java.io.IOException;
-/**
- * 일반 회원가입, 메일인증, 회원탈퇴 로직
- */
@RestController
@RequiredArgsConstructor
public class CommonSignUpController {
- private final SignUpAndAuthenticationEmailService signUpService;
+ @Qualifier("commonSignUpService")
+ private final SignUpService signUpService;
+ private final AuthenticationEmailService authenticationEmailService;
private final SignUpRequestValidator signUpRequestValidator;
@InitBinder("commonRequest")
@@ -41,7 +42,7 @@ public ResponseEntity> signUp(@Valid @RequestBody SignUp.CommonRequest commonR
@ApiOperation("일반 회원가입 메일 인증")
public void authenticateEmailToken(String email, String token, HttpServletResponse response) throws IOException {
- String url = signUpService.authenticateEmailToken(email, token);
+ String url = authenticationEmailService.authenticateEmailToken(email, token);
response.sendRedirect(url + "/sign-up/detail?token=" + token);
}
}
diff --git a/src/main/java/com/project/devidea/modules/account/controllers/GetAccountInfoController.java b/src/main/java/com/project/devidea/modules/account/controllers/GetAccountInfoController.java
new file mode 100644
index 00000000..f00f7543
--- /dev/null
+++ b/src/main/java/com/project/devidea/modules/account/controllers/GetAccountInfoController.java
@@ -0,0 +1,61 @@
+package com.project.devidea.modules.account.controllers;
+
+import com.project.devidea.infra.config.security.LoginUser;
+import com.project.devidea.infra.error.GlobalResponse;
+import com.project.devidea.modules.account.dto.Update;
+import com.project.devidea.modules.account.services.info.GetAccountInfoService;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/account/settings")
+public class GetAccountInfoController {
+
+ private final GetAccountInfoService getAccountInfoService;
+
+ @GetMapping("/profile")
+ @ApiOperation("프로필 조회")
+ public ResponseEntity> getProfile(@AuthenticationPrincipal LoginUser loginUser) {
+
+ return new ResponseEntity<>(GlobalResponse.of(getAccountInfoService.profile(loginUser)), HttpStatus.OK);
+ }
+
+ @GetMapping("/interests")
+ @ApiOperation("관심기술 조회")
+ public ResponseEntity> getInterests(@AuthenticationPrincipal LoginUser loginUser) {
+
+ return new ResponseEntity<>(GlobalResponse.of(getAccountInfoService.interests(loginUser)), HttpStatus.OK);
+ }
+
+ @GetMapping("/mainactivityzones")
+ @ApiOperation("활동지역 조회")
+ public ResponseEntity> getMainActivityZones(@AuthenticationPrincipal LoginUser loginUser) {
+
+ return new ResponseEntity<>(GlobalResponse.of(getAccountInfoService.mainActivityZones(loginUser)), HttpStatus.OK);
+ }
+
+ @GetMapping("/nickname")
+ @ApiOperation("닉네임 조회")
+ public ResponseEntity> getAccountNickname(@AuthenticationPrincipal LoginUser loginUser) {
+
+ Map map = getAccountInfoService.nickname(loginUser);
+ return new ResponseEntity<>(GlobalResponse.of(map), HttpStatus.OK);
+ }
+
+ @GetMapping("/notifications")
+ @ApiOperation("알림설정 조회")
+ public ResponseEntity> getAccountNotifications(@AuthenticationPrincipal LoginUser loginUser) {
+
+ Update.Notification response = getAccountInfoService.notification(loginUser);
+ return new ResponseEntity<>(GlobalResponse.of(response), HttpStatus.OK);
+ }
+}
diff --git a/src/main/java/com/project/devidea/modules/account/controllers/LoginController.java b/src/main/java/com/project/devidea/modules/account/controllers/LoginController.java
index 779c8891..e664189d 100644
--- a/src/main/java/com/project/devidea/modules/account/controllers/LoginController.java
+++ b/src/main/java/com/project/devidea/modules/account/controllers/LoginController.java
@@ -24,7 +24,7 @@ public class LoginController {
private final LoginService loginService;
private final LoginResponseUtil loginResponseUtil;
- @PostMapping("/")
+ @PostMapping
@ApiOperation("로그인")
public ResponseEntity> login(@Valid @RequestBody Login.Common login) throws Exception {
Map response = loginService.login(login);
diff --git a/src/main/java/com/project/devidea/modules/account/controllers/OAuthSignUpController.java b/src/main/java/com/project/devidea/modules/account/controllers/OAuthSignUpController.java
index 6178dec1..e49aa44c 100644
--- a/src/main/java/com/project/devidea/modules/account/controllers/OAuthSignUpController.java
+++ b/src/main/java/com/project/devidea/modules/account/controllers/OAuthSignUpController.java
@@ -6,6 +6,7 @@
import com.project.devidea.modules.account.validator.SignUpOAuthRequestValidator;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.WebDataBinder;
@@ -16,13 +17,11 @@
import javax.validation.Valid;
-/**
- * OAuth 회원가입 로직
- */
@RestController
@RequiredArgsConstructor
public class OAuthSignUpController {
+ @Qualifier("oAuthSignUpService")
private final SignUpService signUpService;
private final SignUpOAuthRequestValidator signUpOAuthRequestValidator;
@@ -31,7 +30,6 @@ public void initSignUpOAuthValidator(WebDataBinder binder) {
binder.addValidators(signUpOAuthRequestValidator);
}
- //TODO : OAuth
@PostMapping("/sign-up/oauth")
@ApiOperation("회원가입 - OAuth")
public ResponseEntity> signUpOAuth(@Valid @RequestBody SignUp.OAuthRequest oAuthRequest){
diff --git a/src/main/java/com/project/devidea/modules/account/AccountInfoController.java b/src/main/java/com/project/devidea/modules/account/controllers/UpdateAccountInfoController.java
similarity index 56%
rename from src/main/java/com/project/devidea/modules/account/AccountInfoController.java
rename to src/main/java/com/project/devidea/modules/account/controllers/UpdateAccountInfoController.java
index 541634d5..ed8a4863 100644
--- a/src/main/java/com/project/devidea/modules/account/AccountInfoController.java
+++ b/src/main/java/com/project/devidea/modules/account/controllers/UpdateAccountInfoController.java
@@ -1,9 +1,9 @@
-package com.project.devidea.modules.account;
+package com.project.devidea.modules.account.controllers;
import com.project.devidea.infra.config.security.LoginUser;
import com.project.devidea.infra.error.GlobalResponse;
-import com.project.devidea.modules.account.dto.*;
-import com.project.devidea.modules.account.services.AccountService;
+import com.project.devidea.modules.account.dto.Update;
+import com.project.devidea.modules.account.services.info.UpdateAccountInfoService;
import com.project.devidea.modules.account.validator.NicknameValidator;
import com.project.devidea.modules.account.validator.PasswordValidator;
import io.swagger.annotations.ApiOperation;
@@ -15,17 +15,16 @@
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
-import java.util.Map;
+/**
+ * 회원 정보 수정
+ */
@RestController
@RequiredArgsConstructor
@RequestMapping("/account/settings")
-public class AccountInfoController {
+public class UpdateAccountInfoController {
- /**
- * TODO : GetInfoAccount, UpdateInfoAccount로 분리하기, 이유 > 관심사가 다름
- */
- private final AccountService accountService;
+ private final UpdateAccountInfoService updateAccountInfoService;
private final PasswordValidator updatePasswordValidator;
private final NicknameValidator nicknameValidator;
@@ -39,19 +38,12 @@ public void initNicknameValidator(WebDataBinder binder) {
binder.addValidators(nicknameValidator);
}
- @GetMapping("/profile")
- @ApiOperation("프로필 조회")
- public ResponseEntity> getProfile(@AuthenticationPrincipal LoginUser loginUser) {
-
- return new ResponseEntity<>(GlobalResponse.of(accountService.getProfile(loginUser)), HttpStatus.OK);
- }
-
@PatchMapping("/profile")
@ApiOperation("프로필 수정")
public ResponseEntity> updateProfile(@AuthenticationPrincipal LoginUser loginUser,
@RequestBody Update.ProfileRequest request) {
- accountService.updateProfile(loginUser, request);
+ updateAccountInfoService.profile(loginUser, request);
return new ResponseEntity<>(GlobalResponse.of(), HttpStatus.OK);
}
@@ -60,71 +52,48 @@ public ResponseEntity> updateProfile(@AuthenticationPrincipal LoginUser loginU
public ResponseEntity> updatePassword(@AuthenticationPrincipal LoginUser loginUser,
@Valid @RequestBody Update.PasswordRequest request) {
- accountService.updatePassword(loginUser, request);
+ updateAccountInfoService.password(loginUser, request);
return new ResponseEntity<>(GlobalResponse.of(), HttpStatus.OK);
}
- @GetMapping("/interests")
- @ApiOperation("관심기술 조회")
- public ResponseEntity> getInterests(@AuthenticationPrincipal LoginUser loginUser) {
-
- return new ResponseEntity<>(GlobalResponse.of(accountService.getAccountInterests(loginUser)), HttpStatus.OK);
- }
-
@PatchMapping("/interests")
@ApiOperation("관심기술 수정")
public ResponseEntity> updateInterests(@AuthenticationPrincipal LoginUser loginUser,
@RequestBody Update.Interest request) {
- accountService.updateAccountInterests(loginUser, request);
+ updateAccountInfoService.interest(loginUser, request);
return new ResponseEntity<>(GlobalResponse.of(), HttpStatus.OK);
}
- @GetMapping("/mainactivityzones")
- @ApiOperation("활동지역 조회")
- public ResponseEntity> getMainActivityZones(@AuthenticationPrincipal LoginUser loginUser) {
-
- return new ResponseEntity<>(GlobalResponse.of(accountService.getAccountMainActivityZones(loginUser)), HttpStatus.OK);
- }
-
@PatchMapping("/mainactivityzones")
@ApiOperation("활동지역 수정")
public ResponseEntity> updateMainActivityZones(@AuthenticationPrincipal LoginUser loginUser,
@RequestBody Update.MainActivityZone request) {
- accountService.updateAccountMainActivityZones(loginUser, request);
+ updateAccountInfoService.mainActivityZones(loginUser, request);
return new ResponseEntity<>(GlobalResponse.of(), HttpStatus.OK);
}
- @GetMapping("/nickname")
- @ApiOperation("닉네임 조회")
- public ResponseEntity> getAccountNickname(@AuthenticationPrincipal LoginUser loginUser) {
-
- Map map = accountService.getAccountNickname(loginUser);
- return new ResponseEntity<>(GlobalResponse.of(map), HttpStatus.OK);
- }
-
@PatchMapping("/nickname")
@ApiOperation("닉네임 수정")
public ResponseEntity> updateAccountNickname(@AuthenticationPrincipal LoginUser loginUser,
@Valid @RequestBody Update.NicknameRequest request){
- accountService.updateAccountNickname(loginUser, request);
+ updateAccountInfoService.nickname(loginUser, request);
return new ResponseEntity<>(GlobalResponse.of(), HttpStatus.OK);
}
- @GetMapping("/notifications")
- @ApiOperation("알림설정 조회")
- public ResponseEntity> getAccountNotifications(@AuthenticationPrincipal LoginUser loginUser) {
-
- Update.Notification response = accountService.getAccountNotification(loginUser);
- return new ResponseEntity<>(GlobalResponse.of(response), HttpStatus.OK);
- }
-
@PatchMapping("/notifications")
@ApiOperation("알림설정 수정")
public ResponseEntity> updateAccountNotifications(@AuthenticationPrincipal LoginUser loginUser,
- @RequestBody Update.Notification request) {
+ @RequestBody Update.Notification request) {
+
+ updateAccountInfoService.notification(loginUser, request);
+ return new ResponseEntity<>(GlobalResponse.of(), HttpStatus.OK);
+ }
- accountService.updateAccountNotification(loginUser, request);
+ @DeleteMapping("/quit")
+ @ApiOperation("회원탈퇴")
+ public ResponseEntity> quit(@AuthenticationPrincipal LoginUser loginUser) {
+ updateAccountInfoService.quit(loginUser);
return new ResponseEntity<>(GlobalResponse.of(), HttpStatus.OK);
}
}
diff --git a/src/main/java/com/project/devidea/modules/account/Account.java b/src/main/java/com/project/devidea/modules/account/domains/Account.java
similarity index 99%
rename from src/main/java/com/project/devidea/modules/account/Account.java
rename to src/main/java/com/project/devidea/modules/account/domains/Account.java
index 4ae1a716..89c7a8e8 100644
--- a/src/main/java/com/project/devidea/modules/account/Account.java
+++ b/src/main/java/com/project/devidea/modules/account/domains/Account.java
@@ -1,4 +1,4 @@
-package com.project.devidea.modules.account;
+package com.project.devidea.modules.account.domains;
import com.project.devidea.infra.error.exception.ErrorCode;
import com.project.devidea.modules.account.dto.SignUp;
diff --git a/src/main/java/com/project/devidea/modules/account/Interest.java b/src/main/java/com/project/devidea/modules/account/domains/Interest.java
similarity index 84%
rename from src/main/java/com/project/devidea/modules/account/Interest.java
rename to src/main/java/com/project/devidea/modules/account/domains/Interest.java
index 8710d6f2..89758d7f 100644
--- a/src/main/java/com/project/devidea/modules/account/Interest.java
+++ b/src/main/java/com/project/devidea/modules/account/domains/Interest.java
@@ -1,5 +1,6 @@
-package com.project.devidea.modules.account;
+package com.project.devidea.modules.account.domains;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.tagzone.tag.Tag;
import lombok.*;
diff --git a/src/main/java/com/project/devidea/modules/account/MainActivityZone.java b/src/main/java/com/project/devidea/modules/account/domains/MainActivityZone.java
similarity index 82%
rename from src/main/java/com/project/devidea/modules/account/MainActivityZone.java
rename to src/main/java/com/project/devidea/modules/account/domains/MainActivityZone.java
index 738988bb..0d789cc7 100644
--- a/src/main/java/com/project/devidea/modules/account/MainActivityZone.java
+++ b/src/main/java/com/project/devidea/modules/account/domains/MainActivityZone.java
@@ -1,5 +1,6 @@
-package com.project.devidea.modules.account;
+package com.project.devidea.modules.account.domains;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.tagzone.zone.Zone;
import lombok.*;
diff --git a/src/main/java/com/project/devidea/modules/account/repository/AccountRepository.java b/src/main/java/com/project/devidea/modules/account/repository/AccountRepository.java
index d32d4413..8f2557be 100644
--- a/src/main/java/com/project/devidea/modules/account/repository/AccountRepository.java
+++ b/src/main/java/com/project/devidea/modules/account/repository/AccountRepository.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.account.repository;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
diff --git a/src/main/java/com/project/devidea/modules/account/repository/AccountRepositoryCustom.java b/src/main/java/com/project/devidea/modules/account/repository/AccountRepositoryCustom.java
index b01860ea..bc28f263 100644
--- a/src/main/java/com/project/devidea/modules/account/repository/AccountRepositoryCustom.java
+++ b/src/main/java/com/project/devidea/modules/account/repository/AccountRepositoryCustom.java
@@ -1,8 +1,6 @@
package com.project.devidea.modules.account.repository;
-import com.project.devidea.modules.account.Account;
-
-import java.util.Optional;
+import com.project.devidea.modules.account.domains.Account;
public interface AccountRepositoryCustom {
diff --git a/src/main/java/com/project/devidea/modules/account/repository/AccountRepositoryCustomImpl.java b/src/main/java/com/project/devidea/modules/account/repository/AccountRepositoryCustomImpl.java
index f3947557..a8436723 100644
--- a/src/main/java/com/project/devidea/modules/account/repository/AccountRepositoryCustomImpl.java
+++ b/src/main/java/com/project/devidea/modules/account/repository/AccountRepositoryCustomImpl.java
@@ -1,17 +1,12 @@
package com.project.devidea.modules.account.repository;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.QAccount;
-import com.project.devidea.modules.account.QInterest;
-import com.project.devidea.modules.account.QMainActivityZone;
+import com.project.devidea.modules.account.domains.Account;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
-import java.util.Optional;
-
-import static com.project.devidea.modules.account.QAccount.*;
-import static com.project.devidea.modules.account.QInterest.*;
-import static com.project.devidea.modules.account.QMainActivityZone.*;
+import static com.project.devidea.modules.account.domains.QAccount.*;
+import static com.project.devidea.modules.account.domains.QInterest.*;
+import static com.project.devidea.modules.account.domains.QMainActivityZone.*;
@RequiredArgsConstructor
public class AccountRepositoryCustomImpl implements AccountRepositoryCustom {
diff --git a/src/main/java/com/project/devidea/modules/account/repository/InterestRepository.java b/src/main/java/com/project/devidea/modules/account/repository/InterestRepository.java
index 9490a3cd..e34d2a60 100644
--- a/src/main/java/com/project/devidea/modules/account/repository/InterestRepository.java
+++ b/src/main/java/com/project/devidea/modules/account/repository/InterestRepository.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.account.repository;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.Interest;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
import com.project.devidea.modules.tagzone.tag.Tag;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/src/main/java/com/project/devidea/modules/account/repository/MainActivityZoneRepository.java b/src/main/java/com/project/devidea/modules/account/repository/MainActivityZoneRepository.java
index 42a5a0d6..d49d4dd3 100644
--- a/src/main/java/com/project/devidea/modules/account/repository/MainActivityZoneRepository.java
+++ b/src/main/java/com/project/devidea/modules/account/repository/MainActivityZoneRepository.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.account.repository;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.MainActivityZone;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.MainActivityZone;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
diff --git a/src/main/java/com/project/devidea/modules/account/services/AccountBasicService.java b/src/main/java/com/project/devidea/modules/account/services/AccountBasicService.java
deleted file mode 100644
index 4be284ea..00000000
--- a/src/main/java/com/project/devidea/modules/account/services/AccountBasicService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.project.devidea.modules.account.services;
-
-import com.project.devidea.infra.config.security.LoginUser;
-import com.project.devidea.modules.account.dto.Login;
-import com.project.devidea.modules.account.dto.SignUp;
-import java.util.Map;
-
-public interface AccountBasicService {
-
- // todo : OAuth, 일반 분리
- SignUp.Response signUp(SignUp.CommonRequest signUpRequestDto);
-
- // todo : OAuth, 일반 분리
- Map login(Login.Common login) throws Exception;
-
- // todo : 로직 같음
- void saveSignUpDetail(SignUp.DetailRequest req);
-
- // todo : 일반 회원만
- String authenticateEmailToken(String email, String token);
-
- // todo : 로직 같음
- void quit(LoginUser loginUser);
-}
diff --git a/src/main/java/com/project/devidea/modules/account/services/AccountInfoService.java b/src/main/java/com/project/devidea/modules/account/services/AccountInfoService.java
deleted file mode 100644
index 008cd5fd..00000000
--- a/src/main/java/com/project/devidea/modules/account/services/AccountInfoService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.project.devidea.modules.account.services;
-
-import com.project.devidea.infra.config.security.LoginUser;
-import com.project.devidea.modules.account.dto.Update;
-
-import java.util.Map;
-// todo : 구조 리팩토링
-public interface AccountInfoService {
-
- Update.ProfileResponse getProfile(LoginUser loginUser);
-
- void updateProfile(LoginUser loginUser, Update.ProfileRequest request);
-
- void updatePassword(LoginUser loginUser, Update.PasswordRequest request);
-
- Update.Interest getAccountInterests(LoginUser loginUser);
-
- void updateAccountInterests(LoginUser loginUser, Update.Interest request);
-
- Update.MainActivityZone getAccountMainActivityZones(LoginUser loginUser);
-
- void updateAccountMainActivityZones(LoginUser loginUser, Update.MainActivityZone request);
-
- Map getAccountNickname(LoginUser loginUser);
-
- void updateAccountNickname(LoginUser loginUser, Update.NicknameRequest request);
-
- Update.Notification getAccountNotification(LoginUser loginUser);
-
- void updateAccountNotification(LoginUser loginUser, Update.Notification request);
-
-}
diff --git a/src/main/java/com/project/devidea/modules/account/services/AccountService.java b/src/main/java/com/project/devidea/modules/account/services/AccountService.java
deleted file mode 100644
index e15067df..00000000
--- a/src/main/java/com/project/devidea/modules/account/services/AccountService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.project.devidea.modules.account.services;
-
-import com.project.devidea.infra.config.security.oauth.OAuthService;
-
-public interface AccountService extends OAuthService, AccountBasicService, AccountInfoService {
-
-
-}
diff --git a/src/main/java/com/project/devidea/modules/account/services/Delete_AccountServiceImpl.java b/src/main/java/com/project/devidea/modules/account/services/Delete_AccountServiceImpl.java
deleted file mode 100644
index 227d96d7..00000000
--- a/src/main/java/com/project/devidea/modules/account/services/Delete_AccountServiceImpl.java
+++ /dev/null
@@ -1,206 +0,0 @@
-//package com.project.devidea.modules.account.service;
-//
-//import com.project.devidea.modules.account.Account;
-//import com.project.devidea.modules.account.Interest;
-//import com.project.devidea.modules.account.MainActivityZone;
-//import com.project.devidea.modules.environment.EnvironmentRepository;
-//import com.project.devidea.infra.config.security.LoginUser;
-//import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
-//import com.project.devidea.infra.error.exception.ErrorCode;
-//import com.project.devidea.modules.account.dto.*;
-//import com.project.devidea.modules.account.event.SendEmailToken;
-//import com.project.devidea.modules.account.exception.AccountException;
-//import com.project.devidea.modules.account.repository.AccountRepository;
-//import com.project.devidea.modules.account.repository.InterestRepository;
-//import com.project.devidea.modules.account.repository.MainActivityZoneRepository;
-//import com.project.devidea.modules.tagzone.tag.Tag;
-//import com.project.devidea.modules.tagzone.tag.TagRepository;
-//import com.project.devidea.modules.tagzone.zone.Zone;
-//import com.project.devidea.modules.tagzone.zone.ZoneRepository;
-//import lombok.RequiredArgsConstructor;
-//import org.modelmapper.ModelMapper;
-//import org.springframework.context.ApplicationEventPublisher;
-//import org.springframework.security.authentication.AuthenticationManager;
-//import org.springframework.security.authentication.BadCredentialsException;
-//import org.springframework.security.authentication.DisabledException;
-//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-//import org.springframework.stereotype.Service;
-//import org.springframework.transaction.annotation.Transactional;
-//
-//import java.security.NoSuchAlgorithmException;
-//import java.util.*;
-//import java.util.stream.Collectors;
-//
-//@Service
-//@Transactional
-//@RequiredArgsConstructor
-//public class Delete_AccountServiceImpl {
-//
-// // TODO : 구현체가 너무 많은 것을 의존하고 있다. 적절히 분리하기
-// private final BCryptPasswordEncoder passwordEncoder;
-// private final AccountRepository accountRepository;
-// private final AuthenticationManager authenticationManager;
-// private final JwtTokenUtil jwtTokenUtil;
-// private final ModelMapper modelMapper;
-// private final ZoneRepository zoneRepository;
-// private final TagRepository tagRepository;
-// private final InterestRepository interestRepository;
-// private final MainActivityZoneRepository mainActivityZoneRepository;
-// private final ApplicationEventPublisher publisher;
-// private final EnvironmentRepository environmentRepository;
-// private final String OAUTH_PASSWORD = "dev_idea_oauth_password";
-//
-
-//
-// // TODO : LoginServiceImpl 공통로직
-// private Map createToken(String email, JwtTokenUtil tokenUtil){
-// String jwtToken = tokenUtil.generateToken(email);
-// return tokenUtil.createTokenMap(jwtToken);
-// }
-// // TODO : LoginServiceImpl 공통로직
-// @Override
-// public Map login(Login.Common login) throws Exception {
-// authenticate(login.getEmail(), login.getPassword());
-// return createLoginResponse(createToken(login.getEmail(), jwtTokenUtil));
-// }
-//
-// // TODO : OAuthLoginServiceImpl
-// @Override
-// public Map loginOAuth(Login.OAuth login) throws Exception {
-// Login.Common request = Login.Common.builder()
-// .email(login.getEmail())
-// .password(OAUTH_PASSWORD).build();
-// login(request);
-// return createLoginResponse(createToken(request.getEmail(), jwtTokenUtil));
-// }
-//
-// // TODO : LoginServiceImpl 공통로직
-// private Map createLoginResponse(Map response) {
-// String email = jwtTokenUtil.getUsernameFromToken(response.get("token").substring(7));
-// Account account = accountRepository.findByEmail(email).get();
-// response.put("name", account.getName());
-// response.put("nickname", account.getNickname());
-// if (!account.isSaveDetail()) {
-// response.put("savedDetail", "false");
-// response.put("emailCheckToken", account.getEmailCheckToken());
-// } else {
-// response.put("savedDetail", "true");
-// }
-// return response;
-// }
-//
-// // TODO : LoginServiceImpl 공통로직
-// private void authenticate(String email, String password) throws Exception {
-// try {
-// authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(email, password));
-// } catch (DisabledException e) {
-// throw new DisabledException("이미 탈퇴한 회원입니다.", e);
-// } catch (BadCredentialsException e) {
-// throw new AccountException(ErrorCode.OK, "가입되지 않거나, 메일과 비밀번호가 맞지 않습니다.",
-// Login.Response.builder().savedDetail(false).emailCheckToken(null).build());
-// }
-// }
-//// TODO 여기서 부터는 Update 영역=======================================================================================
-// @Override
-// @Transactional(readOnly = true)
-// public Update.ProfileResponse getProfile(LoginUser loginUser) {
-// return modelMapper.map(loginUser.getAccount(), Update.ProfileResponse.class);
-// }
-//
-// @Override
-// public void updateProfile(LoginUser loginUser, Update.ProfileRequest request) {
-// Account account = accountRepository.findByEmail(loginUser.getUsername()).orElseThrow();
-// account.updateProfile(request);
-// }
-//
-// @Override
-// public void updatePassword(LoginUser loginUser,
-// Update.PasswordRequest request) {
-// Account account = accountRepository.findByEmail(loginUser.getUsername()).orElseThrow();
-// account.updatePassword("{bcrypt}" + passwordEncoder.encode(request.getPassword()));
-// }
-//
-// @Override
-// public Update.Interest getAccountInterests(LoginUser loginUser) {
-// Set interests =
-// accountRepository.findByEmailWithInterests(loginUser.getUsername()).getInterests();
-// return Update.Interest.builder().interests(
-// interests.stream()
-// .map(interest -> interest.getTag().getFirstName())
-// .collect(Collectors.toList())).build();
-// }
-//
-// @Override
-// public void updateAccountInterests(LoginUser loginUser, Update.Interest request) {
-//
-// Account account = accountRepository.findByEmailWithInterests(loginUser.getUsername());
-// List tags = tagRepository.findByFirstNameIn(request.getInterests());
-// Set interests = getInterests(account, tags);
-//
-//// 기존에 있던 정보들 삭제
-// interestRepository.deleteByAccount(account);
-//
-//// 연관관계 메서드
-// account.updateInterests(interests);
-// interestRepository.saveAll(interests);
-// }
-//
-// @Override
-// public Update.MainActivityZone getAccountMainActivityZones(LoginUser loginUser) {
-// Set mainActivityZones =
-// accountRepository.findByEmailWithMainActivityZones(loginUser.getUsername()).getMainActivityZones();
-// return Update.MainActivityZone.builder()
-// .mainActivityZones(
-// mainActivityZones.stream().map(zone -> zone.getZone().toString()).collect(Collectors.toList()))
-// .build();
-// }
-//
-// @Override
-// public void updateAccountMainActivityZones(LoginUser loginUser,
-// Update.MainActivityZone request) {
-// Account account = accountRepository.findByEmailWithMainActivityZones(loginUser.getUsername());
-// Map> map = request.splitCityAndProvince();
-// List zones
-// = zoneRepository.findByCityInAndProvinceIn(map.get("city"), map.get("province"));
-// Set mainActivityZones = getMainActivityZones(account, zones);
-//
-//// 기존에 있던 정보들 삭제
-// mainActivityZoneRepository.deleteByAccount(account);
-//
-//// 연관관계 메서드
-// account.updateMainActivityZones(mainActivityZones);
-// mainActivityZoneRepository.saveAll(mainActivityZones);
-// }
-//
-// @Override
-// public Map getAccountNickname(LoginUser loginUser) {
-// Map map = new HashMap<>();
-// map.put("nickname", loginUser.getAccount().getNickname());
-// return map;
-// }
-//
-// @Override
-// public void updateAccountNickname(LoginUser loginUser, Update.NicknameRequest request) {
-// Account account = accountRepository.findByEmail(loginUser.getUsername()).orElseThrow();
-// account.changeNickname(request.getNickname());
-// }
-//
-// @Override
-// public Update.Notification getAccountNotification(LoginUser loginUser) {
-// Account account = loginUser.getAccount();
-// return modelMapper.map(account, Update.Notification.class);
-// }
-//
-// @Override
-// public void updateAccountNotification(LoginUser loginUser, Update.Notification request) {
-// Account account = accountRepository.findByEmail(loginUser.getUsername()).orElseThrow();
-// account.updateNotifications(request);
-// }
-//
-// @Override
-// public void quit(LoginUser loginUser) {
-// Account account = accountRepository.findByEmail(loginUser.getUsername()).orElseThrow();
-// account.changeToQuit();
-// }
-//}
diff --git a/src/main/java/com/project/devidea/modules/account/services/info/GetAccountInfoService.java b/src/main/java/com/project/devidea/modules/account/services/info/GetAccountInfoService.java
new file mode 100644
index 00000000..ea452e68
--- /dev/null
+++ b/src/main/java/com/project/devidea/modules/account/services/info/GetAccountInfoService.java
@@ -0,0 +1,19 @@
+package com.project.devidea.modules.account.services.info;
+
+import com.project.devidea.infra.config.security.LoginUser;
+import com.project.devidea.modules.account.dto.Update;
+
+import java.util.Map;
+
+public interface GetAccountInfoService {
+
+ Update.ProfileResponse profile(LoginUser loginUser);
+
+ Update.Interest interests(LoginUser loginUser);
+
+ Update.MainActivityZone mainActivityZones(LoginUser loginUser);
+
+ Map nickname(LoginUser loginUser);
+
+ Update.Notification notification(LoginUser loginUser);
+}
diff --git a/src/main/java/com/project/devidea/modules/account/services/info/GetAccountInfoServiceImpl.java b/src/main/java/com/project/devidea/modules/account/services/info/GetAccountInfoServiceImpl.java
new file mode 100644
index 00000000..0884e3ba
--- /dev/null
+++ b/src/main/java/com/project/devidea/modules/account/services/info/GetAccountInfoServiceImpl.java
@@ -0,0 +1,64 @@
+package com.project.devidea.modules.account.services.info;
+
+import com.project.devidea.infra.config.security.LoginUser;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
+import com.project.devidea.modules.account.dto.Update;
+import com.project.devidea.modules.account.repository.AccountRepository;
+import lombok.RequiredArgsConstructor;
+import org.modelmapper.ModelMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Service
+@Transactional
+@RequiredArgsConstructor
+public class GetAccountInfoServiceImpl implements GetAccountInfoService {
+
+ private final ModelMapper modelMapper;
+ private final AccountRepository accountRepository;
+
+ @Override
+ public Update.ProfileResponse profile(LoginUser loginUser) {
+ return modelMapper.map(loginUser.getAccount(), Update.ProfileResponse.class);
+ }
+
+ @Override
+ public Update.Interest interests(LoginUser loginUser) {
+ Set interests =
+ accountRepository.findByEmailWithInterests(loginUser.getUsername()).getInterests();
+ return Update.Interest.builder().interests(
+ interests.stream()
+ .map(interest -> interest.getTag().getFirstName())
+ .collect(Collectors.toList())).build();
+ }
+
+ @Override
+ public Update.MainActivityZone mainActivityZones(LoginUser loginUser) {
+ Set mainActivityZones =
+ accountRepository.findByEmailWithMainActivityZones(loginUser.getUsername()).getMainActivityZones();
+ return Update.MainActivityZone.builder()
+ .mainActivityZones(
+ mainActivityZones.stream().map(zone -> zone.getZone().toString()).collect(Collectors.toList()))
+ .build();
+ }
+
+ @Override
+ public Map nickname(LoginUser loginUser) {
+ Map map = new HashMap<>();
+ map.put("nickname", loginUser.getAccount().getNickname());
+ return map;
+ }
+
+ @Override
+ public Update.Notification notification(LoginUser loginUser) {
+ Account account = loginUser.getAccount();
+ return modelMapper.map(account, Update.Notification.class);
+ }
+}
diff --git a/src/main/java/com/project/devidea/modules/account/services/info/UpdateAccountInfoService.java b/src/main/java/com/project/devidea/modules/account/services/info/UpdateAccountInfoService.java
new file mode 100644
index 00000000..733745e8
--- /dev/null
+++ b/src/main/java/com/project/devidea/modules/account/services/info/UpdateAccountInfoService.java
@@ -0,0 +1,21 @@
+package com.project.devidea.modules.account.services.info;
+
+import com.project.devidea.infra.config.security.LoginUser;
+import com.project.devidea.modules.account.dto.Update;
+
+public interface UpdateAccountInfoService {
+
+ void profile(LoginUser loginUser, Update.ProfileRequest request);
+
+ void password(LoginUser loginUser, Update.PasswordRequest request);
+
+ void interest(LoginUser loginUser, Update.Interest request);
+
+ void mainActivityZones(LoginUser loginUser, Update.MainActivityZone request);
+
+ void nickname(LoginUser loginUser, Update.NicknameRequest request);
+
+ void notification(LoginUser loginUser, Update.Notification request);
+
+ void quit(LoginUser loginUser);
+}
diff --git a/src/main/java/com/project/devidea/modules/account/services/info/UpdateAccountInfoServiceImpl.java b/src/main/java/com/project/devidea/modules/account/services/info/UpdateAccountInfoServiceImpl.java
new file mode 100644
index 00000000..f5ab9a87
--- /dev/null
+++ b/src/main/java/com/project/devidea/modules/account/services/info/UpdateAccountInfoServiceImpl.java
@@ -0,0 +1,97 @@
+package com.project.devidea.modules.account.services.info;
+
+import com.project.devidea.infra.config.security.LoginUser;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
+import com.project.devidea.modules.account.dto.Update;
+import com.project.devidea.modules.account.repository.AccountRepository;
+import com.project.devidea.modules.account.repository.InterestRepository;
+import com.project.devidea.modules.account.repository.MainActivityZoneRepository;
+import com.project.devidea.modules.account.util.AccountToManyUtil;
+import com.project.devidea.modules.tagzone.tag.Tag;
+import com.project.devidea.modules.tagzone.tag.TagRepository;
+import com.project.devidea.modules.tagzone.zone.Zone;
+import com.project.devidea.modules.tagzone.zone.ZoneRepository;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+@Service
+@Transactional
+@RequiredArgsConstructor
+public class UpdateAccountInfoServiceImpl implements UpdateAccountInfoService {
+
+ private final AccountRepository accountRepository;
+ private final BCryptPasswordEncoder passwordEncoder;
+ private final TagRepository tagRepository;
+ private final InterestRepository interestRepository;
+ private final ZoneRepository zoneRepository;
+ private final MainActivityZoneRepository mainActivityZoneRepository;
+ private final AccountToManyUtil accountToManyUtil;
+
+ @Override
+ public void profile(LoginUser loginUser, Update.ProfileRequest request) {
+ Account account = accountRepository.findByEmail(loginUser.getUsername()).orElseThrow();
+ account.updateProfile(request);
+ }
+
+ @Override
+ public void password(LoginUser loginUser, Update.PasswordRequest request) {
+ Account account = accountRepository.findByEmail(loginUser.getUsername()).orElseThrow();
+ account.updatePassword("{bcrypt}" + passwordEncoder.encode(request.getPassword()));
+ }
+
+ @Override
+ public void interest(LoginUser loginUser, Update.Interest request) {
+ Account account = accountRepository.findByEmailWithInterests(loginUser.getUsername());
+ List tags = tagRepository.findByFirstNameIn(request.getInterests());
+ Set interests = accountToManyUtil.createInterestSet(account, tags);
+
+// 기존에 있던 정보들 삭제
+ interestRepository.deleteByAccount(account);
+
+// 연관관계 메서드
+ account.updateInterests(interests);
+ interestRepository.saveAll(interests);
+ }
+
+ @Override
+ public void mainActivityZones(LoginUser loginUser, Update.MainActivityZone request) {
+ Account account = accountRepository.findByEmailWithMainActivityZones(loginUser.getUsername());
+ Map> map = request.splitCityAndProvince();
+ List zones
+ = zoneRepository.findByCityInAndProvinceIn(map.get("city"), map.get("province"));
+ Set mainActivityZones = accountToManyUtil.createMainActivityZoneSet(account, zones);
+
+// 기존에 있던 정보들 삭제
+ mainActivityZoneRepository.deleteByAccount(account);
+
+// 연관관계 메서드
+ account.updateMainActivityZones(mainActivityZones);
+ mainActivityZoneRepository.saveAll(mainActivityZones);
+ }
+
+ @Override
+ public void nickname(LoginUser loginUser, Update.NicknameRequest request) {
+ Account account = accountRepository.findByEmail(loginUser.getUsername()).orElseThrow();
+ account.changeNickname(request.getNickname());
+ }
+
+ @Override
+ public void notification(LoginUser loginUser, Update.Notification request) {
+ Account account = accountRepository.findByEmail(loginUser.getUsername()).orElseThrow();
+ account.updateNotifications(request);
+ }
+
+ @Override
+ public void quit(LoginUser loginUser) {
+ Account account = accountRepository.findByEmail(loginUser.getUsername()).orElseThrow();
+ account.changeToQuit();
+ }
+}
diff --git a/src/main/java/com/project/devidea/modules/account/services/interest/InterestService.java b/src/main/java/com/project/devidea/modules/account/services/interest/InterestService.java
index 5cad22e3..21ba4dd7 100644
--- a/src/main/java/com/project/devidea/modules/account/services/interest/InterestService.java
+++ b/src/main/java/com/project/devidea/modules/account/services/interest/InterestService.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.account.services.interest;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.Interest;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
import com.project.devidea.modules.tagzone.tag.Tag;
import java.util.HashSet;
diff --git a/src/main/java/com/project/devidea/modules/account/services/interest/InterestServiceImpl.java b/src/main/java/com/project/devidea/modules/account/services/interest/InterestServiceImpl.java
index d3a730e5..7d8f297b 100644
--- a/src/main/java/com/project/devidea/modules/account/services/interest/InterestServiceImpl.java
+++ b/src/main/java/com/project/devidea/modules/account/services/interest/InterestServiceImpl.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.account.services.interest;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.Interest;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
import com.project.devidea.modules.account.repository.InterestRepository;
import com.project.devidea.modules.tagzone.tag.Tag;
import com.project.devidea.modules.tagzone.tag.TagService;
diff --git a/src/main/java/com/project/devidea/modules/account/services/login/LoginServiceImpl.java b/src/main/java/com/project/devidea/modules/account/services/login/LoginServiceImpl.java
index 4bc8d6a9..d28e5555 100644
--- a/src/main/java/com/project/devidea/modules/account/services/login/LoginServiceImpl.java
+++ b/src/main/java/com/project/devidea/modules/account/services/login/LoginServiceImpl.java
@@ -1,11 +1,8 @@
package com.project.devidea.modules.account.services.login;
-import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
import com.project.devidea.infra.error.exception.ErrorCode;
-import com.project.devidea.modules.account.Account;
import com.project.devidea.modules.account.dto.Login;
import com.project.devidea.modules.account.exception.AccountException;
-import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.account.util.LoginServiceUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.AuthenticationManager;
diff --git a/src/main/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneService.java b/src/main/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneService.java
index 8ac40e86..7c2b9f1d 100644
--- a/src/main/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneService.java
+++ b/src/main/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneService.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.account.services.mainActivityZone;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.MainActivityZone;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.MainActivityZone;
import com.project.devidea.modules.tagzone.zone.Zone;
import java.util.HashSet;
diff --git a/src/main/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneServiceImpl.java b/src/main/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneServiceImpl.java
index 4815d6d5..45905c50 100644
--- a/src/main/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneServiceImpl.java
+++ b/src/main/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneServiceImpl.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.account.services.mainActivityZone;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.MainActivityZone;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.MainActivityZone;
import com.project.devidea.modules.account.repository.MainActivityZoneRepository;
import com.project.devidea.modules.tagzone.zone.Zone;
import com.project.devidea.modules.tagzone.zone.ZoneService;
diff --git a/src/main/java/com/project/devidea/modules/account/services/signUp/SignUpAndAuthenticationEmailService.java b/src/main/java/com/project/devidea/modules/account/services/signUp/AuthenticationEmailService.java
similarity index 62%
rename from src/main/java/com/project/devidea/modules/account/services/signUp/SignUpAndAuthenticationEmailService.java
rename to src/main/java/com/project/devidea/modules/account/services/signUp/AuthenticationEmailService.java
index fb8c653a..3f327e95 100644
--- a/src/main/java/com/project/devidea/modules/account/services/signUp/SignUpAndAuthenticationEmailService.java
+++ b/src/main/java/com/project/devidea/modules/account/services/signUp/AuthenticationEmailService.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.account.services.signUp;
-public interface SignUpAndAuthenticationEmailService extends SignUpService{
+public interface AuthenticationEmailService {
String authenticateEmailToken(String email, String token);
}
diff --git a/src/main/java/com/project/devidea/modules/account/services/signUp/AuthenticationEmailServiceImpl.java b/src/main/java/com/project/devidea/modules/account/services/signUp/AuthenticationEmailServiceImpl.java
new file mode 100644
index 00000000..9e3e0375
--- /dev/null
+++ b/src/main/java/com/project/devidea/modules/account/services/signUp/AuthenticationEmailServiceImpl.java
@@ -0,0 +1,27 @@
+package com.project.devidea.modules.account.services.signUp;
+
+import com.project.devidea.infra.error.exception.ErrorCode;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.exception.AccountException;
+import com.project.devidea.modules.account.repository.AccountRepository;
+import com.project.devidea.modules.environment.EnvironmentRepository;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@RequiredArgsConstructor
+@Transactional
+public class AuthenticationEmailServiceImpl implements AuthenticationEmailService {
+
+ private final AccountRepository accountRepository;
+ private final EnvironmentRepository environmentRepository;
+
+ @Override
+ public String authenticateEmailToken(String email, String token) {
+ Account account = accountRepository.findByEmail(email).orElseThrow(
+ () -> new AccountException("회원을 찾을 수 없습니다.", ErrorCode.ACCOUNT_ERROR));
+ account.validateToken(token);
+ return environmentRepository.findByDescription("FRONT").getUrl();
+ }
+}
diff --git a/src/main/java/com/project/devidea/modules/account/services/signUp/CommonSignUpServiceImpl.java b/src/main/java/com/project/devidea/modules/account/services/signUp/CommonSignUpServiceImpl.java
index a399e8cf..e8a6d551 100644
--- a/src/main/java/com/project/devidea/modules/account/services/signUp/CommonSignUpServiceImpl.java
+++ b/src/main/java/com/project/devidea/modules/account/services/signUp/CommonSignUpServiceImpl.java
@@ -1,14 +1,13 @@
package com.project.devidea.modules.account.services.signUp;
-import com.project.devidea.infra.error.exception.ErrorCode;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.dto.SignUp;
import com.project.devidea.modules.account.event.SendEmailToken;
-import com.project.devidea.modules.account.exception.AccountException;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.environment.EnvironmentRepository;
import lombok.RequiredArgsConstructor;
import org.modelmapper.ModelMapper;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
@@ -17,13 +16,13 @@
@Service
@RequiredArgsConstructor
@Transactional
-public class CommonSignUpServiceImpl implements SignUpAndAuthenticationEmailService {
+@Qualifier("commonSignUpService")
+public class CommonSignUpServiceImpl implements SignUpService {
private final AccountRepository accountRepository;
private final ApplicationEventPublisher publisher;
private final ModelMapper modelMapper;
private final BCryptPasswordEncoder passwordEncoder;
- private final EnvironmentRepository environmentRepository;
@Override
public SignUp.Response signUp(SignUp.Request request) {
@@ -38,12 +37,4 @@ public SignUp.Response signUp(SignUp.Request request) {
return modelMapper.map(account, SignUp.Response.class);
}
-
- @Override
- public String authenticateEmailToken(String email, String token) {
- Account account = accountRepository.findByEmail(email).orElseThrow(
- () -> new AccountException("회원을 찾을 수 없습니다.", ErrorCode.ACCOUNT_ERROR));
- account.validateToken(token);
- return environmentRepository.findByDescription("FRONT").getUrl();
- }
}
diff --git a/src/main/java/com/project/devidea/modules/account/services/signUp/OAuthSignUpServiceImpl.java b/src/main/java/com/project/devidea/modules/account/services/signUp/OAuthSignUpServiceImpl.java
index b36b3fd1..d7b3d7e0 100644
--- a/src/main/java/com/project/devidea/modules/account/services/signUp/OAuthSignUpServiceImpl.java
+++ b/src/main/java/com/project/devidea/modules/account/services/signUp/OAuthSignUpServiceImpl.java
@@ -1,9 +1,10 @@
package com.project.devidea.modules.account.services.signUp;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.dto.SignUp;
import com.project.devidea.modules.account.repository.AccountRepository;
import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -11,6 +12,7 @@
@Service
@RequiredArgsConstructor
@Transactional
+@Qualifier("oAuthSignUpService")
public class OAuthSignUpServiceImpl implements SignUpService {
private final AccountRepository accountRepository;
diff --git a/src/main/java/com/project/devidea/modules/account/services/signUpDetail/SignUpDetailServiceImpl.java b/src/main/java/com/project/devidea/modules/account/services/signUpDetail/SignUpDetailServiceImpl.java
index ef3fc702..73d78704 100644
--- a/src/main/java/com/project/devidea/modules/account/services/signUpDetail/SignUpDetailServiceImpl.java
+++ b/src/main/java/com/project/devidea/modules/account/services/signUpDetail/SignUpDetailServiceImpl.java
@@ -1,8 +1,8 @@
package com.project.devidea.modules.account.services.signUpDetail;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.Interest;
-import com.project.devidea.modules.account.MainActivityZone;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
import com.project.devidea.modules.account.dto.SignUp;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.account.services.interest.InterestService;
diff --git a/src/main/java/com/project/devidea/modules/account/util/AccountToManyUtil.java b/src/main/java/com/project/devidea/modules/account/util/AccountToManyUtil.java
new file mode 100644
index 00000000..5b65f596
--- /dev/null
+++ b/src/main/java/com/project/devidea/modules/account/util/AccountToManyUtil.java
@@ -0,0 +1,32 @@
+package com.project.devidea.modules.account.util;
+
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
+import com.project.devidea.modules.tagzone.tag.Tag;
+import com.project.devidea.modules.tagzone.zone.Zone;
+import org.springframework.stereotype.Component;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Component
+public class AccountToManyUtil {
+
+ public Set createInterestSet(Account account, List tags){
+ Set interests = new HashSet<>();
+ tags.forEach(tag -> {
+ interests.add(Interest.builder().tag(tag).account(account).build());
+ });
+ return interests;
+ }
+
+ public Set createMainActivityZoneSet(Account account, List zones) {
+ Set mainActivityZones = new HashSet<>();
+ zones.forEach(zone -> {
+ mainActivityZones.add(MainActivityZone.builder().account(account).zone(zone).build());
+ });
+ return mainActivityZones;
+ }
+}
diff --git a/src/main/java/com/project/devidea/modules/account/util/LoginServiceUtil.java b/src/main/java/com/project/devidea/modules/account/util/LoginServiceUtil.java
index 846bc99a..1ba302c4 100644
--- a/src/main/java/com/project/devidea/modules/account/util/LoginServiceUtil.java
+++ b/src/main/java/com/project/devidea/modules/account/util/LoginServiceUtil.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.account.util;
import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
diff --git a/src/main/java/com/project/devidea/modules/community/Comment.java b/src/main/java/com/project/devidea/modules/community/Comment.java
index 03b25f24..fafbf28b 100644
--- a/src/main/java/com/project/devidea/modules/community/Comment.java
+++ b/src/main/java/com/project/devidea/modules/community/Comment.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.community;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/project/devidea/modules/community/Community.java b/src/main/java/com/project/devidea/modules/community/Community.java
index 6712e310..cfbbc655 100644
--- a/src/main/java/com/project/devidea/modules/community/Community.java
+++ b/src/main/java/com/project/devidea/modules/community/Community.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.community;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/project/devidea/modules/community/CommunityRepository.java b/src/main/java/com/project/devidea/modules/community/CommunityRepository.java
index 76803ca7..ecf789d3 100644
--- a/src/main/java/com/project/devidea/modules/community/CommunityRepository.java
+++ b/src/main/java/com/project/devidea/modules/community/CommunityRepository.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.community;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;
diff --git a/src/main/java/com/project/devidea/modules/community/CommunityService.java b/src/main/java/com/project/devidea/modules/community/CommunityService.java
index 646984ab..cc70769e 100644
--- a/src/main/java/com/project/devidea/modules/community/CommunityService.java
+++ b/src/main/java/com/project/devidea/modules/community/CommunityService.java
@@ -1,12 +1,8 @@
package com.project.devidea.modules.community;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.community.form.RequestCommunity;
-import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
-import org.modelmapper.ModelMapper;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/src/main/java/com/project/devidea/modules/community/form/RequestCommunity.java b/src/main/java/com/project/devidea/modules/community/form/RequestCommunity.java
index d220c8ba..f9ced080 100644
--- a/src/main/java/com/project/devidea/modules/community/form/RequestCommunity.java
+++ b/src/main/java/com/project/devidea/modules/community/form/RequestCommunity.java
@@ -1,17 +1,12 @@
package com.project.devidea.modules.community.form;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.community.Comment;
import com.project.devidea.modules.community.CommunityType;
import com.project.devidea.modules.community.validator.Enum;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
-import javax.persistence.*;
import javax.validation.constraints.NotEmpty;
-import java.time.LocalDateTime;
-import java.util.List;
@Getter
@Setter
diff --git a/src/main/java/com/project/devidea/modules/content/mentoring/Mentee.java b/src/main/java/com/project/devidea/modules/content/mentoring/Mentee.java
index cb7f0dc7..a771e7aa 100644
--- a/src/main/java/com/project/devidea/modules/content/mentoring/Mentee.java
+++ b/src/main/java/com/project/devidea/modules/content/mentoring/Mentee.java
@@ -1,14 +1,12 @@
package com.project.devidea.modules.content.mentoring;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.tagzone.tag.Tag;
import com.project.devidea.modules.tagzone.zone.Zone;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
-import org.springframework.security.access.AccessDeniedException;
-import org.springframework.web.bind.MethodArgumentNotValidException;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
diff --git a/src/main/java/com/project/devidea/modules/content/mentoring/MenteeController.java b/src/main/java/com/project/devidea/modules/content/mentoring/MenteeController.java
index 07e51469..ea048bc7 100644
--- a/src/main/java/com/project/devidea/modules/content/mentoring/MenteeController.java
+++ b/src/main/java/com/project/devidea/modules/content/mentoring/MenteeController.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.content.mentoring;
import com.project.devidea.infra.config.security.CurrentUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.mentoring.form.CreateMenteeRequest;
import com.project.devidea.modules.content.mentoring.form.UpdateMenteeRequest;
diff --git a/src/main/java/com/project/devidea/modules/content/mentoring/MenteeService.java b/src/main/java/com/project/devidea/modules/content/mentoring/MenteeService.java
index 50a2b0c0..bfbb4004 100644
--- a/src/main/java/com/project/devidea/modules/content/mentoring/MenteeService.java
+++ b/src/main/java/com/project/devidea/modules/content/mentoring/MenteeService.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.mentoring;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.AlreadyExistException;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.mentoring.form.CreateMenteeRequest;
@@ -9,7 +9,6 @@
import com.project.devidea.modules.tagzone.tag.TagRepository;
import com.project.devidea.modules.tagzone.zone.Zone;
import com.project.devidea.modules.tagzone.zone.ZoneRepository;
-import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/src/main/java/com/project/devidea/modules/content/mentoring/Mentor.java b/src/main/java/com/project/devidea/modules/content/mentoring/Mentor.java
index 286d45c6..9eee4f7d 100644
--- a/src/main/java/com/project/devidea/modules/content/mentoring/Mentor.java
+++ b/src/main/java/com/project/devidea/modules/content/mentoring/Mentor.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.mentoring;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.resume.Resume;
import com.project.devidea.modules.tagzone.tag.Tag;
import com.project.devidea.modules.tagzone.zone.Zone;
diff --git a/src/main/java/com/project/devidea/modules/content/mentoring/MentorController.java b/src/main/java/com/project/devidea/modules/content/mentoring/MentorController.java
index 40545dae..8e5c2ca0 100644
--- a/src/main/java/com/project/devidea/modules/content/mentoring/MentorController.java
+++ b/src/main/java/com/project/devidea/modules/content/mentoring/MentorController.java
@@ -1,11 +1,10 @@
package com.project.devidea.modules.content.mentoring;
import com.project.devidea.infra.config.security.CurrentUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.mentoring.form.CreateMentorRequest;
import com.project.devidea.modules.content.mentoring.form.UpdateMentorRequest;
-import com.project.devidea.modules.content.mentoring.validator.MentorRequestValidator;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.RequiredArgsConstructor;
@@ -13,7 +12,6 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.AccessDeniedException;
-import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
diff --git a/src/main/java/com/project/devidea/modules/content/mentoring/MentorService.java b/src/main/java/com/project/devidea/modules/content/mentoring/MentorService.java
index 8a32cf54..8ccd7940 100644
--- a/src/main/java/com/project/devidea/modules/content/mentoring/MentorService.java
+++ b/src/main/java/com/project/devidea/modules/content/mentoring/MentorService.java
@@ -1,7 +1,6 @@
package com.project.devidea.modules.content.mentoring;
-import com.project.devidea.infra.error.exception.ErrorCode;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.AlreadyExistException;
import com.project.devidea.modules.content.mentoring.exception.InvalidInputException;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
@@ -14,7 +13,6 @@
import com.project.devidea.modules.tagzone.tag.TagRepository;
import com.project.devidea.modules.tagzone.zone.Zone;
import com.project.devidea.modules.tagzone.zone.ZoneRepository;
-import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/Resume.java b/src/main/java/com/project/devidea/modules/content/resume/Resume.java
index 317edf43..d1ef862b 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/Resume.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/Resume.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.resume;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.resume.activity.Activity;
import com.project.devidea.modules.content.resume.award.Award;
import com.project.devidea.modules.content.resume.career.Career;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/ResumeController.java b/src/main/java/com/project/devidea/modules/content/resume/ResumeController.java
index 863d215d..52a70453 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/ResumeController.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/ResumeController.java
@@ -1,23 +1,19 @@
package com.project.devidea.modules.content.resume;
import com.project.devidea.infra.config.security.CurrentUser;
-import com.project.devidea.infra.config.security.LoginUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.resume.form.CreateResumeRequest;
import com.project.devidea.modules.content.resume.form.UpdateResumeRequest;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.RequiredArgsConstructor;
-import org.modelmapper.internal.Errors;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.AccessDeniedException;
-import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
-import java.util.List;
@RestController
@RequestMapping(value = "/resume")
diff --git a/src/main/java/com/project/devidea/modules/content/resume/ResumeService.java b/src/main/java/com/project/devidea/modules/content/resume/ResumeService.java
index f3c88af0..6aab60bb 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/ResumeService.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/ResumeService.java
@@ -1,12 +1,11 @@
package com.project.devidea.modules.content.resume;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.AlreadyExistException;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.resume.form.CreateResumeRequest;
import com.project.devidea.modules.content.resume.form.UpdateResumeRequest;
import lombok.RequiredArgsConstructor;
-import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/activity/ActivityController.java b/src/main/java/com/project/devidea/modules/content/resume/activity/ActivityController.java
index a19368e3..a5dd0194 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/activity/ActivityController.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/activity/ActivityController.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.content.resume.activity;
import com.project.devidea.infra.config.security.CurrentUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.resume.Resume;
import com.project.devidea.modules.content.resume.ResumeRepository;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/activity/ActivityService.java b/src/main/java/com/project/devidea/modules/content/resume/activity/ActivityService.java
index 95157bc2..be7b8bb0 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/activity/ActivityService.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/activity/ActivityService.java
@@ -1,7 +1,6 @@
package com.project.devidea.modules.content.resume.activity;
-import com.project.devidea.infra.error.exception.ErrorCode;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.InvalidInputException;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.resume.Resume;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/award/AwardController.java b/src/main/java/com/project/devidea/modules/content/resume/award/AwardController.java
index dfffea10..a74e9c25 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/award/AwardController.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/award/AwardController.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.content.resume.award;
import com.project.devidea.infra.config.security.CurrentUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.resume.Resume;
import com.project.devidea.modules.content.resume.ResumeRepository;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/award/AwardService.java b/src/main/java/com/project/devidea/modules/content/resume/award/AwardService.java
index 6654b6a1..805a4e26 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/award/AwardService.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/award/AwardService.java
@@ -1,7 +1,6 @@
package com.project.devidea.modules.content.resume.award;
-import com.project.devidea.infra.error.exception.ErrorCode;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.AbstractService;
import com.project.devidea.modules.content.mentoring.exception.InvalidInputException;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/career/CareerController.java b/src/main/java/com/project/devidea/modules/content/resume/career/CareerController.java
index 09a56ae7..6b0c6e29 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/career/CareerController.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/career/CareerController.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.content.resume.career;
import com.project.devidea.infra.config.security.CurrentUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.resume.Resume;
import com.project.devidea.modules.content.resume.ResumeRepository;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/career/CareerService.java b/src/main/java/com/project/devidea/modules/content/resume/career/CareerService.java
index 8a45cc21..29356777 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/career/CareerService.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/career/CareerService.java
@@ -1,7 +1,6 @@
package com.project.devidea.modules.content.resume.career;
-import com.project.devidea.infra.error.exception.ErrorCode;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.AbstractService;
import com.project.devidea.modules.content.mentoring.exception.InvalidInputException;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/education/EducationController.java b/src/main/java/com/project/devidea/modules/content/resume/education/EducationController.java
index b8ac2657..b2fd7ed6 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/education/EducationController.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/education/EducationController.java
@@ -1,20 +1,18 @@
package com.project.devidea.modules.content.resume.education;
import com.project.devidea.infra.config.security.CurrentUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.resume.Resume;
import com.project.devidea.modules.content.resume.ResumeRepository;
import com.project.devidea.modules.content.resume.form.education.CreateEducationRequest;
import com.project.devidea.modules.content.resume.form.education.UpdateEducationRequest;
-import com.project.devidea.modules.content.resume.validator.EducationRequestValidator;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.AccessDeniedException;
-import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/education/EducationService.java b/src/main/java/com/project/devidea/modules/content/resume/education/EducationService.java
index 53274cfe..dcf9f955 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/education/EducationService.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/education/EducationService.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.resume.education;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.AbstractService;
import com.project.devidea.modules.content.mentoring.exception.InvalidInputException;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/project/ProjectController.java b/src/main/java/com/project/devidea/modules/content/resume/project/ProjectController.java
index 4aa04778..936ca80b 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/project/ProjectController.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/project/ProjectController.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.content.resume.project;
import com.project.devidea.infra.config.security.CurrentUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.resume.Resume;
import com.project.devidea.modules.content.resume.ResumeRepository;
diff --git a/src/main/java/com/project/devidea/modules/content/resume/project/ProjectService.java b/src/main/java/com/project/devidea/modules/content/resume/project/ProjectService.java
index cb36ff22..a4a5e977 100644
--- a/src/main/java/com/project/devidea/modules/content/resume/project/ProjectService.java
+++ b/src/main/java/com/project/devidea/modules/content/resume/project/ProjectService.java
@@ -1,7 +1,6 @@
package com.project.devidea.modules.content.resume.project;
-import com.project.devidea.infra.error.exception.ErrorCode;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.AbstractService;
import com.project.devidea.modules.content.mentoring.exception.InvalidInputException;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
@@ -10,8 +9,6 @@
import com.project.devidea.modules.content.resume.form.project.CreateProjectRequest;
import com.project.devidea.modules.content.resume.form.project.ProjectRequest;
import com.project.devidea.modules.content.resume.form.project.UpdateProjectRequest;
-import com.project.devidea.modules.content.resume.project.Project;
-import com.project.devidea.modules.content.resume.project.ProjectRepository;
import com.project.devidea.modules.tagzone.tag.TagRepository;
import com.project.devidea.modules.tagzone.zone.ZoneRepository;
import org.springframework.stereotype.Service;
diff --git a/src/main/java/com/project/devidea/modules/content/study/Study.java b/src/main/java/com/project/devidea/modules/content/study/Study.java
index 82cd2baf..d5a62c52 100644
--- a/src/main/java/com/project/devidea/modules/content/study/Study.java
+++ b/src/main/java/com/project/devidea/modules/content/study/Study.java
@@ -1,18 +1,14 @@
package com.project.devidea.modules.content.study;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.content.study.form.StudyMakingForm;
import com.project.devidea.modules.tagzone.tag.Tag;
import com.project.devidea.modules.tagzone.zone.Zone;
import lombok.*;
import javax.persistence.*;
-import javax.validation.Valid;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.*;
-import java.util.stream.Collectors;
@Entity
@Data
diff --git a/src/main/java/com/project/devidea/modules/content/study/StudyFactory.java b/src/main/java/com/project/devidea/modules/content/study/StudyFactory.java
index eec73383..8e289d56 100644
--- a/src/main/java/com/project/devidea/modules/content/study/StudyFactory.java
+++ b/src/main/java/com/project/devidea/modules/content/study/StudyFactory.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.study;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.study.apply.StudyApply;
import com.project.devidea.modules.content.study.apply.StudyApplyForm;
import com.project.devidea.modules.content.study.exception.StudyNullException;
diff --git a/src/main/java/com/project/devidea/modules/content/study/StudyMember.java b/src/main/java/com/project/devidea/modules/content/study/StudyMember.java
index 61e7ee81..8c0782fb 100644
--- a/src/main/java/com/project/devidea/modules/content/study/StudyMember.java
+++ b/src/main/java/com/project/devidea/modules/content/study/StudyMember.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.study;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import lombok.*;
import javax.persistence.*;
diff --git a/src/main/java/com/project/devidea/modules/content/study/StudySampleGenerator.java b/src/main/java/com/project/devidea/modules/content/study/StudySampleGenerator.java
index ffc78645..1e33b516 100644
--- a/src/main/java/com/project/devidea/modules/content/study/StudySampleGenerator.java
+++ b/src/main/java/com/project/devidea/modules/content/study/StudySampleGenerator.java
@@ -1,7 +1,6 @@
package com.project.devidea.modules.content.study;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.content.study.repository.StudyRepository;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.tagzone.tag.Tag;
import com.project.devidea.modules.tagzone.tag.TagRepository;
import com.project.devidea.modules.tagzone.zone.Zone;
diff --git a/src/main/java/com/project/devidea/modules/content/study/aop/StudyNotificationAspect.java b/src/main/java/com/project/devidea/modules/content/study/aop/StudyNotificationAspect.java
index 78ada2e0..0e1dc8fd 100644
--- a/src/main/java/com/project/devidea/modules/content/study/aop/StudyNotificationAspect.java
+++ b/src/main/java/com/project/devidea/modules/content/study/aop/StudyNotificationAspect.java
@@ -1,14 +1,10 @@
package com.project.devidea.modules.content.study.aop;
-import com.project.devidea.infra.error.exception.BusinessException;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.repository.InterestRepository;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.study.Study;
import com.project.devidea.modules.content.study.StudyFactory;
import com.project.devidea.modules.content.study.apply.StudyApplyForm;
-import com.project.devidea.modules.content.study.apply.StudyApplyRepository;
import com.project.devidea.modules.content.study.exception.StudyNullException;
-import com.project.devidea.modules.content.study.form.StudyDetailForm;
import com.project.devidea.modules.content.study.notification.*;
import com.project.devidea.modules.content.study.repository.StudyMemberRepository;
import com.project.devidea.modules.content.study.repository.StudyRepository;
diff --git a/src/main/java/com/project/devidea/modules/content/study/apply/StudyApply.java b/src/main/java/com/project/devidea/modules/content/study/apply/StudyApply.java
index 8a86c34c..ce4359f9 100644
--- a/src/main/java/com/project/devidea/modules/content/study/apply/StudyApply.java
+++ b/src/main/java/com/project/devidea/modules/content/study/apply/StudyApply.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.study.apply;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.study.Study;
import lombok.*;
diff --git a/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyForm.java b/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyForm.java
index d7cb62d1..d8d7fea2 100644
--- a/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyForm.java
+++ b/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyForm.java
@@ -1,13 +1,10 @@
package com.project.devidea.modules.content.study.apply;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.content.study.Study;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
diff --git a/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyListForm.java b/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyListForm.java
index 37ad9673..727d9fc6 100644
--- a/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyListForm.java
+++ b/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyListForm.java
@@ -1,6 +1,5 @@
package com.project.devidea.modules.content.study.apply;
-import com.project.devidea.modules.account.Account;
import com.project.devidea.modules.content.study.Study;
import lombok.Data;
diff --git a/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyRepository.java b/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyRepository.java
index 0e41d558..eb8db93b 100644
--- a/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyRepository.java
+++ b/src/main/java/com/project/devidea/modules/content/study/apply/StudyApplyRepository.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.study.apply;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.study.Study;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/src/main/java/com/project/devidea/modules/content/study/form/StudyDetailForm.java b/src/main/java/com/project/devidea/modules/content/study/form/StudyDetailForm.java
index 4f932844..01d468df 100644
--- a/src/main/java/com/project/devidea/modules/content/study/form/StudyDetailForm.java
+++ b/src/main/java/com/project/devidea/modules/content/study/form/StudyDetailForm.java
@@ -1,19 +1,10 @@
package com.project.devidea.modules.content.study.form;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.content.study.Level;
import com.project.devidea.modules.content.study.Study;
-import com.project.devidea.modules.tagzone.tag.Tag;
-import com.project.devidea.modules.tagzone.zone.Zone;
-import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
-import javax.persistence.*;
-import javax.validation.constraints.NotBlank;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Set;
diff --git a/src/main/java/com/project/devidea/modules/content/study/notification/StudyNotification.java b/src/main/java/com/project/devidea/modules/content/study/notification/StudyNotification.java
index 06600fd1..0f49cdc5 100644
--- a/src/main/java/com/project/devidea/modules/content/study/notification/StudyNotification.java
+++ b/src/main/java/com/project/devidea/modules/content/study/notification/StudyNotification.java
@@ -1,9 +1,7 @@
package com.project.devidea.modules.content.study.notification;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.repository.AccountRepository;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.study.Study;
-import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Component;
@Component
diff --git a/src/main/java/com/project/devidea/modules/content/study/notification/StudyNotificationImpl.java b/src/main/java/com/project/devidea/modules/content/study/notification/StudyNotificationImpl.java
index 661faaea..71180900 100644
--- a/src/main/java/com/project/devidea/modules/content/study/notification/StudyNotificationImpl.java
+++ b/src/main/java/com/project/devidea/modules/content/study/notification/StudyNotificationImpl.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.study.notification;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.InterestRepository;
import com.project.devidea.modules.content.study.Study;
import com.project.devidea.modules.content.study.StudyMember;
diff --git a/src/main/java/com/project/devidea/modules/content/study/repository/StudyMemberRepository.java b/src/main/java/com/project/devidea/modules/content/study/repository/StudyMemberRepository.java
index 6bb45e06..c8bae1a1 100644
--- a/src/main/java/com/project/devidea/modules/content/study/repository/StudyMemberRepository.java
+++ b/src/main/java/com/project/devidea/modules/content/study/repository/StudyMemberRepository.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.study.repository;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.study.Study;
import com.project.devidea.modules.content.study.StudyMember;
import com.project.devidea.modules.content.study.StudyRole;
diff --git a/src/main/java/com/project/devidea/modules/content/study/repository/StudyRepository.java b/src/main/java/com/project/devidea/modules/content/study/repository/StudyRepository.java
index 2a6cd2eb..8780f6f8 100644
--- a/src/main/java/com/project/devidea/modules/content/study/repository/StudyRepository.java
+++ b/src/main/java/com/project/devidea/modules/content/study/repository/StudyRepository.java
@@ -1,5 +1,4 @@
package com.project.devidea.modules.content.study.repository;
-import com.project.devidea.modules.account.Account;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.JpaRepository;
import com.project.devidea.modules.content.study.Study;
diff --git a/src/main/java/com/project/devidea/modules/content/study/repository/StudyRepositoryCustom.java b/src/main/java/com/project/devidea/modules/content/study/repository/StudyRepositoryCustom.java
index 398712a3..8ea094ba 100644
--- a/src/main/java/com/project/devidea/modules/content/study/repository/StudyRepositoryCustom.java
+++ b/src/main/java/com/project/devidea/modules/content/study/repository/StudyRepositoryCustom.java
@@ -1,8 +1,6 @@
package com.project.devidea.modules.content.study.repository;
-import com.project.devidea.modules.account.Account;
import com.project.devidea.modules.content.study.Study;
-import com.project.devidea.modules.content.study.form.StudyListForm;
import com.project.devidea.modules.content.study.form.StudySearchForm;
import org.springframework.data.jpa.repository.EntityGraph;
diff --git a/src/main/java/com/project/devidea/modules/content/study/service/StudyService.java b/src/main/java/com/project/devidea/modules/content/study/service/StudyService.java
index 00a5fd9f..e7eaabfc 100644
--- a/src/main/java/com/project/devidea/modules/content/study/service/StudyService.java
+++ b/src/main/java/com/project/devidea/modules/content/study/service/StudyService.java
@@ -1,25 +1,15 @@
package com.project.devidea.modules.content.study.service;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.study.Study;
-import com.project.devidea.modules.content.study.StudyMember;
import com.project.devidea.modules.content.study.StudyRole;
-import com.project.devidea.modules.content.study.apply.StudyApply;
import com.project.devidea.modules.content.study.apply.StudyApplyForm;
import com.project.devidea.modules.content.study.apply.StudyApplyListForm;
import com.project.devidea.modules.content.study.exception.AlreadyStudyExistsException;
import com.project.devidea.modules.content.study.form.*;
-import com.project.devidea.modules.notification.Notification;
-import com.project.devidea.modules.tagzone.tag.Tag;
-import com.project.devidea.modules.tagzone.zone.Zone;
import javax.validation.Valid;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
public interface StudyService {
//스터디관련 검색 및 조회
diff --git a/src/main/java/com/project/devidea/modules/content/study/service/StudyServiceImpl.java b/src/main/java/com/project/devidea/modules/content/study/service/StudyServiceImpl.java
index 2fb94f90..7529839d 100644
--- a/src/main/java/com/project/devidea/modules/content/study/service/StudyServiceImpl.java
+++ b/src/main/java/com/project/devidea/modules/content/study/service/StudyServiceImpl.java
@@ -1,41 +1,28 @@
package com.project.devidea.modules.content.study.service;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.content.study.Study;
import com.project.devidea.modules.content.study.StudyFactory;
import com.project.devidea.modules.content.study.StudyMember;
import com.project.devidea.modules.content.study.StudyRole;
-import com.project.devidea.modules.content.study.aop.AlreadyExistError;
import com.project.devidea.modules.content.study.apply.StudyApply;
import com.project.devidea.modules.content.study.apply.StudyApplyForm;
import com.project.devidea.modules.content.study.apply.StudyApplyListForm;
import com.project.devidea.modules.content.study.apply.StudyApplyRepository;
import com.project.devidea.modules.content.study.exception.AlreadyStudyExistsException;
-import com.project.devidea.modules.content.study.exception.AlreadyStudyExistsException;
import com.project.devidea.modules.content.study.exception.StudyNullException;
import com.project.devidea.modules.content.study.form.*;
import com.project.devidea.modules.content.study.repository.StudyMemberRepository;
import com.project.devidea.modules.content.study.repository.StudyRepository;
-import com.project.devidea.modules.notification.Notification;
-import com.project.devidea.modules.notification.NotificationRepository;
-import com.project.devidea.modules.tagzone.tag.Tag;
-import com.project.devidea.modules.tagzone.tag.TagRepository;
-import com.project.devidea.modules.tagzone.zone.Zone;
-import com.project.devidea.modules.tagzone.zone.ZoneRepository;
import lombok.RequiredArgsConstructor;
import org.modelmapper.ModelMapper;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.ExceptionHandler;
import javax.validation.Valid;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import java.util.stream.Collectors;
@Service
diff --git a/src/main/java/com/project/devidea/modules/content/suggestion/Suggestion.java b/src/main/java/com/project/devidea/modules/content/suggestion/Suggestion.java
index b5878b70..025e2710 100644
--- a/src/main/java/com/project/devidea/modules/content/suggestion/Suggestion.java
+++ b/src/main/java/com/project/devidea/modules/content/suggestion/Suggestion.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.suggestion;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import lombok.*;
import javax.persistence.*;
diff --git a/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionController.java b/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionController.java
index e64fa2ac..7fe03db4 100644
--- a/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionController.java
+++ b/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionController.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.content.suggestion;
import com.project.devidea.infra.config.security.CurrentUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.exception.NotFoundException;
import com.project.devidea.modules.content.suggestion.form.SuggestionRequest;
import io.swagger.annotations.ApiOperation;
diff --git a/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionRepository.java b/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionRepository.java
index 0ed21b32..46475632 100644
--- a/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionRepository.java
+++ b/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionRepository.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.suggestion;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
diff --git a/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionService.java b/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionService.java
index f3f1157c..e025e162 100644
--- a/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionService.java
+++ b/src/main/java/com/project/devidea/modules/content/suggestion/SuggestionService.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.content.suggestion;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.mentoring.Mentee;
import com.project.devidea.modules.content.mentoring.MenteeRepository;
import com.project.devidea.modules.content.mentoring.Mentor;
diff --git a/src/main/java/com/project/devidea/modules/notification/Notification.java b/src/main/java/com/project/devidea/modules/notification/Notification.java
index b326595b..9e4e615b 100644
--- a/src/main/java/com/project/devidea/modules/notification/Notification.java
+++ b/src/main/java/com/project/devidea/modules/notification/Notification.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.notification;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import lombok.*;
import javax.persistence.*;
diff --git a/src/main/java/com/project/devidea/modules/notification/NotificationController.java b/src/main/java/com/project/devidea/modules/notification/NotificationController.java
index 7a69692a..62dce7e1 100644
--- a/src/main/java/com/project/devidea/modules/notification/NotificationController.java
+++ b/src/main/java/com/project/devidea/modules/notification/NotificationController.java
@@ -2,8 +2,7 @@
import com.project.devidea.infra.config.security.LoginUser;
import com.project.devidea.infra.error.exception.EntityNotFoundException;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.content.techNews.TechSite;
+import com.project.devidea.modules.account.domains.Account;
import io.swagger.annotations.ApiOperation;
import lombok.*;
import org.springframework.http.HttpStatus;
@@ -12,7 +11,6 @@
import org.springframework.web.bind.annotation.*;
import java.util.List;
-import java.util.Optional;
@RestController
@RequiredArgsConstructor
diff --git a/src/main/java/com/project/devidea/modules/notification/NotificationRepository.java b/src/main/java/com/project/devidea/modules/notification/NotificationRepository.java
index e7cf12d2..7939a163 100644
--- a/src/main/java/com/project/devidea/modules/notification/NotificationRepository.java
+++ b/src/main/java/com/project/devidea/modules/notification/NotificationRepository.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.notification;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;
diff --git a/src/main/java/com/project/devidea/modules/notification/NotificationService.java b/src/main/java/com/project/devidea/modules/notification/NotificationService.java
index 209d13f3..82a480aa 100644
--- a/src/main/java/com/project/devidea/modules/notification/NotificationService.java
+++ b/src/main/java/com/project/devidea/modules/notification/NotificationService.java
@@ -1,8 +1,6 @@
package com.project.devidea.modules.notification;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.repository.InterestRepository;
-import lombok.NoArgsConstructor;
+import com.project.devidea.modules.account.domains.Account;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/src/main/java/com/project/devidea/modules/notification/aop/NotificationAop.java b/src/main/java/com/project/devidea/modules/notification/aop/NotificationAop.java
index a936291b..8a5e9b14 100644
--- a/src/main/java/com/project/devidea/modules/notification/aop/NotificationAop.java
+++ b/src/main/java/com/project/devidea/modules/notification/aop/NotificationAop.java
@@ -1,7 +1,7 @@
//package com.project.devidea.modules.notification.aop;
//
//
-//import com.project.devidea.modules.account.Account;
+//import com.project.devidea.modules.account.domains.Account;
//import com.project.devidea.modules.account.repository.AccountRepository;
//import com.project.devidea.modules.notification.Notification;
//import com.project.devidea.modules.notification.NotificationRepository;
diff --git a/src/main/java/lombok.config b/src/main/java/lombok.config
new file mode 100644
index 00000000..eb6db90e
--- /dev/null
+++ b/src/main/java/lombok.config
@@ -0,0 +1 @@
+lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/ModuleGenerator.java b/src/test/java/com/project/devidea/modules/ModuleGenerator.java
index 9a39d42a..a0d099e9 100644
--- a/src/test/java/com/project/devidea/modules/ModuleGenerator.java
+++ b/src/test/java/com/project/devidea/modules/ModuleGenerator.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.content.study.Study;
import com.project.devidea.modules.content.study.StudyMember;
import com.project.devidea.modules.tagzone.tag.Tag;
diff --git a/src/test/java/com/project/devidea/modules/account/AccountControllerTest.java b/src/test/java/com/project/devidea/modules/account/AccountControllerTest.java
deleted file mode 100644
index 255714a9..00000000
--- a/src/test/java/com/project/devidea/modules/account/AccountControllerTest.java
+++ /dev/null
@@ -1,268 +0,0 @@
-package com.project.devidea.modules.account;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.project.devidea.infra.SHA256;
-import com.project.devidea.infra.config.security.CustomUserDetailService;
-import com.project.devidea.infra.config.security.LoginUser;
-import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
-import com.project.devidea.modules.account.dto.*;
-import com.project.devidea.modules.account.repository.AccountRepository;
-import com.project.devidea.modules.account.repository.InterestRepository;
-import com.project.devidea.modules.account.repository.MainActivityZoneRepository;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.jupiter.api.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.http.MediaType;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.security.test.context.support.WithUserDetails;
-import org.springframework.test.context.web.WebAppConfiguration;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.filter.CharacterEncodingFilter;
-
-import java.util.*;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertAll;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-@SpringBootTest
-@WebAppConfiguration
-@AutoConfigureMockMvc
-@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
-@Slf4j
-class AccountControllerTest {
-
- @Autowired MockMvc mockMvc;
- @Autowired WebApplicationContext webApplicationContext;
- @Autowired ObjectMapper objectMapper;
- @Autowired JwtTokenUtil jwtTokenUtil;
- @Autowired CustomUserDetailService customUserDetailService;
- @Autowired AccountRepository accountRepository;
- @Autowired InterestRepository interestRepository;
- @Autowired MainActivityZoneRepository mainActivityZoneRepository;
-
- @BeforeEach
- void preHandle() {
- mockMvc = MockMvcBuilders
- .webAppContextSetup(webApplicationContext)
- .addFilters(new CharacterEncodingFilter("UTF-8", true))
- .build();
- }
-
- @Test
- void 일반_회원가입() throws Exception {
-
-// given
- SignUp.CommonRequest request = SignUp.CommonRequest.builder().name("고범떡").email("kob@naver.com")
- .password(SHA256.encrypt("123412341234")).passwordConfirm(SHA256.encrypt("123412341234"))
- .gender("male").nickname("고범떡").build();
-
-// when
- mockMvc.perform(post("/sign-up")
- .content(objectMapper.writeValueAsString(request))
- .contentType(MediaType.APPLICATION_JSON))
- .andDo(print())
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.data.name", is("고범떡")))
- .andExpect(jsonPath("$.data.email", is("kob@naver.com")))
- .andExpect(jsonPath("$.data.gender", is("male")))
- .andExpect(jsonPath("$.data.nickname", is("고범떡")));
-
-// then
- assertEquals(request.getPassword(), SHA256.encrypt("123412341234"));
- }
-
- @Test
- void 회원가입_메일_받은_후_인증메일_확인() throws Exception {
-
-// given
- SignUp.CommonRequest join = AccountDummy.getSignUpRequest();
- mockMvc.perform(post("/sign-up")
- .content(objectMapper.writeValueAsString(join))
- .contentType(MediaType.APPLICATION_JSON))
- .andDo(print());
-
- Account account = accountRepository.findByEmail(join.getEmail()).get();
- MultiValueMap params = new LinkedMultiValueMap<>();
- params.add("email", account.getEmail());
- params.add("token", account.getEmailCheckToken());
-
-// when
- mockMvc.perform(get("/authenticate-email-token").params(params))
- .andDo(print())
- .andExpect(status().is3xxRedirection())
- .andExpect(redirectedUrl("http://localhost:3000/sign-up/detail?token=" +
- account.getEmailCheckToken()));
-
-// then
- Account find = accountRepository.findByEmail(join.getEmail()).get();
- assertTrue(find.isAuthenticateEmail());
- }
-
- @Test
- @DisplayName("OAuth 회원가입")
- void saveOAuthGoogle() throws Exception {
-
-// given
- SignUp.OAuthRequest signUpOAuthRequestDto = AccountDummy.getSignUpOAuthRequestDto();
- String encryptedId = signUpOAuthRequestDto.getId();
-
-// when
- mockMvc.perform(post("/sign-up/oauth")
- .content(objectMapper.writeValueAsString(signUpOAuthRequestDto))
- .contentType(MediaType.APPLICATION_JSON))
- .andDo(print());
-
-// then
- assertEquals(encryptedId, SHA256.encrypt("naver12341234"));
- }
-
- @Test
- void 일반_로그인_디테일을_입력받지_못한_회원() throws Exception {
-
-// when, then
- MockHttpServletResponse mockHttpServletResponse = mockMvc.perform(post("/login")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(Login.Common.builder()
- .email("test@test.com").password("1234").build())))
- .andDo(print())
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.data.savedDetail", is(false)))
- .andExpect(jsonPath("$.data.emailCheckToken", notNullValue()))
- .andExpect(header().exists("Authorization")).andReturn().getResponse();
-
- String jwtToken = mockHttpServletResponse.getHeader("Authorization").substring(7);
- String username = jwtTokenUtil.getUsernameFromToken(jwtToken);
- assertEquals(username, "test@test.com");
- }
-
- @Test
- void OAuth_로그인_디테일을_입력받지_못한_회원() throws Exception {
-
-// given
- SignUp.OAuthRequest join = AccountDummy.getSignUpOAuthRequestDto2();
- mockMvc.perform(post("/sign-up/oauth").contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(join))).andDo(print());
-
- Login.OAuth login = Login.OAuth.builder()
- .provider(join.getProvider()).id(join.getId()).email(join.getEmail()).build();
-
-// when
- MockHttpServletResponse response = mockMvc.perform(post("/login/oauth")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(login)))
- .andDo(print())
- .andExpect(status().isOk())
- .andExpect(header().exists("Authorization"))
- .andExpect(jsonPath("$.data.savedDetail", is(false)))
- .andExpect(jsonPath("$.data.emailCheckToken", notNullValue()))
- .andReturn().getResponse();
-
-// then, 토큰과 디테일을 입력받지 못한 회원임을 확인
- String jwtToken = response.getHeader("Authorization").substring(7);
- String username = jwtTokenUtil.getUsernameFromToken(jwtToken);
- assertEquals(username, join.getEmail());
- }
-
- @Test
- void OAuth_로그인_디테일이_입력된_회원() throws Exception {
-
-// given
- SignUp.OAuthRequest join = AccountDummy.getSignUpOAuthRequestDto3();
-// 회원가입
- mockMvc.perform(post("/sign-up/oauth").contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(join))).andDo(print());
-// 디테일 추가
- SignUp.DetailRequest detail = AccountDummy.getSignUpDetailRequestDto();
- String token = accountRepository.findByEmail(join.getEmail()).get().getEmailCheckToken();
- detail.setToken(token);
- mockMvc.perform(post("/sign-up/detail").contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(detail)))
- .andDo(print());
-
- Login.OAuth login = Login.OAuth.builder()
- .provider(join.getProvider()).id(join.getId()).email(join.getEmail()).build();
-
-// when
- MockHttpServletResponse response = mockMvc.perform(post("/login/oauth")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(login)))
- .andDo(print())
- .andExpect(status().isOk())
- .andExpect(header().exists("Authorization"))
- .andExpect(jsonPath("$.data.savedDetail", is(true)))
- .andReturn().getResponse();
-
-// then, 토큰과 디테일을 입력받지 못한 회원임을 확인
- String jwtToken = response.getHeader("Authorization").substring(7);
- String username = jwtTokenUtil.getUsernameFromToken(jwtToken);
- assertEquals(username, join.getEmail());
- }
-
- @Test
- @WithUserDetails(userDetailsServiceBeanName = "customUserDetailService", value = "test@test.com")
- void 회원가입_상세정보_저장() throws Exception {
-
-// given
- LoginUser loginUser = (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
- SignUp.DetailRequest request = AccountDummy.getSignUpDetailRequestDto();
- request.setToken(loginUser.getAccount().getEmailCheckToken());
-
-// when
- mockMvc.perform(post("/sign-up/detail")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(request)))
- .andDo(print());
-
-// then account
- Account account = accountRepository.findByEmailWithMainActivityZoneAndInterests(loginUser.getUsername());
- assertAll(
- () -> Assertions.assertTrue(account.isReceiveEmail()),
- () -> assertEquals(account.getJob(), "웹개발"),
- () -> assertEquals(account.getProfilePath(), "1234"),
- () -> assertEquals(account.getTechStacks(), "java/python"),
- () -> assertEquals(account.getInterests().size(), 3),
- () -> assertEquals(account.getMainActivityZones().size(), 3));
-
-// then mainActivityZone, interest
- List mainActivityZones = mainActivityZoneRepository.findByAccount(account);
- List interests = interestRepository.findByAccount(account);
- assertAll(
- () -> assertEquals(mainActivityZones.size(), 3),
- () -> assertEquals(interests.size(), 3));
- }
-
- @Test
- @WithUserDetails("test@test.com")
- @Order(value = Integer.MAX_VALUE - 1)
- void 회원_탈퇴() throws Exception {
-
-// given
- LoginUser user =
- (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
-
-// when
- mockMvc.perform(delete("/account/quit")
- .header("Authorization", jwtTokenUtil.generateToken(user))
- .contentType(MediaType.APPLICATION_JSON))
- .andDo(print())
- .andExpect(status().isOk());
-
-// then
- LoginUser confirm =
- (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
- assertTrue(confirm.getAccount().isQuit());
- }
-}
diff --git a/src/test/java/com/project/devidea/modules/account/AccountControllerValidationTest.java b/src/test/java/com/project/devidea/modules/account/AccountControllerValidationTest.java
deleted file mode 100644
index c39417f5..00000000
--- a/src/test/java/com/project/devidea/modules/account/AccountControllerValidationTest.java
+++ /dev/null
@@ -1,214 +0,0 @@
-package com.project.devidea.modules.account;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.project.devidea.infra.SHA256;
-import com.project.devidea.infra.config.security.CustomUserDetailService;
-import com.project.devidea.infra.config.security.LoginUser;
-import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
-import com.project.devidea.modules.account.dto.Login;
-import com.project.devidea.modules.account.dto.SignUp;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.jupiter.api.MethodOrderer;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestMethodOrder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.http.MediaType;
-import org.springframework.security.test.context.support.WithUserDetails;
-import org.springframework.test.context.web.WebAppConfiguration;
-import org.springframework.test.web.servlet.MockMvc;
-
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.nullValue;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-@SpringBootTest
-@WebAppConfiguration
-@AutoConfigureMockMvc
-@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
-@Slf4j
-public class AccountControllerValidationTest {
-
- @Autowired MockMvc mockMvc;
- @Autowired ObjectMapper objectMapper;
- @Autowired JwtTokenUtil jwtTokenUtil;
- @Autowired CustomUserDetailService customUserDetailService;
-
- @Test
- void 일반회원가입_기본Valid() throws Exception {
-
-// given
- SignUp.CommonRequest failValidSignUpRequest = AccountDummy.getFailSignUpRequestWithValid();
-
-// when, then
-// 이메일 공백, password Blank, passwordConfirm Blank, name 길이, nickname Blank
- mockMvc.perform(post("/sign-up")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(failValidSignUpRequest)))
- .andDo(print())
- .andExpect(status().is4xxClientError())
- .andExpect(jsonPath("$.errors.length()", is(5)));
- }
-
- @Test
- void 일반회원가입_WithValidator() throws Exception {
-
-// given
- SignUp.CommonRequest commonRequest = AccountDummy.getFailSignUpRequestWithValidator();
-
-// when, then
-// 이메일 중복과 패스워드, 패스워드 확인값 불일치, 닉네임 중복
- mockMvc.perform(post("/sign-up")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(commonRequest)))
- .andDo(print())
- .andExpect(status().is4xxClientError())
- .andExpect(jsonPath("$.errors.length()", is(3)));
- }
-
- @Test
- void OAuth회원가입_기본Valid() throws Exception {
-
-// given
- SignUp.OAuthRequest failRequest = AccountDummy.getFailSignUpOAuthRequestWithValid();
-
-// when, then
-// provider 공백, email 공백, name 공백, provider 제공x, nickname 공백, id 공백
- mockMvc.perform(post("/sign-up/oauth")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(failRequest)))
- .andDo(print())
- .andExpect(status().is4xxClientError())
- .andExpect(jsonPath("$.errors.length()", is(6)));
- }
-
- @Test
- void OAuth회원가입_WithValidator() throws Exception {
-
-// given
- SignUp.OAuthRequest failRequest = AccountDummy.getFailSignUpOAuthRequestWithValidator();
-
-// when, then
-// 지원하지 않는 provider, nickname 중복
- mockMvc.perform(post("/sign-up/oauth")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(failRequest)))
- .andDo(print())
- .andExpect(status().is4xxClientError())
- .andExpect(jsonPath("$.errors.length()", is(2)));
- }
-
- @Test
- void 일반로그인_기본Valid() throws Exception {
-
-// given
- Login.Common loginRequestDto = Login.Common.builder().email("asdfsdf").password("").build();
-
-// when, then
-// not email, empty password
- mockMvc.perform(post("/login").contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(loginRequestDto)))
- .andDo(print())
- .andExpect(status().is4xxClientError())
- .andExpect(jsonPath("$.errors.length()", is(2)));
- }
-
- @Test
- void 일반로그인_아이디_비밀번호가_일치하지_않은_경우() throws Exception {
-
-// given
- Login.Common loginRequestDto = Login.Common.builder().email("test@test.com").password("11").build();
-
-// when, then
-// 아이디와 비밀번호가 일치하지 않을 때, BadCredentialException 발생
- mockMvc.perform(post("/login").contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(loginRequestDto)))
- .andDo(print())
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.message", is("가입되지 않거나, 메일과 비밀번호가 맞지 않습니다.")));
- }
-
- @Test
- void OAuth로그인_기본Valid() throws Exception {
-
-// given
- Login.OAuth login = Login.OAuth.builder().provider("").id("").email("").build();
-
-// when, then
-// empty id
- mockMvc.perform(post("/login/oauth").contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(login)))
- .andDo(print())
- .andExpect(status().is4xxClientError())
- .andExpect(jsonPath("$.errors.length()", is(3)));
- }
-
- @Test
- void OAuth로그인_미가입_회원의_경우() throws Exception {
-
-// given
- Login.OAuth login = Login.OAuth.builder().provider("google")
- .id(SHA256.encrypt("google12341234")).email("failEmail@gmail.com").build();
-
-// when, then
- mockMvc.perform(post("/login/oauth").contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(login)))
- .andDo(print())
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.data.savedDetail", is(false)))
- .andExpect(jsonPath("$.data.emailCheckToken", nullValue()));
- }
-
- @Test
- void 회원가입_상세정보_저장_토큰없음_경력년도가_음수인_경우() throws Exception {
-
-// given
- SignUp.DetailRequest failRequest = AccountDummy.getFailSignUpDetailRequestWithValid();
-
-// when, then
-// 경력년도 음수, 토큰 없음
- mockMvc.perform(post("/sign-up/detail").contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(failRequest)))
- .andDo(print())
- .andExpect(status().is4xxClientError())
- .andExpect(jsonPath("$.errors.length()", is(2)));
- }
-
- @Test
- @WithUserDetails("quit@quit.com")
- void 이미_탈퇴한_회원() throws Exception {
-
-// given
- LoginUser user =
- (LoginUser) customUserDetailService.loadUserByUsername("quit@quit.com");
-
-// when
- mockMvc.perform(delete("/account/quit")
- .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(user))
- .contentType(MediaType.APPLICATION_JSON))
- .andDo(print())
- .andExpect(status().is4xxClientError());
- }
-
- @Test
- @WithUserDetails("quit@quit.com")
- void 탈퇴한_회원_로그인_실패() throws Exception {
-
-// given
- Login.Common login =
- Login.Common.builder().email("quit@quit.com").password(SHA256.encrypt("1234")).build();
-
-// when, then
- mockMvc.perform(post("/login")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(login)))
- .andDo(print())
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.message", is("이미 탈퇴한 회원입니다.")));
- }
-}
diff --git a/src/test/java/com/project/devidea/modules/account/AccountDummy.java b/src/test/java/com/project/devidea/modules/account/AccountDummy.java
index 591ce0d4..1d1f7242 100644
--- a/src/test/java/com/project/devidea/modules/account/AccountDummy.java
+++ b/src/test/java/com/project/devidea/modules/account/AccountDummy.java
@@ -1,6 +1,9 @@
package com.project.devidea.modules.account;
import com.project.devidea.infra.SHA256;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
import com.project.devidea.modules.account.dto.*;
import com.project.devidea.modules.tagzone.tag.TagDummy;
import com.project.devidea.modules.tagzone.zone.ZoneDummy;
@@ -12,6 +15,7 @@ public class AccountDummy {
public static SignUp.DetailRequest getSignUpDetailRequestDto() {
return SignUp.DetailRequest.builder()
+ .token("token123")
.careerYears(3).receiveEmail(true).jobField("웹개발").profilePath("1234")
.zones(Arrays.asList("서울특별시/광진구", "서울특별시/중랑구", "경기도/수원시"))
.techStacks(Arrays.asList("java", "python"))
@@ -139,4 +143,11 @@ public static Account getAccountWithTokenAndBefore30Minutes() {
.emailCheckToken(UUID.randomUUID().toString())
.emailCheckTokenGeneratedAt(LocalDateTime.now().minusMinutes(31L)).build();
}
+
+ public static SignUp.CommonRequest getSignUpForEvents() {
+ return SignUp.CommonRequest.builder()
+ .email("kokokoko@naver.com").name("고범석").gender("male")
+ .nickname("구직왕고범석").password(SHA256.encrypt("12341234"))
+ .passwordConfirm(SHA256.encrypt("12341234")).build();
+ }
}
diff --git a/src/test/java/com/project/devidea/modules/account/AccountServiceImplTest.java b/src/test/java/com/project/devidea/modules/account/AccountServiceImplTest.java
deleted file mode 100644
index f027f6b2..00000000
--- a/src/test/java/com/project/devidea/modules/account/AccountServiceImplTest.java
+++ /dev/null
@@ -1,378 +0,0 @@
-//package com.project.devidea.modules.account;
-//
-//import com.project.devidea.modules.environment.Environment;
-//import com.project.devidea.modules.environment.EnvironmentRepository;
-//import com.project.devidea.infra.config.security.LoginUser;
-//import com.project.devidea.infra.error.exception.ErrorCode;
-//import com.project.devidea.modules.account.dto.*;
-//import com.project.devidea.modules.account.event.SendEmailToken;
-//import com.project.devidea.modules.account.exception.AccountException;
-//import com.project.devidea.modules.account.repository.AccountRepository;
-//import com.project.devidea.modules.account.repository.InterestRepository;
-//import com.project.devidea.modules.account.repository.MainActivityZoneRepository;
-//import com.project.devidea.modules.tagzone.tag.Tag;
-//import com.project.devidea.modules.tagzone.tag.TagRepository;
-//import com.project.devidea.modules.tagzone.zone.Zone;
-//import com.project.devidea.modules.tagzone.zone.ZoneRepository;
-//import org.junit.jupiter.api.Test;
-//import org.junit.jupiter.api.extension.ExtendWith;
-//import org.mockito.InjectMocks;
-//import org.mockito.Mock;
-//import org.mockito.junit.jupiter.MockitoExtension;
-//import org.modelmapper.ModelMapper;
-//import org.springframework.context.ApplicationEventPublisher;
-//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-//
-//import java.util.*;
-//
-//import static org.junit.jupiter.api.Assertions.assertEquals;
-//import static org.junit.jupiter.api.Assertions.assertThrows;
-//import static org.mockito.Mockito.*;
-//
-//@ExtendWith(MockitoExtension.class)
-//class AccountServiceImplTest {
-//
-// @Mock
-// ModelMapper modelMapper;
-// @Mock
-// BCryptPasswordEncoder passwordEncoder;
-// @Mock
-// AccountRepository accountRepository;
-// @Mock
-// TagRepository tagRepository;
-// @Mock
-// InterestRepository interestRepository;
-// @Mock
-// ZoneRepository zoneRepository;
-// @Mock
-// MainActivityZoneRepository mainActivityZoneRepository;
-// @Mock
-// ApplicationEventPublisher publisher;
-// @Mock
-// EnvironmentRepository projectEnvironmentRepository;
-// @InjectMocks
-// AccountServiceImpl accountServiceImpl;
-//
-// @Test
-// void 회원가입_일반() throws Exception {
-//
-//// given
-// SignUp.CommonRequest request = mock(SignUp.CommonRequest.class);
-// Account account = mock(Account.class);
-// when(accountServiceImpl.saveAccount(request)).thenReturn(account);
-//
-//// when
-// accountServiceImpl.signUp(request);
-//
-//// then
-// verify(publisher).publishEvent(any(SendEmailToken.class));
-// verify(modelMapper).map(account, SignUp.Response.class);
-// }
-//
-// @Test
-// void 회원가입_saveAccount_동작() throws Exception {
-//
-//// given
-// SignUp.CommonRequest request = mock(SignUp.CommonRequest.class);
-// Account account = mock(Account.class);
-// when(accountRepository.save(any())).thenReturn(account);
-//
-//// when
-// Account saved = accountServiceImpl.saveAccount(request);
-//
-//// then
-// verify(accountRepository).save(any());
-// }
-//
-// @Test
-// void 프로필_가져오기() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// when(accountServiceImpl.getProfile(loginUser))
-// .thenReturn(AccountDummy.getAccountProfileResponseDtoAtMockito());
-//
-//// when
-// Update.ProfileResponse accountProfileResponseDto =
-// accountServiceImpl.getProfile(loginUser);
-//
-//// then
-// verify(modelMapper).map(loginUser.getAccount(), Update.ProfileResponse.class);
-// }
-//
-// @Test
-// void 프로필_업데이트() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// Account account = mock(Account.class);
-// Update.ProfileRequest request =
-// mock(Update.ProfileRequest.class);
-// when(accountRepository.findByEmail(account.getEmail()))
-// .thenReturn(Optional.of(account));
-//
-//// when
-// accountServiceImpl.updateProfile(loginUser, request);
-//
-//// then
-// verify(accountRepository).findByEmail(account.getEmail());
-// verify(account).updateProfile(request);
-// }
-//
-// @Test
-// void 패스워드_변경() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// Account account = mock(Account.class);
-// Update.PasswordRequest updatePasswordRequestDto = mock(Update.PasswordRequest.class);
-// String changePassword = "{bcrypt}1234";
-// when(passwordEncoder.encode(any()))
-// .thenReturn(changePassword);
-// when(accountRepository.findByEmail(account.getEmail()))
-// .thenReturn(Optional.of(account));
-//
-//// when
-// accountServiceImpl.updatePassword(loginUser, updatePasswordRequestDto);
-//
-//// then
-// verify(accountRepository).findByEmail(account.getEmail());
-// verify(updatePasswordRequestDto).getPassword();
-// verify(passwordEncoder).encode(updatePasswordRequestDto.getPassword());
-// verify(account).updatePassword(any());
-// }
-//
-// @Test
-// void 관심기술_가져오기() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// Account account = mock(Account.class);
-// when(accountRepository.findByEmailWithInterests(loginUser.getUsername())).thenReturn(account);
-//
-//// when
-// accountServiceImpl.getAccountInterests(loginUser);
-//
-//// then
-// verify(accountRepository).findByEmailWithInterests(loginUser.getUsername());
-// }
-//
-// @Test
-// void 관심기술_수정하기() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// Account account = mock(Account.class);
-// Update.Interest interestsUpdateRequestDto = mock(Update.Interest.class);
-// List tags = new ArrayList<>();
-// Tag tag = mock(Tag.class);
-// tags.add(tag);
-//
-// when(accountRepository.findByEmailWithInterests(loginUser.getUsername()))
-// .thenReturn(account);
-// when(tagRepository.findByFirstNameIn(interestsUpdateRequestDto.getInterests()))
-// .thenReturn(tags);
-//
-//// when
-// accountServiceImpl.updateAccountInterests(loginUser, interestsUpdateRequestDto);
-//
-//// then
-// verify(accountRepository).findByEmailWithInterests(loginUser.getUsername());
-// verify(tagRepository).findByFirstNameIn(interestsUpdateRequestDto.getInterests());
-// verify(interestRepository).deleteByAccount(account);
-// verify(account).updateInterests(any());
-// verify(interestRepository).saveAll(any());
-// }
-//
-// @Test
-// void 활동지역_가져오기() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// Account account = mock(Account.class);
-// when(accountRepository.findByEmailWithMainActivityZones(loginUser.getUsername()))
-// .thenReturn(account);
-//
-//// when
-// accountServiceImpl.getAccountMainActivityZones(loginUser);
-//
-//// then
-// verify(accountRepository).findByEmailWithMainActivityZones(loginUser.getUsername());
-// }
-//
-// @Test
-// void 활동지역_수정하기() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// Account account = mock(Account.class);
-// Update.MainActivityZone mainActivityZonesUpdateRequestDto =
-// mock(Update.MainActivityZone.class);
-// List zones = new ArrayList<>();
-// Zone zone = mock(Zone.class);
-// zones.add(zone);
-//
-// when(accountRepository.findByEmailWithMainActivityZones(loginUser.getUsername()))
-// .thenReturn(account);
-// when(zoneRepository.findByCityInAndProvinceIn(any(), any()))
-// .thenReturn(zones);
-//
-//// when
-// accountServiceImpl.updateAccountMainActivityZones(loginUser, mainActivityZonesUpdateRequestDto);
-//
-//// then
-// verify(accountRepository).findByEmailWithMainActivityZones(loginUser.getUsername());
-// verify(mainActivityZonesUpdateRequestDto).splitCityAndProvince();
-// verify(zoneRepository).findByCityInAndProvinceIn(any(), any());
-// verify(mainActivityZoneRepository).deleteByAccount(account);
-// verify(account).updateMainActivityZones(any());
-// verify(mainActivityZoneRepository).saveAll(any());
-// }
-//
-// @Test
-// void 닉네임_가져오기() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// Account account = mock(Account.class);
-// String nickname = "1234";
-// when(loginUser.getAccount()).thenReturn(account);
-// when(account.getNickname()).thenReturn(nickname);
-//
-//// when
-// accountServiceImpl.getAccountNickname(loginUser);
-//
-//// then
-// verify(loginUser).getAccount();
-// verify(account).getNickname();
-// }
-//
-// @Test
-// void 닉네임_변경하기() throws Exception{
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// String username = "username";
-// String changeUsername = "changeUsername";
-// Account account = mock(Account.class);
-// Update.NicknameRequest request = mock(Update.NicknameRequest.class);
-// when(loginUser.getUsername()).thenReturn(username);
-// when(request.getNickname()).thenReturn(changeUsername);
-// when(accountRepository.findByEmail(username))
-// .thenReturn(Optional.of(account));
-//
-//// when
-// accountServiceImpl.updateAccountNickname(loginUser, request);
-//
-//// then
-// verify(loginUser).getUsername();
-// verify(account).changeNickname(request.getNickname());
-// }
-//
-// @Test
-// void 알림_설정_가져오기() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// Account account = mock(Account.class);
-// Update.Notification response = mock(Update.Notification.class);
-// when(loginUser.getAccount()).thenReturn(account);
-//
-//// when
-// accountServiceImpl.getAccountNotification(loginUser);
-//
-//// then
-// verify(loginUser).getAccount();
-// verify(modelMapper).map(account, Update.Notification.class);
-// }
-//
-// @Test
-// void 알림_설정_수정하기() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// Account account = mock(Account.class);
-// Update.Notification request = mock(Update.Notification.class);
-// when(loginUser.getUsername()).thenReturn("email");
-// when(accountRepository.findByEmail(loginUser.getUsername()))
-// .thenReturn(Optional.of(account));
-//
-//
-//// when
-// accountServiceImpl.updateAccountNotification(loginUser, request);
-//
-//// then
-// verify(accountRepository).findByEmail(loginUser.getUsername());
-// verify(account).updateNotifications(request);
-// }
-//
-// @Test
-// void 회원_탈퇴() throws Exception {
-//
-//// given
-// LoginUser loginUser = mock(LoginUser.class);
-// Account account = mock(Account.class);
-// String email = "email";
-// when(loginUser.getUsername()).thenReturn(email);
-// when(accountRepository.findByEmail(any())).thenReturn(Optional.of(account));
-//
-//// when
-// accountServiceImpl.quit(loginUser);
-//
-//// then
-// verify(accountRepository).findByEmail(any());
-// verify(account).changeToQuit();
-// }
-//
-// @Test
-// void 메일_인증() throws Exception{
-//// given
-// String email = "email";
-// String token = "token";
-// Account account = mock(Account.class);
-// Environment environment = mock(Environment.class);
-// String url = "url";
-// when(accountRepository.findByEmail(email)).thenReturn(Optional.of(account));
-// when(projectEnvironmentRepository.findByDescription(any()))
-// .thenReturn(environment);
-// when(environment.getUrl()).thenReturn(url);
-//
-//// when
-// String returnUrl = accountServiceImpl.authenticateEmailToken(email, token);
-//
-//// then
-// verify(account).validateToken(token);
-// assertEquals(returnUrl, url);
-// }
-//
-// @Test
-// void 메일_인증실패_회원이_없을_경우() throws Exception {
-//
-//// given
-// String email = "email";
-// String token = "token";
-// when(accountRepository.findByEmail(email))
-// .thenThrow(new AccountException("회원을 찾을 수 없습니다.", ErrorCode.ACCOUNT_ERROR));
-//
-//// when, then
-// assertThrows(AccountException.class, () -> accountServiceImpl.authenticateEmailToken(email, token));
-// }
-//
-// @Test
-// void 프론트_URL_가져오기() throws Exception {
-//
-// // given
-// Environment environment = mock(Environment.class);
-// String front = "FRONT";
-// when(projectEnvironmentRepository.findByDescription(front))
-// .thenReturn(environment);
-// when(environment.getUrl()).thenReturn(anyString());
-//
-// // when
-// accountServiceImpl.getFrontURL();
-//
-// // then
-// verify(projectEnvironmentRepository).findByDescription(front);
-// verify(environment).getUrl();
-// }
-//}
diff --git a/src/test/java/com/project/devidea/modules/account/InterestRepositoryTest.java b/src/test/java/com/project/devidea/modules/account/InterestRepositoryTest.java
index a11591e9..d6229db8 100644
--- a/src/test/java/com/project/devidea/modules/account/InterestRepositoryTest.java
+++ b/src/test/java/com/project/devidea/modules/account/InterestRepositoryTest.java
@@ -1,14 +1,13 @@
package com.project.devidea.modules.account;
import com.project.devidea.modules.ModuleGenerator;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.account.repository.InterestRepository;
import com.project.devidea.modules.tagzone.tag.Tag;
import com.project.devidea.modules.tagzone.tag.TagRepository;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;
diff --git a/src/test/java/com/project/devidea/modules/account/controllers/CommonSignUpControllerTest.java b/src/test/java/com/project/devidea/modules/account/controllers/CommonSignUpControllerTest.java
new file mode 100644
index 00000000..87c0e44b
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/controllers/CommonSignUpControllerTest.java
@@ -0,0 +1,104 @@
+package com.project.devidea.modules.account.controllers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.project.devidea.infra.SHA256;
+import com.project.devidea.modules.account.AccountDummy;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.dto.SignUp;
+import com.project.devidea.modules.account.repository.AccountRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.filter.CharacterEncodingFilter;
+
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+@SpringBootTest
+@WebAppConfiguration
+@AutoConfigureMockMvc
+class CommonSignUpControllerTest {
+
+ @Autowired MockMvc mockMvc;
+ @Autowired ObjectMapper objectMapper;
+ @Autowired AccountRepository accountRepository;
+
+ @Test
+ void 일반_회원가입() throws Exception {
+
+// given
+ SignUp.CommonRequest request = SignUp.CommonRequest.builder().name("고범떡").email("kob@naver.com")
+ .password(SHA256.encrypt("123412341234")).passwordConfirm(SHA256.encrypt("123412341234"))
+ .gender("male").nickname("고범떡").build();
+
+// when
+ mockMvc.perform(post("/sign-up")
+ .content(objectMapper.writeValueAsString(request))
+ .contentType(MediaType.APPLICATION_JSON))
+ .andDo(print())
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.data.name", is("고범떡")))
+ .andExpect(jsonPath("$.data.email", is("kob@naver.com")))
+ .andExpect(jsonPath("$.data.gender", is("male")))
+ .andExpect(jsonPath("$.data.nickname", is("고범떡")));
+
+// then
+ assertEquals(request.getPassword(), SHA256.encrypt("123412341234"));
+ }
+
+ @Test
+ void 회원가입_메일_받은_후_인증메일_확인() throws Exception {
+
+// given
+ SignUp.CommonRequest join = AccountDummy.getSignUpRequest();
+ mockMvc.perform(post("/sign-up")
+ .content(objectMapper.writeValueAsString(join))
+ .contentType(MediaType.APPLICATION_JSON))
+ .andDo(print());
+
+ Account account = accountRepository.findByEmail(join.getEmail()).get();
+ MultiValueMap params = new LinkedMultiValueMap<>();
+ params.add("email", account.getEmail());
+ params.add("token", account.getEmailCheckToken());
+
+// when
+ mockMvc.perform(get("/authenticate-email-token").params(params))
+ .andDo(print())
+ .andExpect(status().is3xxRedirection())
+ .andExpect(redirectedUrl("http://localhost:3000/sign-up/detail?token=" +
+ account.getEmailCheckToken()));
+
+// then
+ Account find = accountRepository.findByEmail(join.getEmail()).get();
+ assertTrue(find.isAuthenticateEmail());
+ }
+
+ @Test
+ void 일반회원가입_기본Valid() throws Exception {
+
+// given
+ SignUp.CommonRequest failValidSignUpRequest = AccountDummy.getFailSignUpRequestWithValid();
+
+// when, then
+// 이메일 공백, password Blank, passwordConfirm Blank, name 길이, nickname Blank
+ mockMvc.perform(post("/sign-up")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(failValidSignUpRequest)))
+ .andDo(print())
+ .andExpect(status().is4xxClientError())
+ .andExpect(jsonPath("$.errors.length()", is(5)));
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/controllers/CommonSignUpControllerValidationTest.java b/src/test/java/com/project/devidea/modules/account/controllers/CommonSignUpControllerValidationTest.java
new file mode 100644
index 00000000..eca0ac6b
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/controllers/CommonSignUpControllerValidationTest.java
@@ -0,0 +1,59 @@
+package com.project.devidea.modules.account.controllers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.project.devidea.modules.account.AccountDummy;
+import com.project.devidea.modules.account.dto.SignUp;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.hamcrest.Matchers.is;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@SpringBootTest
+@WebAppConfiguration
+@AutoConfigureMockMvc
+public class CommonSignUpControllerValidationTest {
+
+ @Autowired MockMvc mockMvc;
+ @Autowired ObjectMapper objectMapper;
+
+ @Test
+ void 일반회원가입_기본Valid() throws Exception {
+
+// given
+ SignUp.CommonRequest failValidSignUpRequest = AccountDummy.getFailSignUpRequestWithValid();
+
+// when, then
+// 이메일 공백, password Blank, passwordConfirm Blank, name 길이, nickname Blank
+ mockMvc.perform(post("/sign-up")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(failValidSignUpRequest)))
+ .andDo(print())
+ .andExpect(status().is4xxClientError())
+ .andExpect(jsonPath("$.errors.length()", is(5)));
+ }
+
+ @Test
+ void 일반회원가입_WithValidator() throws Exception {
+
+// given
+ SignUp.CommonRequest commonRequest = AccountDummy.getFailSignUpRequestWithValidator();
+
+// when, then
+// 이메일 중복과 패스워드, 패스워드 확인값 불일치, 닉네임 중복
+ mockMvc.perform(post("/sign-up")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(commonRequest)))
+ .andDo(print())
+ .andExpect(status().is4xxClientError())
+ .andExpect(jsonPath("$.errors.length()", is(3)));
+ }
+}
diff --git a/src/test/java/com/project/devidea/modules/account/controllers/GetAccountInfoControllerTest.java b/src/test/java/com/project/devidea/modules/account/controllers/GetAccountInfoControllerTest.java
new file mode 100644
index 00000000..a503a91d
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/controllers/GetAccountInfoControllerTest.java
@@ -0,0 +1,125 @@
+package com.project.devidea.modules.account.controllers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.project.devidea.infra.config.security.CustomUserDetailService;
+import com.project.devidea.infra.config.security.LoginUser;
+import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
+import com.project.devidea.modules.account.domains.Account;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.security.test.context.support.WithUserDetails;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+
+import java.util.Map;
+
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@SpringBootTest
+@WebAppConfiguration
+@AutoConfigureMockMvc
+class GetAccountInfoControllerTest {
+
+ @Autowired MockMvc mockMvc;
+ @Autowired ObjectMapper objectMapper;
+ @Autowired CustomUserDetailService customUserDetailService;
+ @Autowired JwtTokenUtil jwtTokenUtil;
+
+ @Test
+ @WithUserDetails(value = "update@update.com")
+ void 유저의_프로필_가져오기() throws Exception {
+
+ // given
+ LoginUser loginUser =
+ (LoginUser) customUserDetailService.loadUserByUsername("update@update.com");
+
+ // when
+ MvcResult result = mockMvc.perform(get("/account/settings/profile")
+ .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser))
+ .contentType(MediaType.APPLICATION_JSON))
+ .andDo(print())
+ .andReturn();
+
+ // then
+ Account account = loginUser.getAccount();
+ String str = result.getResponse().getContentAsString();
+ Map map = objectMapper.readValue(str, Map.class);
+ assertAll(() -> assertEquals(account.getEmail(), "update@update.com"),
+ () -> assertEquals(account.getNickname(), "업뎃테스트"));
+ }
+
+ @Test
+ @WithUserDetails(value = "test@test.com")
+ void 관심기술_가져오기() throws Exception {
+
+// given
+ LoginUser loginUser =
+ (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
+
+// when, then
+ mockMvc.perform(get("/account/settings/interests")
+ .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser))
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andDo(print());
+ }
+
+ @Test
+ @WithUserDetails("test2@test.com")
+ void 활동지역_가져오기() throws Exception {
+
+// given
+ LoginUser loginUser =
+ (LoginUser) customUserDetailService.loadUserByUsername("test2@test.com");
+
+// when, then
+ mockMvc.perform(get("/account/settings/mainactivityzones")
+ .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser))
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andDo(print())
+ .andExpect(jsonPath("$.data.mainActivityZones.length()", is(0)));
+ }
+
+ @Test
+ @WithUserDetails("test@test.com")
+ void 닉네임_가져오기() throws Exception {
+
+// given
+ LoginUser loginUser =
+ (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
+
+// when, then
+ mockMvc.perform(get("/account/settings/nickname")
+ .contentType(MediaType.APPLICATION_JSON)
+ .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser)))
+ .andDo(print())
+ .andExpect(jsonPath("$.data.nickname", is(loginUser.getNickName())));
+ }
+
+ @Test
+ @WithUserDetails("test@test.com")
+ void 알림_설정_가져오기() throws Exception {
+
+// given
+ LoginUser loginUser =
+ (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
+
+// when, then
+ mockMvc.perform(get("/account/settings/notifications")
+ .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser))
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.data.length()", is(6)))
+ .andDo(print());
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/controllers/LoginControllerTest.java b/src/test/java/com/project/devidea/modules/account/controllers/LoginControllerTest.java
new file mode 100644
index 00000000..42dcea2d
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/controllers/LoginControllerTest.java
@@ -0,0 +1,118 @@
+package com.project.devidea.modules.account.controllers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.project.devidea.infra.SHA256;
+import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
+import com.project.devidea.modules.account.AccountDummy;
+import com.project.devidea.modules.account.dto.Login;
+import com.project.devidea.modules.account.dto.SignUp;
+import com.project.devidea.modules.account.repository.AccountRepository;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.mock.web.MockHttpServletResponse;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+@SpringBootTest
+@WebAppConfiguration
+@AutoConfigureMockMvc
+class LoginControllerTest {
+
+ @Autowired MockMvc mockMvc;
+ @Autowired ObjectMapper objectMapper;
+ @Autowired JwtTokenUtil jwtTokenUtil;
+ @Autowired AccountRepository accountRepository;
+
+ @Test
+ void 일반_로그인_디테일을_입력받지_못한_회원() throws Exception {
+
+// when, then
+ MockHttpServletResponse mockHttpServletResponse = mockMvc.perform(post("/login")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(Login.Common.builder()
+ .email("test2@test.com").password("1234").build())))
+ .andDo(print())
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.data.savedDetail", is(false)))
+ .andExpect(jsonPath("$.data.emailCheckToken", notNullValue()))
+ .andExpect(header().exists("Authorization")).andReturn().getResponse();
+
+ String jwtToken = mockHttpServletResponse.getHeader("Authorization").substring(7);
+ String username = jwtTokenUtil.getUsernameFromToken(jwtToken);
+ assertEquals(username, "test2@test.com");
+ }
+
+ @Test
+ void OAuth_로그인_디테일을_입력받지_못한_회원() throws Exception {
+
+// given
+ SignUp.OAuthRequest join = AccountDummy.getSignUpOAuthRequestDto2();
+ mockMvc.perform(post("/sign-up/oauth").contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(join))).andDo(print());
+
+ Login.OAuth login = Login.OAuth.builder()
+ .provider(join.getProvider()).id(join.getId()).email(join.getEmail()).build();
+
+// when
+ MockHttpServletResponse response = mockMvc.perform(post("/login/oauth")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(login)))
+ .andDo(print())
+ .andExpect(status().isOk())
+ .andExpect(header().exists("Authorization"))
+ .andExpect(jsonPath("$.data.savedDetail", is(false)))
+ .andExpect(jsonPath("$.data.emailCheckToken", notNullValue()))
+ .andReturn().getResponse();
+
+// then, 토큰과 디테일을 입력받지 못한 회원임을 확인
+ String jwtToken = response.getHeader("Authorization").substring(7);
+ String username = jwtTokenUtil.getUsernameFromToken(jwtToken);
+ assertEquals(username, join.getEmail());
+ }
+
+ @Test
+ void OAuth_로그인_디테일이_입력된_회원() throws Exception {
+
+// given
+ SignUp.OAuthRequest join = AccountDummy.getSignUpOAuthRequestDto3();
+// 회원가입
+ mockMvc.perform(post("/sign-up/oauth").contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(join))).andDo(print());
+// 디테일 추가
+ SignUp.DetailRequest detail = AccountDummy.getSignUpDetailRequestDto();
+ String token = accountRepository.findByEmail(join.getEmail()).get().getEmailCheckToken();
+ detail.setToken(token);
+ mockMvc.perform(post("/sign-up/detail").contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(detail)))
+ .andDo(print());
+
+ Login.OAuth login = Login.OAuth.builder()
+ .provider(join.getProvider()).id(join.getId()).email(join.getEmail()).build();
+
+// when
+ MockHttpServletResponse response = mockMvc.perform(post("/login/oauth")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(login)))
+ .andDo(print())
+ .andExpect(status().isOk())
+ .andExpect(header().exists("Authorization"))
+ .andExpect(jsonPath("$.data.savedDetail", is(true)))
+ .andReturn().getResponse();
+
+// then, 토큰과 디테일을 입력받지 못한 회원임을 확인
+ String jwtToken = response.getHeader("Authorization").substring(7);
+ String username = jwtTokenUtil.getUsernameFromToken(jwtToken);
+ assertEquals(username, join.getEmail());
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/controllers/LoginControllerValidationTest.java b/src/test/java/com/project/devidea/modules/account/controllers/LoginControllerValidationTest.java
new file mode 100644
index 00000000..911721c6
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/controllers/LoginControllerValidationTest.java
@@ -0,0 +1,107 @@
+package com.project.devidea.modules.account.controllers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.project.devidea.infra.SHA256;
+import com.project.devidea.modules.account.dto.Login;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.security.test.context.support.WithUserDetails;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@SpringBootTest
+@WebAppConfiguration
+@AutoConfigureMockMvc
+public class LoginControllerValidationTest {
+
+ @Autowired MockMvc mockMvc;
+ @Autowired ObjectMapper objectMapper;
+
+ @Test
+ void 일반로그인_기본Valid() throws Exception {
+
+// given
+ Login.Common loginRequestDto = Login.Common.builder().email("asdfsdf").password("").build();
+
+// when, then
+// not email, empty password
+ mockMvc.perform(post("/login").contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(loginRequestDto)))
+ .andDo(print())
+ .andExpect(status().is4xxClientError())
+ .andExpect(jsonPath("$.errors.length()", is(2)));
+ }
+
+ @Test
+ void 일반로그인_아이디_비밀번호가_일치하지_않은_경우() throws Exception {
+
+// given
+ Login.Common loginRequestDto = Login.Common.builder().email("test@test.com").password("11").build();
+
+// when, then
+// 아이디와 비밀번호가 일치하지 않을 때, BadCredentialException 발생
+ mockMvc.perform(post("/login").contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(loginRequestDto)))
+ .andDo(print())
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.message", is("가입되지 않거나, 메일과 비밀번호가 맞지 않습니다.")));
+ }
+
+ @Test
+ void OAuth로그인_기본Valid() throws Exception {
+
+// given
+ Login.OAuth login = Login.OAuth.builder().provider("").id("").email("").build();
+
+// when, then
+// empty id
+ mockMvc.perform(post("/login/oauth").contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(login)))
+ .andDo(print())
+ .andExpect(status().is4xxClientError())
+ .andExpect(jsonPath("$.errors.length()", is(3)));
+ }
+
+ @Test
+ void OAuth로그인_미가입_회원의_경우() throws Exception {
+
+// given
+ Login.OAuth login = Login.OAuth.builder().provider("google")
+ .id(SHA256.encrypt("google12341234")).email("failEmail@gmail.com").build();
+
+// when, then
+ mockMvc.perform(post("/login/oauth").contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(login)))
+ .andDo(print())
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.data.savedDetail", is(false)))
+ .andExpect(jsonPath("$.data.emailCheckToken", nullValue()));
+ }
+
+ @Test
+ @WithUserDetails("quit@quit.com")
+ void 탈퇴한_회원_로그인_실패() throws Exception {
+
+// given
+ Login.Common login =
+ Login.Common.builder().email("quit@quit.com").password(SHA256.encrypt("1234")).build();
+
+// when, then
+ mockMvc.perform(post("/login")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(login)))
+ .andDo(print())
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.message", is("이미 탈퇴한 회원입니다.")));
+ }
+}
diff --git a/src/test/java/com/project/devidea/modules/account/controllers/OAuthSignUpControllerTest.java b/src/test/java/com/project/devidea/modules/account/controllers/OAuthSignUpControllerTest.java
new file mode 100644
index 00000000..168f9024
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/controllers/OAuthSignUpControllerTest.java
@@ -0,0 +1,46 @@
+package com.project.devidea.modules.account.controllers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.project.devidea.infra.SHA256;
+import com.project.devidea.modules.account.AccountDummy;
+import com.project.devidea.modules.account.dto.SignUp;
+import com.project.devidea.modules.account.repository.AccountRepository;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+
+@SpringBootTest
+@WebAppConfiguration
+@AutoConfigureMockMvc
+class OAuthSignUpControllerTest {
+
+ @Autowired MockMvc mockMvc;
+ @Autowired ObjectMapper objectMapper;
+
+ @Test
+ @DisplayName("OAuth 회원가입")
+ void saveOAuthGoogle() throws Exception {
+
+// given
+ SignUp.OAuthRequest signUpOAuthRequestDto = AccountDummy.getSignUpOAuthRequestDto();
+ String encryptedId = signUpOAuthRequestDto.getId();
+
+// when
+ mockMvc.perform(post("/sign-up/oauth")
+ .content(objectMapper.writeValueAsString(signUpOAuthRequestDto))
+ .contentType(MediaType.APPLICATION_JSON))
+ .andDo(print());
+
+// then
+ assertEquals(encryptedId, SHA256.encrypt("naver12341234"));
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/controllers/OAuthSignUpControllerValidationTest.java b/src/test/java/com/project/devidea/modules/account/controllers/OAuthSignUpControllerValidationTest.java
new file mode 100644
index 00000000..732be658
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/controllers/OAuthSignUpControllerValidationTest.java
@@ -0,0 +1,59 @@
+package com.project.devidea.modules.account.controllers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.project.devidea.modules.account.AccountDummy;
+import com.project.devidea.modules.account.dto.SignUp;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.hamcrest.Matchers.is;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@SpringBootTest
+@WebAppConfiguration
+@AutoConfigureMockMvc
+public class OAuthSignUpControllerValidationTest {
+
+ @Autowired MockMvc mockMvc;
+ @Autowired ObjectMapper objectMapper;
+
+ @Test
+ void OAuth회원가입_기본Valid() throws Exception {
+
+// given
+ SignUp.OAuthRequest failRequest = AccountDummy.getFailSignUpOAuthRequestWithValid();
+
+// when, then
+// provider 공백, email 공백, name 공백, provider 제공x, nickname 공백, id 공백
+ mockMvc.perform(post("/sign-up/oauth")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(failRequest)))
+ .andDo(print())
+ .andExpect(status().is4xxClientError())
+ .andExpect(jsonPath("$.errors.length()", is(6)));
+ }
+
+ @Test
+ void OAuth회원가입_WithValidator() throws Exception {
+
+// given
+ SignUp.OAuthRequest failRequest = AccountDummy.getFailSignUpOAuthRequestWithValidator();
+
+// when, then
+// 지원하지 않는 provider, nickname 중복
+ mockMvc.perform(post("/sign-up/oauth")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(failRequest)))
+ .andDo(print())
+ .andExpect(status().is4xxClientError())
+ .andExpect(jsonPath("$.errors.length()", is(2)));
+ }
+}
diff --git a/src/test/java/com/project/devidea/modules/account/controllers/SignUpDetailControllerTest.java b/src/test/java/com/project/devidea/modules/account/controllers/SignUpDetailControllerTest.java
new file mode 100644
index 00000000..3a68a678
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/controllers/SignUpDetailControllerTest.java
@@ -0,0 +1,77 @@
+package com.project.devidea.modules.account.controllers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.project.devidea.infra.config.security.CustomUserDetailService;
+import com.project.devidea.infra.config.security.LoginUser;
+import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
+import com.project.devidea.modules.account.AccountDummy;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
+import com.project.devidea.modules.account.dto.SignUp;
+import com.project.devidea.modules.account.repository.AccountRepository;
+import com.project.devidea.modules.account.repository.InterestRepository;
+import com.project.devidea.modules.account.repository.MainActivityZoneRepository;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.security.test.context.support.WithUserDetails;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+
+@SpringBootTest
+@WebAppConfiguration
+@AutoConfigureMockMvc
+class SignUpDetailControllerTest {
+
+ @Autowired MockMvc mockMvc;
+ @Autowired ObjectMapper objectMapper;
+ @Autowired CustomUserDetailService customUserDetailService;
+ @Autowired MainActivityZoneRepository mainActivityZoneRepository;
+ @Autowired InterestRepository interestRepository;
+ @Autowired AccountRepository accountRepository;
+ @Autowired JwtTokenUtil jwtTokenUtil;
+
+ @Test
+ @WithUserDetails("update@update.com")
+ void 회원가입_상세정보_저장() throws Exception {
+
+// given
+ LoginUser loginUser = (LoginUser) customUserDetailService.loadUserByUsername("update@update.com");
+ SignUp.DetailRequest request = AccountDummy.getSignUpDetailRequestDto();
+ request.setToken(loginUser.getAccount().getEmailCheckToken());
+
+// when
+ mockMvc.perform(post("/sign-up/detail")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(request)))
+ .andDo(print());
+
+// then
+ Account account = accountRepository.findByEmailWithMainActivityZoneAndInterests(loginUser.getUsername());
+ assertAll(
+ () -> Assertions.assertTrue(account.isReceiveEmail()),
+ () -> assertEquals(account.getJob(), "웹개발"),
+ () -> assertEquals(account.getProfilePath(), "1234"),
+ () -> assertEquals(account.getTechStacks(), "java/python"),
+ () -> assertEquals(account.getInterests().size(), 3),
+ () -> assertEquals(account.getMainActivityZones().size(), 3));
+
+// then mainActivityZone, interest
+ List mainActivityZones = mainActivityZoneRepository.findByAccount(account);
+ List interests = interestRepository.findByAccount(account);
+ assertAll(
+ () -> assertEquals(mainActivityZones.size(), 3),
+ () -> assertEquals(interests.size(), 3));
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/controllers/SignUpDetailControllerValidationTest.java b/src/test/java/com/project/devidea/modules/account/controllers/SignUpDetailControllerValidationTest.java
new file mode 100644
index 00000000..b3c5db52
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/controllers/SignUpDetailControllerValidationTest.java
@@ -0,0 +1,42 @@
+package com.project.devidea.modules.account.controllers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.project.devidea.modules.account.AccountDummy;
+import com.project.devidea.modules.account.dto.SignUp;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.hamcrest.Matchers.is;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@SpringBootTest
+@WebAppConfiguration
+@AutoConfigureMockMvc
+public class SignUpDetailControllerValidationTest {
+
+ @Autowired MockMvc mockMvc;
+ @Autowired ObjectMapper objectMapper;
+
+ @Test
+ void 회원가입_상세정보_저장_토큰없음_경력년도가_음수인_경우() throws Exception {
+
+// given
+ SignUp.DetailRequest failRequest = AccountDummy.getFailSignUpDetailRequestWithValid();
+
+// when, then
+// 경력년도 음수, 토큰 없음
+ mockMvc.perform(post("/sign-up/detail").contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(failRequest)))
+ .andDo(print())
+ .andExpect(status().is4xxClientError())
+ .andExpect(jsonPath("$.errors.length()", is(2)));
+ }
+}
diff --git a/src/test/java/com/project/devidea/modules/account/AccountInfoControllerTest.java b/src/test/java/com/project/devidea/modules/account/controllers/UpdateAccountInfoControllerTest.java
similarity index 79%
rename from src/test/java/com/project/devidea/modules/account/AccountInfoControllerTest.java
rename to src/test/java/com/project/devidea/modules/account/controllers/UpdateAccountInfoControllerTest.java
index e373e3c7..d984cd2c 100644
--- a/src/test/java/com/project/devidea/modules/account/AccountInfoControllerTest.java
+++ b/src/test/java/com/project/devidea/modules/account/controllers/UpdateAccountInfoControllerTest.java
@@ -1,13 +1,16 @@
-package com.project.devidea.modules.account;
+package com.project.devidea.modules.account.controllers;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.project.devidea.infra.config.security.CustomUserDetailService;
import com.project.devidea.infra.config.security.LoginUser;
import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
-import com.project.devidea.modules.account.dto.*;
-import lombok.extern.slf4j.Slf4j;
+import com.project.devidea.modules.account.AccountDummy;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.dto.Login;
+import com.project.devidea.modules.account.dto.Update;
import org.apache.tomcat.util.buf.StringUtils;
import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,55 +21,25 @@
import org.springframework.security.test.context.support.WithUserDetails;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.MvcResult;
-
-import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-import static org.hamcrest.Matchers.is;
@SpringBootTest
@WebAppConfiguration
@AutoConfigureMockMvc
-@Slf4j
-class AccountInfoControllerTest {
-
- @Autowired
- MockMvc mockMvc;
- @Autowired
- ObjectMapper objectMapper;
- @Autowired
- CustomUserDetailService customUserDetailService;
- @Autowired
- JwtTokenUtil jwtTokenUtil;
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+class UpdateAccountInfoControllerTest {
- @Test
- @WithUserDetails(value = "test@test.com")
- void 유저의_프로필_가져오기() throws Exception {
-
-// given
- LoginUser loginUser =
- (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
-
-// when
- MvcResult result = mockMvc.perform(get("/account/settings/profile")
- .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser))
- .contentType(MediaType.APPLICATION_JSON))
- .andDo(print())
- .andReturn();
-
-// then
- Account account = loginUser.getAccount();
- String str = result.getResponse().getContentAsString();
- Map map = objectMapper.readValue(str, Map.class);
- assertAll(() -> assertEquals(account.getEmail(), "test@test.com"),
- () -> assertEquals(account.getNickname(), "테스트_회원"));
- }
+ @Autowired MockMvc mockMvc;
+ @Autowired ObjectMapper objectMapper;
+ @Autowired CustomUserDetailService customUserDetailService;
+ @Autowired JwtTokenUtil jwtTokenUtil;
@Test
@WithUserDetails(value = "test@test.com")
@@ -131,22 +104,6 @@ class AccountInfoControllerTest {
assertEquals(username, "test@test.com");
}
- @Test
- @WithUserDetails(value = "test@test.com")
- void 관심기술_가져오기() throws Exception {
-
-// given
- LoginUser loginUser =
- (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
-
-// when, then
- mockMvc.perform(get("/account/settings/interests")
- .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser))
- .contentType(MediaType.APPLICATION_JSON))
- .andExpect(status().isOk())
- .andDo(print());
- }
-
@Test
@WithUserDetails(value = "test@test.com")
void 관심기술_수정하기() throws Exception {
@@ -172,23 +129,6 @@ class AccountInfoControllerTest {
.andDo(print());
}
- @Test
- @WithUserDetails("test@test.com")
- void 활동지역_가져오기() throws Exception {
-
-// given
- LoginUser loginUser =
- (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
-
-// when, then
- mockMvc.perform(get("/account/settings/mainactivityzones")
- .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser))
- .contentType(MediaType.APPLICATION_JSON))
- .andExpect(status().isOk())
- .andDo(print())
- .andExpect(jsonPath("$.data.mainActivityZones.length()", is(0)));
- }
-
@Test
@WithUserDetails("test@test.com")
void 활동지역_수정하기() throws Exception {
@@ -213,22 +153,6 @@ class AccountInfoControllerTest {
.andExpect(jsonPath("$.data.mainActivityZones.length()", is(2)));
}
- @Test
- @WithUserDetails("test@test.com")
- void 닉네임_가져오기() throws Exception {
-
-// given
- LoginUser loginUser =
- (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
-
-// when, then
- mockMvc.perform(get("/account/settings/nickname")
- .contentType(MediaType.APPLICATION_JSON)
- .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser)))
- .andDo(print())
- .andExpect(jsonPath("$.data.nickname", is(loginUser.getNickName())));
- }
-
@Test
@WithUserDetails("test@test.com")
void 닉네임_변경하기() throws Exception {
@@ -251,23 +175,6 @@ class AccountInfoControllerTest {
assertThat(findUser.getNickName()).isEqualTo(request.getNickname());
}
- @Test
- @WithUserDetails("test@test.com")
- void 알림_설정_가져오기() throws Exception {
-
-// given
- LoginUser loginUser =
- (LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
-
-// when, then
- mockMvc.perform(get("/account/settings/notifications")
- .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser))
- .contentType(MediaType.APPLICATION_JSON))
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.data.length()", is(6)))
- .andDo(print());
- }
-
@Test
@WithUserDetails("test@test.com")
void 알림_설정_수정하기() throws Exception {
@@ -300,7 +207,29 @@ class AccountInfoControllerTest {
.andExpect(jsonPath("$.data.receiveRecruitingNotification", is(true)));
}
-// ValidationTest ===================================================================================================
+ @Test
+ @WithUserDetails("out@out.com")
+ @Order(value = Integer.MAX_VALUE - 1)
+ void 회원_탈퇴() throws Exception {
+
+// given
+ LoginUser user =
+ (LoginUser) customUserDetailService.loadUserByUsername("out@out.com");
+
+// when
+ mockMvc.perform(delete("/account/settings/quit")
+ .header("Authorization", jwtTokenUtil.generateToken(user))
+ .contentType(MediaType.APPLICATION_JSON))
+ .andDo(print())
+ .andExpect(status().isOk());
+
+// then
+ LoginUser confirm =
+ (LoginUser) customUserDetailService.loadUserByUsername("out@out.com");
+ assertTrue(confirm.getAccount().isQuit());
+ }
+
+ // ValidationTest ===================================================================================================
@Test
@WithUserDetails("test@test.com")
void 패스워드_변경_유효성_검사_1_패스워드와_패스워드확인_공백체크() throws Exception {
@@ -325,13 +254,13 @@ class AccountInfoControllerTest {
@WithUserDetails("test@test.com")
void 패스워드_변경_유효성_검사_2_패스워드와_패스워드확인값_불일치() throws Exception {
- // given
+ // given
LoginUser loginUser =
(LoginUser) customUserDetailService.loadUserByUsername("test@test.com");
Update.PasswordRequest updatePasswordRequestDto = AccountDummy.getNotEqualsPasswordAndPasswordConfirm();
- // when, then
+ // when, then
mockMvc.perform(patch("/account/settings/password")
.header("Authorization", "Bearer " + jwtTokenUtil.generateToken(loginUser))
.contentType(MediaType.APPLICATION_JSON)
@@ -379,4 +308,20 @@ class AccountInfoControllerTest {
.andExpect(status().is4xxClientError())
.andExpect(jsonPath("$.errors.length()", is(1)));
}
-}
+
+ @Test
+ @WithUserDetails("quit@quit.com")
+ void 이미_탈퇴한_회원() throws Exception {
+
+// given
+ LoginUser user =
+ (LoginUser) customUserDetailService.loadUserByUsername("quit@quit.com");
+
+// when
+ mockMvc.perform(delete("/account/quit")
+ .header("Authorization", "Bearer " + jwtTokenUtil.generateToken(user))
+ .contentType(MediaType.APPLICATION_JSON))
+ .andDo(print())
+ .andExpect(status().is4xxClientError());
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/AccountTest.java b/src/test/java/com/project/devidea/modules/account/domains/AccountTest.java
similarity index 95%
rename from src/test/java/com/project/devidea/modules/account/AccountTest.java
rename to src/test/java/com/project/devidea/modules/account/domains/AccountTest.java
index 4800d0e9..dd511255 100644
--- a/src/test/java/com/project/devidea/modules/account/AccountTest.java
+++ b/src/test/java/com/project/devidea/modules/account/domains/AccountTest.java
@@ -1,5 +1,9 @@
-package com.project.devidea.modules.account;
+package com.project.devidea.modules.account.domains;
+import com.project.devidea.modules.account.AccountDummy;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
import com.project.devidea.modules.account.dto.*;
import com.project.devidea.modules.account.exception.AccountException;
import com.project.devidea.modules.tagzone.tag.Tag;
diff --git a/src/test/java/com/project/devidea/modules/account/event/AccountEventListenerTest.java b/src/test/java/com/project/devidea/modules/account/event/AccountEventListenerTest.java
index b898fd07..e2ee43f7 100644
--- a/src/test/java/com/project/devidea/modules/account/event/AccountEventListenerTest.java
+++ b/src/test/java/com/project/devidea/modules/account/event/AccountEventListenerTest.java
@@ -24,7 +24,7 @@ class AccountEventListenerTest {
void 인증메일_비동기_테스트() throws Exception {
// given
- SignUp.CommonRequest request = AccountDummy.getSignUpRequest();
+ SignUp.CommonRequest request = AccountDummy.getSignUpForEvents();
// when
commonSignUpService.signUp(request);
diff --git a/src/test/java/com/project/devidea/modules/account/repository/AccountRepositoryCustomImplTest.java b/src/test/java/com/project/devidea/modules/account/repository/AccountRepositoryCustomImplTest.java
index 9d036cd2..672abdd6 100644
--- a/src/test/java/com/project/devidea/modules/account/repository/AccountRepositoryCustomImplTest.java
+++ b/src/test/java/com/project/devidea/modules/account/repository/AccountRepositoryCustomImplTest.java
@@ -1,12 +1,10 @@
package com.project.devidea.modules.account.repository;
import com.project.devidea.infra.TestConfig;
-import com.project.devidea.infra.config.security.CustomUserDetailService;
-import com.project.devidea.infra.config.security.LoginUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.AccountDummy;
-import com.project.devidea.modules.account.Interest;
-import com.project.devidea.modules.account.MainActivityZone;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
import com.project.devidea.modules.tagzone.tag.Tag;
import com.project.devidea.modules.tagzone.tag.TagDummy;
import com.project.devidea.modules.tagzone.tag.TagRepository;
@@ -14,19 +12,14 @@
import com.project.devidea.modules.tagzone.zone.ZoneDummy;
import com.project.devidea.modules.tagzone.zone.ZoneRepository;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
-import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ActiveProfiles;
-import org.springframework.transaction.annotation.Transactional;
-import java.time.ZonedDateTime;
import java.util.HashSet;
import java.util.List;
-import java.util.Optional;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.*;
diff --git a/src/test/java/com/project/devidea/modules/account/repository/AccountRepositoryTest.java b/src/test/java/com/project/devidea/modules/account/repository/AccountRepositoryTest.java
index d0b2eeb1..ad3921f5 100644
--- a/src/test/java/com/project/devidea/modules/account/repository/AccountRepositoryTest.java
+++ b/src/test/java/com/project/devidea/modules/account/repository/AccountRepositoryTest.java
@@ -1,8 +1,7 @@
package com.project.devidea.modules.account.repository;
import com.project.devidea.infra.TestConfig;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.repository.AccountRepository;
+import com.project.devidea.modules.account.domains.Account;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
diff --git a/src/test/java/com/project/devidea/modules/account/services/info/GetAccountInfoServiceImplTest.java b/src/test/java/com/project/devidea/modules/account/services/info/GetAccountInfoServiceImplTest.java
new file mode 100644
index 00000000..1357879b
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/services/info/GetAccountInfoServiceImplTest.java
@@ -0,0 +1,104 @@
+package com.project.devidea.modules.account.services.info;
+
+import com.project.devidea.infra.config.security.LoginUser;
+import com.project.devidea.modules.account.AccountDummy;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.dto.Update;
+import com.project.devidea.modules.account.repository.AccountRepository;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.modelmapper.ModelMapper;
+
+import static org.mockito.Mockito.*;
+
+@ExtendWith(MockitoExtension.class)
+class GetAccountInfoServiceImplTest {
+
+ @Mock ModelMapper modelMapper;
+ @Mock AccountRepository accountRepository;
+ @InjectMocks GetAccountInfoServiceImpl getAccountInfoService;
+
+ @Test
+ void 프로필_가져오기() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ when(getAccountInfoService.profile(loginUser))
+ .thenReturn(AccountDummy.getAccountProfileResponseDtoAtMockito());
+
+// when
+ Update.ProfileResponse response =
+ getAccountInfoService.profile(loginUser);
+
+// then
+ verify(modelMapper).map(loginUser.getAccount(), Update.ProfileResponse.class);
+ }
+
+ @Test
+ void 관심기술_가져오기() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ Account account = mock(Account.class);
+ when(accountRepository.findByEmailWithInterests(loginUser.getUsername())).thenReturn(account);
+
+// when
+ getAccountInfoService.interests(loginUser);
+
+// then
+ verify(accountRepository).findByEmailWithInterests(loginUser.getUsername());
+ }
+
+ @Test
+ void 활동지역_가져오기() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ Account account = mock(Account.class);
+ when(accountRepository.findByEmailWithMainActivityZones(loginUser.getUsername()))
+ .thenReturn(account);
+
+// when
+ getAccountInfoService.mainActivityZones(loginUser);
+
+// then
+ verify(accountRepository).findByEmailWithMainActivityZones(loginUser.getUsername());
+ }
+
+ @Test
+ void 닉네임_가져오기() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ Account account = mock(Account.class);
+ String nickname = "1234";
+ when(loginUser.getAccount()).thenReturn(account);
+ when(account.getNickname()).thenReturn(nickname);
+
+// when
+ getAccountInfoService.nickname(loginUser);
+
+// then
+ verify(loginUser).getAccount();
+ verify(account).getNickname();
+ }
+
+ @Test
+ void 알림_설정_가져오기() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ Account account = mock(Account.class);
+ when(loginUser.getAccount()).thenReturn(account);
+
+// when
+ getAccountInfoService.notification(loginUser);
+
+// then
+ verify(loginUser).getAccount();
+ verify(modelMapper).map(account, Update.Notification.class);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/services/info/UpdateAccountInfoServiceImplTest.java b/src/test/java/com/project/devidea/modules/account/services/info/UpdateAccountInfoServiceImplTest.java
new file mode 100644
index 00000000..2a0df2e3
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/services/info/UpdateAccountInfoServiceImplTest.java
@@ -0,0 +1,208 @@
+package com.project.devidea.modules.account.services.info;
+
+import com.project.devidea.infra.config.security.LoginUser;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
+import com.project.devidea.modules.account.dto.Update;
+import com.project.devidea.modules.account.repository.AccountRepository;
+import com.project.devidea.modules.account.repository.InterestRepository;
+import com.project.devidea.modules.account.repository.MainActivityZoneRepository;
+import com.project.devidea.modules.account.util.AccountToManyUtil;
+import com.project.devidea.modules.tagzone.tag.Tag;
+import com.project.devidea.modules.tagzone.tag.TagRepository;
+import com.project.devidea.modules.tagzone.zone.Zone;
+import com.project.devidea.modules.tagzone.zone.ZoneRepository;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+
+import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.verify;
+
+@ExtendWith(MockitoExtension.class)
+class UpdateAccountInfoServiceImplTest {
+
+ @Mock AccountRepository accountRepository;
+ @Mock BCryptPasswordEncoder passwordEncoder;
+ @Mock TagRepository tagRepository;
+ @Mock InterestRepository interestRepository;
+ @Mock ZoneRepository zoneRepository;
+ @Mock MainActivityZoneRepository mainActivityZoneRepository;
+ @Mock AccountToManyUtil accountToManyUtil;
+ @InjectMocks UpdateAccountInfoServiceImpl updateAccountInfoService;
+
+ @Test
+ void 프로필_업데이트() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ Account account = mock(Account.class);
+ Update.ProfileRequest request =
+ mock(Update.ProfileRequest.class);
+ when(accountRepository.findByEmail(account.getEmail()))
+ .thenReturn(Optional.of(account));
+
+// when
+ updateAccountInfoService.profile(loginUser, request);
+
+// then
+ verify(accountRepository).findByEmail(account.getEmail());
+ verify(account).updateProfile(request);
+ }
+
+ @Test
+ void 패스워드_변경() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ Account account = mock(Account.class);
+ Update.PasswordRequest request = mock(Update.PasswordRequest.class);
+ String changePassword = "{bcrypt}1234";
+ when(passwordEncoder.encode(any()))
+ .thenReturn(changePassword);
+ when(accountRepository.findByEmail(account.getEmail()))
+ .thenReturn(Optional.of(account));
+
+// when
+ updateAccountInfoService.password(loginUser, request);
+
+// then
+ verify(accountRepository).findByEmail(account.getEmail());
+ verify(request).getPassword();
+ verify(passwordEncoder).encode(request.getPassword());
+ verify(account).updatePassword(any());
+ }
+ @Test
+ void 관심기술_수정하기() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ Account account = mock(Account.class);
+ Update.Interest request = mock(Update.Interest.class);
+ List tags = new ArrayList<>();
+ Tag tag = mock(Tag.class);
+ tags.add(tag);
+ Set interestSet = mock(Set.class);
+
+ when(accountRepository.findByEmailWithInterests(loginUser.getUsername()))
+ .thenReturn(account);
+ when(tagRepository.findByFirstNameIn(request.getInterests()))
+ .thenReturn(tags);
+ when(accountToManyUtil.createInterestSet(account, tags))
+ .thenReturn(interestSet);
+
+
+// when
+ updateAccountInfoService.interest(loginUser, request);
+
+// then
+ verify(accountRepository).findByEmailWithInterests(loginUser.getUsername());
+ verify(tagRepository).findByFirstNameIn(request.getInterests());
+ verify(interestRepository).deleteByAccount(account);
+ verify(account).updateInterests(interestSet);
+ verify(interestRepository).saveAll(interestSet);
+ }
+
+
+ @Test
+ void 활동지역_수정하기() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ Account account = mock(Account.class);
+ Update.MainActivityZone request =
+ mock(Update.MainActivityZone.class);
+ List zones = new ArrayList<>();
+ Zone zone = mock(Zone.class);
+ Set mainActivityZoneSet = mock(Set.class);
+
+ zones.add(zone);
+
+ when(accountRepository.findByEmailWithMainActivityZones(loginUser.getUsername()))
+ .thenReturn(account);
+ when(zoneRepository.findByCityInAndProvinceIn(any(), any()))
+ .thenReturn(zones);
+ when(accountToManyUtil.createMainActivityZoneSet(account, zones))
+ .thenReturn(mainActivityZoneSet);
+
+// when
+ updateAccountInfoService.mainActivityZones(loginUser, request);
+
+// then
+ verify(accountRepository).findByEmailWithMainActivityZones(loginUser.getUsername());
+ verify(request).splitCityAndProvince();
+ verify(zoneRepository).findByCityInAndProvinceIn(any(), any());
+ verify(mainActivityZoneRepository).deleteByAccount(account);
+ verify(account).updateMainActivityZones(mainActivityZoneSet);
+ verify(mainActivityZoneRepository).saveAll(mainActivityZoneSet);
+ }
+
+ @Test
+ void 닉네임_변경하기() throws Exception{
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ String username = "username";
+ String changeUsername = "changeUsername";
+ Account account = mock(Account.class);
+ Update.NicknameRequest request = mock(Update.NicknameRequest.class);
+ when(loginUser.getUsername()).thenReturn(username);
+ when(request.getNickname()).thenReturn(changeUsername);
+ when(accountRepository.findByEmail(username))
+ .thenReturn(Optional.of(account));
+
+// when
+ updateAccountInfoService.nickname(loginUser, request);
+
+// then
+ verify(loginUser).getUsername();
+ verify(account).changeNickname(request.getNickname());
+ }
+
+ @Test
+ void 알림_설정_수정하기() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ Account account = mock(Account.class);
+ Update.Notification request = mock(Update.Notification.class);
+ when(loginUser.getUsername()).thenReturn("email");
+ when(accountRepository.findByEmail(loginUser.getUsername()))
+ .thenReturn(Optional.of(account));
+
+
+// when
+ updateAccountInfoService.notification(loginUser, request);
+
+// then
+ verify(accountRepository).findByEmail(loginUser.getUsername());
+ verify(account).updateNotifications(request);
+ }
+
+ @Test
+ void 회원_탈퇴() throws Exception {
+
+// given
+ LoginUser loginUser = mock(LoginUser.class);
+ Account account = mock(Account.class);
+ String email = "email";
+ when(loginUser.getUsername()).thenReturn(email);
+ when(accountRepository.findByEmail(any())).thenReturn(Optional.of(account));
+
+// when
+ updateAccountInfoService.quit(loginUser);
+
+// then
+ verify(accountRepository).findByEmail(any());
+ verify(account).changeToQuit();
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/services/interest/InterestServiceImplTest.java b/src/test/java/com/project/devidea/modules/account/services/interest/InterestServiceImplTest.java
index 46d472fb..6d4643dc 100644
--- a/src/test/java/com/project/devidea/modules/account/services/interest/InterestServiceImplTest.java
+++ b/src/test/java/com/project/devidea/modules/account/services/interest/InterestServiceImplTest.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.account.services.interest;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.Interest;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
import com.project.devidea.modules.account.repository.InterestRepository;
import com.project.devidea.modules.tagzone.tag.Tag;
import com.project.devidea.modules.tagzone.tag.TagService;
diff --git a/src/test/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneServiceImplTest.java b/src/test/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneServiceImplTest.java
index 3cb14c2a..9e2b8074 100644
--- a/src/test/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneServiceImplTest.java
+++ b/src/test/java/com/project/devidea/modules/account/services/mainActivityZone/MainActivityZoneServiceImplTest.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.account.services.mainActivityZone;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.MainActivityZone;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.MainActivityZone;
import com.project.devidea.modules.account.repository.MainActivityZoneRepository;
import com.project.devidea.modules.tagzone.zone.Zone;
import com.project.devidea.modules.tagzone.zone.ZoneService;
diff --git a/src/test/java/com/project/devidea/modules/account/services/signUp/AuthenticationEmailServiceImplTest.java b/src/test/java/com/project/devidea/modules/account/services/signUp/AuthenticationEmailServiceImplTest.java
new file mode 100644
index 00000000..bd6cc1d2
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/services/signUp/AuthenticationEmailServiceImplTest.java
@@ -0,0 +1,51 @@
+package com.project.devidea.modules.account.services.signUp;
+
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.repository.AccountRepository;
+import com.project.devidea.modules.environment.Environment;
+import com.project.devidea.modules.environment.EnvironmentRepository;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.verify;
+
+@ExtendWith(MockitoExtension.class)
+class AuthenticationEmailServiceImplTest {
+
+ @Mock AccountRepository accountRepository;
+ @Mock EnvironmentRepository environmentRepository;
+ @InjectMocks AuthenticationEmailServiceImpl authenticationEmailService;
+
+ @Test
+ void 메일인증() throws Exception {
+
+ // given
+ Account account = mock(Account.class);
+ String email = "email";
+ String token = "token";
+ when(accountRepository.findByEmail(email))
+ .thenReturn(Optional.of(account));
+ String url = "url";
+ Environment environment = mock(Environment.class);
+ when(environmentRepository.findByDescription("FRONT"))
+ .thenReturn(environment);
+ when(environment.getUrl())
+ .thenReturn(url);
+
+ // when
+ authenticationEmailService.authenticateEmailToken(email, token);
+
+ // then
+ verify(accountRepository).findByEmail(email);
+ verify(account).validateToken(token);
+ verify(environmentRepository).findByDescription("FRONT");
+ verify(environment).getUrl();
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/services/signUp/CommonSignUpServiceImplTest.java b/src/test/java/com/project/devidea/modules/account/services/signUp/CommonSignUpServiceImplTest.java
index 7cbc819f..403cd902 100644
--- a/src/test/java/com/project/devidea/modules/account/services/signUp/CommonSignUpServiceImplTest.java
+++ b/src/test/java/com/project/devidea/modules/account/services/signUp/CommonSignUpServiceImplTest.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.account.services.signUp;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.dto.SignUp;
import com.project.devidea.modules.account.event.SendEmailToken;
import com.project.devidea.modules.account.repository.AccountRepository;
@@ -27,7 +27,6 @@ class CommonSignUpServiceImplTest {
@Mock AccountRepository accountRepository;
@Mock ApplicationEventPublisher publisher;
@Mock ModelMapper modelMapper;
- @Mock EnvironmentRepository environmentRepository;
@InjectMocks CommonSignUpServiceImpl commonSignUpService;
@Test
@@ -52,30 +51,4 @@ class CommonSignUpServiceImplTest {
verify(modelMapper).map(account, SignUp.Response.class);
}
}
-
- @Test
- void 메일인증() throws Exception {
-
- // given
- Account account = mock(Account.class);
- String email = "email";
- String token = "token";
- when(accountRepository.findByEmail(email))
- .thenReturn(Optional.of(account));
- String url = "url";
- Environment environment = mock(Environment.class);
- when(environmentRepository.findByDescription("FRONT"))
- .thenReturn(environment);
- when(environment.getUrl())
- .thenReturn(url);
-
- // when
- commonSignUpService.authenticateEmailToken(email, token);
-
- // then
- verify(accountRepository).findByEmail(email);
- verify(account).validateToken(token);
- verify(environmentRepository).findByDescription("FRONT");
- verify(environment).getUrl();
- }
}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/services/signUp/OAuthSignUpServiceImplTest.java b/src/test/java/com/project/devidea/modules/account/services/signUp/OAuthSignUpServiceImplTest.java
index bacfb3e9..baeb20ff 100644
--- a/src/test/java/com/project/devidea/modules/account/services/signUp/OAuthSignUpServiceImplTest.java
+++ b/src/test/java/com/project/devidea/modules/account/services/signUp/OAuthSignUpServiceImplTest.java
@@ -1,6 +1,6 @@
package com.project.devidea.modules.account.services.signUp;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.dto.SignUp;
import com.project.devidea.modules.account.repository.AccountRepository;
import org.junit.jupiter.api.Test;
diff --git a/src/test/java/com/project/devidea/modules/account/services/signUpDetail/SignUpDetailServiceImplTest.java b/src/test/java/com/project/devidea/modules/account/services/signUpDetail/SignUpDetailServiceImplTest.java
index b0b6d97d..d9505621 100644
--- a/src/test/java/com/project/devidea/modules/account/services/signUpDetail/SignUpDetailServiceImplTest.java
+++ b/src/test/java/com/project/devidea/modules/account/services/signUpDetail/SignUpDetailServiceImplTest.java
@@ -1,8 +1,8 @@
package com.project.devidea.modules.account.services.signUpDetail;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.Interest;
-import com.project.devidea.modules.account.MainActivityZone;
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
import com.project.devidea.modules.account.dto.SignUp;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.account.services.interest.InterestService;
diff --git a/src/test/java/com/project/devidea/modules/account/util/AccountToManyUtilTest.java b/src/test/java/com/project/devidea/modules/account/util/AccountToManyUtilTest.java
new file mode 100644
index 00000000..ca783933
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/util/AccountToManyUtilTest.java
@@ -0,0 +1,70 @@
+package com.project.devidea.modules.account.util;
+
+import com.project.devidea.modules.account.domains.Account;
+import com.project.devidea.modules.account.domains.Interest;
+import com.project.devidea.modules.account.domains.MainActivityZone;
+import com.project.devidea.modules.tagzone.tag.Tag;
+import com.project.devidea.modules.tagzone.zone.Zone;
+import lombok.RequiredArgsConstructor;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import static java.util.stream.Collectors.*;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+
+@ExtendWith(MockitoExtension.class)
+class AccountToManyUtilTest {
+
+ @InjectMocks
+ AccountToManyUtil util;
+
+ @Test
+ void 관심사_set으로_변환() throws Exception {
+
+ // given
+ Account account = Account.builder().build();
+ List tags = Arrays.asList(
+ Tag.builder().firstName("javascript").secondName("자바스크립트").thirdName(null).build(),
+ Tag.builder().firstName("python").secondName("파이썬").thirdName(null).build()
+ );
+
+ // when
+ Set interests = util.createInterestSet(account, tags);
+
+ // then
+ List result = interests.stream()
+ .map(interest -> interest.getTag().getFirstName())
+ .collect(toList());
+ assertEquals(result.size(), 2);
+ assertThat(result).contains("javascript", "python");
+ }
+
+ @Test
+ void 활동지역_set으로_변환() throws Exception {
+
+ // given
+ Account account = Account.builder().build();
+ List zones = Arrays.asList(
+ Zone.builder().city("서울특별시").province("광진구").build(),
+ Zone.builder().city("경기도").province("수원시").build()
+ );
+
+ // when
+ Set mainActivityZones = util.createMainActivityZoneSet(account, zones);
+
+ // then
+ List result = mainActivityZones.stream()
+ .map(zone -> zone.getZone().toString())
+ .collect(toList());
+ assertEquals(result.size(), 2);
+ assertThat(result).contains("서울특별시/광진구", "경기도/수원시");
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/util/LoginResponseUtilTest.java b/src/test/java/com/project/devidea/modules/account/util/LoginResponseUtilTest.java
new file mode 100644
index 00000000..cb691f11
--- /dev/null
+++ b/src/test/java/com/project/devidea/modules/account/util/LoginResponseUtilTest.java
@@ -0,0 +1,62 @@
+package com.project.devidea.modules.account.util;
+
+import com.project.devidea.modules.account.dto.Login;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.http.HttpHeaders;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@ExtendWith(MockitoExtension.class)
+class LoginResponseUtilTest {
+
+ @InjectMocks LoginResponseUtil util;
+
+ @Test
+ void login_response_반환_디테일이_저장되지_않은_회원() throws Exception {
+
+ // given
+ Map map = new HashMap<>();
+ map.put("savedDetail", "false");
+
+ // when
+ Login.Response response = util.getLoginResponse(map);
+
+ // then
+ assertFalse(response.isSavedDetail());
+ }
+
+ @Test
+ void login_response_반환_디테일이_저장된_회원() throws Exception {
+
+ // given
+ Map map = new HashMap<>();
+ map.put("savedDetail", "true");
+
+ // when
+ Login.Response response = util.getLoginResponse(map);
+
+ // then
+ assertTrue(response.isSavedDetail());
+ }
+
+ @Test
+ void jwt_헤더로_반환하기() throws Exception {
+
+ // given
+ Map response = new HashMap<>();
+ response.put("header", "header");
+ response.put("token", "token");
+
+ // when
+ HttpHeaders httpHeaders = util.getJwtHeader(response);
+
+ // then
+ assertTrue(httpHeaders.get("header").contains("token"));
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/project/devidea/modules/account/util/LoginServiceUtilTest.java b/src/test/java/com/project/devidea/modules/account/util/LoginServiceUtilTest.java
index 93dfc4da..c422f1ba 100644
--- a/src/test/java/com/project/devidea/modules/account/util/LoginServiceUtilTest.java
+++ b/src/test/java/com/project/devidea/modules/account/util/LoginServiceUtilTest.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.account.util;
import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/src/test/java/com/project/devidea/modules/community/CommunityControllerTest.java b/src/test/java/com/project/devidea/modules/community/CommunityControllerTest.java
index 86374b94..0c9cc3fc 100644
--- a/src/test/java/com/project/devidea/modules/community/CommunityControllerTest.java
+++ b/src/test/java/com/project/devidea/modules/community/CommunityControllerTest.java
@@ -7,10 +7,9 @@
import com.project.devidea.infra.config.security.LoginUser;
import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
import com.project.devidea.infra.error.exception.EntityNotFoundException;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.AccountDummy;
import com.project.devidea.modules.account.repository.AccountRepository;
-import com.project.devidea.modules.community.CommunityRepository;
import com.project.devidea.modules.community.form.RequestCommunity;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
diff --git a/src/test/java/com/project/devidea/modules/community/CommunityDummy.java b/src/test/java/com/project/devidea/modules/community/CommunityDummy.java
index 9a6c6739..d34221ac 100644
--- a/src/test/java/com/project/devidea/modules/community/CommunityDummy.java
+++ b/src/test/java/com/project/devidea/modules/community/CommunityDummy.java
@@ -1,9 +1,6 @@
package com.project.devidea.modules.community;
-import com.project.devidea.modules.account.Account;
-import com.project.devidea.modules.account.AccountDummy;
-import com.project.devidea.modules.notification.Notification;
-import com.project.devidea.modules.notification.NotificationType;
+import com.project.devidea.modules.account.domains.Account;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/test/java/com/project/devidea/modules/community/CommunityRepositoryTest.java b/src/test/java/com/project/devidea/modules/community/CommunityRepositoryTest.java
index 4e53d775..5500e527 100644
--- a/src/test/java/com/project/devidea/modules/community/CommunityRepositoryTest.java
+++ b/src/test/java/com/project/devidea/modules/community/CommunityRepositoryTest.java
@@ -2,7 +2,7 @@
import com.project.devidea.infra.TestConfig;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.AccountDummy;
import com.project.devidea.modules.account.repository.AccountRepository;
import org.junit.jupiter.api.BeforeEach;
diff --git a/src/test/java/com/project/devidea/modules/community/CommunityServiceTest.java b/src/test/java/com/project/devidea/modules/community/CommunityServiceTest.java
index 7dfa30dd..d08b08ea 100644
--- a/src/test/java/com/project/devidea/modules/community/CommunityServiceTest.java
+++ b/src/test/java/com/project/devidea/modules/community/CommunityServiceTest.java
@@ -2,7 +2,7 @@
import com.project.devidea.infra.config.security.CustomUserDetailService;
import com.project.devidea.infra.config.security.LoginUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.AccountDummy;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.community.form.RequestCommunity;
@@ -10,7 +10,6 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
-import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
diff --git a/src/test/java/com/project/devidea/modules/content/mentoring/MenteeControllerTest.java b/src/test/java/com/project/devidea/modules/content/mentoring/MenteeControllerTest.java
index 2588341b..04059090 100644
--- a/src/test/java/com/project/devidea/modules/content/mentoring/MenteeControllerTest.java
+++ b/src/test/java/com/project/devidea/modules/content/mentoring/MenteeControllerTest.java
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.project.devidea.infra.MockMvcTest;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.content.mentoring.account.WithAccount;
import com.project.devidea.modules.content.mentoring.form.CreateMenteeRequest;
diff --git a/src/test/java/com/project/devidea/modules/content/mentoring/MentorControllerTest.java b/src/test/java/com/project/devidea/modules/content/mentoring/MentorControllerTest.java
index 40311d7b..ae76ef95 100644
--- a/src/test/java/com/project/devidea/modules/content/mentoring/MentorControllerTest.java
+++ b/src/test/java/com/project/devidea/modules/content/mentoring/MentorControllerTest.java
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.project.devidea.infra.MockMvcTest;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.content.mentoring.account.WithAccount;
import com.project.devidea.modules.content.mentoring.form.CreateMentorRequest;
diff --git a/src/test/java/com/project/devidea/modules/content/mentoring/account/WithAccountSecurityContextFactory.java b/src/test/java/com/project/devidea/modules/content/mentoring/account/WithAccountSecurityContextFactory.java
index 06a31cda..d1f03f1a 100644
--- a/src/test/java/com/project/devidea/modules/content/mentoring/account/WithAccountSecurityContextFactory.java
+++ b/src/test/java/com/project/devidea/modules/content/mentoring/account/WithAccountSecurityContextFactory.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.content.mentoring.account;
import com.project.devidea.infra.config.security.CustomUserDetailService;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
diff --git a/src/test/java/com/project/devidea/modules/content/resume/CareerControllerTest.java b/src/test/java/com/project/devidea/modules/content/resume/CareerControllerTest.java
index a6060a12..75d2a063 100644
--- a/src/test/java/com/project/devidea/modules/content/resume/CareerControllerTest.java
+++ b/src/test/java/com/project/devidea/modules/content/resume/CareerControllerTest.java
@@ -2,13 +2,12 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.project.devidea.infra.MockMvcTest;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.content.mentoring.account.WithAccount;
import com.project.devidea.modules.content.resume.career.Career;
import com.project.devidea.modules.content.resume.career.CareerRepository;
import com.project.devidea.modules.content.resume.form.career.CreateCareerRequest;
-import com.project.devidea.modules.content.resume.form.career.UpdateCareerRequest;
import com.project.devidea.modules.tagzone.tag.Tag;
import com.project.devidea.modules.tagzone.tag.TagRepository;
import org.junit.jupiter.api.BeforeEach;
@@ -18,8 +17,6 @@
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.http.MediaType;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.transaction.annotation.Transactional;
diff --git a/src/test/java/com/project/devidea/modules/content/resume/ResumeControllerTest.java b/src/test/java/com/project/devidea/modules/content/resume/ResumeControllerTest.java
index 6badcb82..55298ec2 100644
--- a/src/test/java/com/project/devidea/modules/content/resume/ResumeControllerTest.java
+++ b/src/test/java/com/project/devidea/modules/content/resume/ResumeControllerTest.java
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.project.devidea.infra.MockMvcTest;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.content.mentoring.account.WithAccount;
import com.project.devidea.modules.content.resume.career.Career;
diff --git a/src/test/java/com/project/devidea/modules/content/study/StudyControllerTest.java b/src/test/java/com/project/devidea/modules/content/study/StudyControllerTest.java
index 4ba439a4..baf4a08e 100644
--- a/src/test/java/com/project/devidea/modules/content/study/StudyControllerTest.java
+++ b/src/test/java/com/project/devidea/modules/content/study/StudyControllerTest.java
@@ -3,7 +3,7 @@
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.project.devidea.infra.WithAccount;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.content.study.apply.StudyApply;
import com.project.devidea.modules.content.study.apply.StudyApplyForm;
diff --git a/src/test/java/com/project/devidea/modules/content/study/StudyDomainTest.java b/src/test/java/com/project/devidea/modules/content/study/StudyDomainTest.java
index 9571ddfa..85ace371 100644
--- a/src/test/java/com/project/devidea/modules/content/study/StudyDomainTest.java
+++ b/src/test/java/com/project/devidea/modules/content/study/StudyDomainTest.java
@@ -1,6 +1,6 @@
//package com.project.devidea.modules.content.study;
//
-//import com.project.devidea.modules.account.Account;
+//import com.project.devidea.modules.account.domains.Account;
//import com.project.devidea.modules.account.AccountRepository;
//import com.project.devidea.modules.content.study.repository.StudyMemberRepository;
//import com.project.devidea.modules.content.study.repository.StudyRepository;
diff --git a/src/test/java/com/project/devidea/modules/content/study/StudyServiceTest.java b/src/test/java/com/project/devidea/modules/content/study/StudyServiceTest.java
index 850f7f79..e8f65e0c 100644
--- a/src/test/java/com/project/devidea/modules/content/study/StudyServiceTest.java
+++ b/src/test/java/com/project/devidea/modules/content/study/StudyServiceTest.java
@@ -2,7 +2,7 @@
import com.project.devidea.infra.config.AppConfig;
import com.project.devidea.modules.ModuleGenerator;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.content.study.apply.StudyApplyRepository;
import com.project.devidea.modules.content.study.form.StudyDetailForm;
diff --git a/src/test/java/com/project/devidea/modules/content/suggestion/SuggestionControllerTest.java b/src/test/java/com/project/devidea/modules/content/suggestion/SuggestionControllerTest.java
index e2fc0d42..f9dd3053 100644
--- a/src/test/java/com/project/devidea/modules/content/suggestion/SuggestionControllerTest.java
+++ b/src/test/java/com/project/devidea/modules/content/suggestion/SuggestionControllerTest.java
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.project.devidea.infra.MockMvcTest;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.content.mentoring.Mentee;
import com.project.devidea.modules.content.mentoring.MenteeRepository;
diff --git a/src/test/java/com/project/devidea/modules/notification/NotificationControllerTest.java b/src/test/java/com/project/devidea/modules/notification/NotificationControllerTest.java
index 293d47a5..3a3b95a9 100644
--- a/src/test/java/com/project/devidea/modules/notification/NotificationControllerTest.java
+++ b/src/test/java/com/project/devidea/modules/notification/NotificationControllerTest.java
@@ -3,31 +3,21 @@
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.project.devidea.infra.MockMvcTest;
-import com.project.devidea.infra.WithAccount;
import com.project.devidea.infra.config.security.CustomUserDetailService;
import com.project.devidea.infra.config.security.LoginUser;
import com.project.devidea.infra.config.security.jwt.JwtTokenUtil;
-import com.project.devidea.infra.error.exception.BusinessException;
import com.project.devidea.infra.error.exception.EntityNotFoundException;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.AccountDummy;
import com.project.devidea.modules.account.repository.AccountRepository;
-import org.hamcrest.CoreMatchers;
-import org.hamcrest.MatcherAssert;
-import org.hamcrest.beans.HasPropertyWithValue;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.security.test.context.support.WithUserDetails;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
-import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
diff --git a/src/test/java/com/project/devidea/modules/notification/NotificationRepositoryTest.java b/src/test/java/com/project/devidea/modules/notification/NotificationRepositoryTest.java
index be5b0fbf..904b0dac 100644
--- a/src/test/java/com/project/devidea/modules/notification/NotificationRepositoryTest.java
+++ b/src/test/java/com/project/devidea/modules/notification/NotificationRepositoryTest.java
@@ -1,7 +1,7 @@
package com.project.devidea.modules.notification;
import com.project.devidea.infra.TestConfig;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.AccountDummy;
import com.project.devidea.modules.account.repository.AccountRepository;
import org.junit.jupiter.api.BeforeEach;
diff --git a/src/test/java/com/project/devidea/modules/notification/NotificationServiceTest.java b/src/test/java/com/project/devidea/modules/notification/NotificationServiceTest.java
index fd33fdf2..09fbef0c 100644
--- a/src/test/java/com/project/devidea/modules/notification/NotificationServiceTest.java
+++ b/src/test/java/com/project/devidea/modules/notification/NotificationServiceTest.java
@@ -2,7 +2,7 @@
import com.project.devidea.infra.config.security.CustomUserDetailService;
import com.project.devidea.infra.config.security.LoginUser;
-import com.project.devidea.modules.account.Account;
+import com.project.devidea.modules.account.domains.Account;
import com.project.devidea.modules.account.AccountDummy;
import com.project.devidea.modules.account.repository.AccountRepository;
import com.project.devidea.modules.content.study.Study;