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 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ 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;