From 7c375055f6472d96d584310c8c52377bf68bccf8 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Wed, 7 Sep 2022 09:53:35 +0900 Subject: [PATCH 01/19] =?UTF-8?q?chore:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20import=20=EA=B5=AC=EB=AC=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/woowacourse/moamoa/common/config/WebConfig.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/common/config/WebConfig.java b/backend/src/main/java/com/woowacourse/moamoa/common/config/WebConfig.java index 803925780..76c0ad41d 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/common/config/WebConfig.java +++ b/backend/src/main/java/com/woowacourse/moamoa/common/config/WebConfig.java @@ -1,11 +1,7 @@ package com.woowacourse.moamoa.common.config; -import com.woowacourse.moamoa.MoamoaApplication; import java.util.List; -import org.slf4j.LoggerFactory; -import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; import org.springframework.web.method.support.HandlerMethodArgumentResolver; From 1a54d82feb3b3517a08a3406c1cb6089188d2b3d Mon Sep 17 00:00:00 2001 From: Donggyu Date: Wed, 7 Sep 2022 13:38:58 +0900 Subject: [PATCH 02/19] =?UTF-8?q?refactor:=20MemberService=20memberId=20?= =?UTF-8?q?=EB=B0=9B=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20&=20MemberDa?= =?UTF-8?q?ta=20`memberId`=20=EB=A5=BC=20=EB=8B=B4=EC=95=84=EC=84=9C=20?= =?UTF-8?q?=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/controller/MemberController.java | 9 +++--- .../moamoa/member/query/MemberDao.java | 12 ++++---- .../moamoa/member/query/data/MemberData.java | 4 +-- .../moamoa/member/service/MemberService.java | 13 ++++---- .../service/response/MemberResponse.java | 5 ++++ .../service/response/AuthorResponse.java | 6 ++-- .../service/response/WriterResponse.java | 6 ++-- .../moamoa/study/query/MyStudyDao.java | 6 ++-- .../service/response/AuthorResponse.java | 4 +-- .../acceptance/steps/AfterLoginSteps.java | 16 ++++++++++ .../test/member/MemberAcceptanceTest.java | 5 ++-- .../study/GettingMyStudiesAcceptanceTest.java | 10 ++++--- .../moamoa/fixtures/StudyFixtures.java | 14 ++++----- .../controller/MemberControllerTest.java | 14 ++++----- .../member/service/MemberServiceTest.java | 14 +++++---- .../member/webmvc/MemberWebMvcTest.java | 2 +- .../referenceroom/query/LinkDaoTest.java | 12 ++++---- .../moamoa/review/query/ReviewDaoTest.java | 10 +++---- .../controller/MyStudyControllerTest.java | 12 ++++---- .../study/service/MyStudyServiceTest.java | 30 ++++++++----------- 20 files changed, 108 insertions(+), 96 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/member/controller/MemberController.java b/backend/src/main/java/com/woowacourse/moamoa/member/controller/MemberController.java index 2d44222bf..836595632 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/member/controller/MemberController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/member/controller/MemberController.java @@ -1,12 +1,11 @@ package com.woowacourse.moamoa.member.controller; -import com.woowacourse.moamoa.auth.config.AuthenticationPrincipal; -import com.woowacourse.moamoa.member.service.response.MemberResponse; +import com.woowacourse.moamoa.auth.config.AuthenticatedMember; import com.woowacourse.moamoa.member.service.MemberService; +import com.woowacourse.moamoa.member.service.response.MemberResponse; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @@ -17,9 +16,9 @@ public class MemberController { @GetMapping("/api/members/me") public ResponseEntity getCurrentMember( - @AuthenticationPrincipal Long githubId + @AuthenticatedMember Long memberId ) { - MemberResponse response = memberService.getByGithubId(githubId); + MemberResponse response = memberService.getByMemberId(memberId); return ResponseEntity.ok().body(response); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/member/query/MemberDao.java b/backend/src/main/java/com/woowacourse/moamoa/member/query/MemberDao.java index b66d449fd..8d2996428 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/member/query/MemberDao.java +++ b/backend/src/main/java/com/woowacourse/moamoa/member/query/MemberDao.java @@ -49,12 +49,12 @@ private String countOwnerStudy() { + "FROM study)) as number_of_study "; } - public Optional findByGithubId(final Long githubId) { + public Optional findByMemberId(final Long memberId) { try { - final String sql = "SELECT github_id, username, image_url, profile_url " + final String sql = "SELECT id, username, image_url, profile_url " + "FROM member " - + "WHERE member.github_id = :id"; - final MemberData data = jdbcTemplate.queryForObject(sql, Map.of("id", githubId), MEMBER_DATA_ROW_MAPPER); + + "WHERE member.id = :id"; + final MemberData data = jdbcTemplate.queryForObject(sql, Map.of("id", memberId), MEMBER_DATA_ROW_MAPPER); return Optional.of(data); } catch (EmptyResultDataAccessException e) { return Optional.empty(); @@ -75,11 +75,11 @@ private static RowMapper createMemberFullDataRowMapper( private static RowMapper createMemberDataRowMapper() { return (resultSet, resultNumber) -> { - Long githubId = resultSet.getLong("github_id"); + Long id = resultSet.getLong("id"); String username = resultSet.getString("username"); String imageUrl = resultSet.getString("image_url"); String profileUrl = resultSet.getString("profile_url"); - return new MemberData(githubId, username, imageUrl, profileUrl); + return new MemberData(id, username, imageUrl, profileUrl); }; } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/member/query/data/MemberData.java b/backend/src/main/java/com/woowacourse/moamoa/member/query/data/MemberData.java index b0840b5a8..495aab81d 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/member/query/data/MemberData.java +++ b/backend/src/main/java/com/woowacourse/moamoa/member/query/data/MemberData.java @@ -1,6 +1,5 @@ package com.woowacourse.moamoa.member.query.data; -import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; @@ -15,8 +14,7 @@ @ToString public class MemberData { - @JsonProperty("id") - private Long githubId; + private Long id; private String username; diff --git a/backend/src/main/java/com/woowacourse/moamoa/member/service/MemberService.java b/backend/src/main/java/com/woowacourse/moamoa/member/service/MemberService.java index 3fdeb71be..70d281f1e 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/member/service/MemberService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/member/service/MemberService.java @@ -17,25 +17,24 @@ public class MemberService { private final MemberRepository memberRepository; - private final MemberDao memberDao; @Transactional - public void saveOrUpdate(final Member member) { + public MemberResponse saveOrUpdate(final Member member) { final Optional foundMember = memberRepository.findByGithubId(member.getGithubId()); if (foundMember.isPresent()) { foundMember.get().update(member.getUsername(), member.getImageUrl(), member.getProfileUrl()); - return; + return new MemberResponse(foundMember.get()); } - memberRepository.save(member); + return new MemberResponse(memberRepository.save(member)); } - public MemberResponse getByGithubId(final Long githubId) { - final MemberData member = memberDao.findByGithubId(githubId) + public MemberResponse getByMemberId(final Long memberId) { + final MemberData member = memberDao.findByMemberId(memberId) .orElseThrow(MemberNotFoundException::new); - return new MemberResponse(member.getGithubId(), member.getUsername(), + return new MemberResponse(member.getId(), member.getUsername(), member.getProfileUrl(), member.getImageUrl()); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/member/service/response/MemberResponse.java b/backend/src/main/java/com/woowacourse/moamoa/member/service/response/MemberResponse.java index 0bbaaee88..7f1e349a0 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/member/service/response/MemberResponse.java +++ b/backend/src/main/java/com/woowacourse/moamoa/member/service/response/MemberResponse.java @@ -1,5 +1,6 @@ package com.woowacourse.moamoa.member.service.response; +import com.woowacourse.moamoa.member.domain.Member; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -13,4 +14,8 @@ public class MemberResponse { private String username; private String profileUrl; private String imageUrl; + + public MemberResponse(Member member) { + this(member.getId(), member.getUsername(), member.getProfileUrl(), member.getImageUrl()); + } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/response/AuthorResponse.java b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/response/AuthorResponse.java index 7083d0344..577489cc8 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/response/AuthorResponse.java +++ b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/response/AuthorResponse.java @@ -1,6 +1,5 @@ package com.woowacourse.moamoa.referenceroom.service.response; -import com.fasterxml.jackson.annotation.JsonProperty; import com.woowacourse.moamoa.member.query.data.MemberData; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -16,8 +15,7 @@ @ToString public class AuthorResponse { - @JsonProperty("id") - private Long githubId; + private Long id; private String username; @@ -26,6 +24,6 @@ public class AuthorResponse { private String profileUrl; public AuthorResponse(final MemberData memberData) { - this(memberData.getGithubId(), memberData.getUsername(), memberData.getImageUrl(), memberData.getProfileUrl()); + this(memberData.getId(), memberData.getUsername(), memberData.getImageUrl(), memberData.getProfileUrl()); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/review/service/response/WriterResponse.java b/backend/src/main/java/com/woowacourse/moamoa/review/service/response/WriterResponse.java index a0441720d..111b853d4 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/review/service/response/WriterResponse.java +++ b/backend/src/main/java/com/woowacourse/moamoa/review/service/response/WriterResponse.java @@ -1,6 +1,5 @@ package com.woowacourse.moamoa.review.service.response; -import com.fasterxml.jackson.annotation.JsonProperty; import com.woowacourse.moamoa.member.query.data.MemberData; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -16,8 +15,7 @@ @ToString public class WriterResponse { - @JsonProperty("id") - private Long githubId; + private Long id; private String username; @@ -26,6 +24,6 @@ public class WriterResponse { private String profileUrl; public WriterResponse(MemberData memberData) { - this(memberData.getGithubId(), memberData.getUsername(), memberData.getImageUrl(), memberData.getProfileUrl()); + this(memberData.getId(), memberData.getUsername(), memberData.getImageUrl(), memberData.getProfileUrl()); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/study/query/MyStudyDao.java b/backend/src/main/java/com/woowacourse/moamoa/study/query/MyStudyDao.java index 924bcb3d3..afaae74db 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/study/query/MyStudyDao.java +++ b/backend/src/main/java/com/woowacourse/moamoa/study/query/MyStudyDao.java @@ -48,12 +48,12 @@ public class MyStudyDao { studyId = rs.getLong("study.id"); if (!result.containsKey(studyId)) { - Long githubId = rs.getLong("github_id"); + Long id = rs.getLong("member_id"); String username = rs.getString("username"); String imageUrl = rs.getString("image_url"); String profileUrl = rs.getString("profile_url"); - result.put(studyId, new MemberData(githubId, username, imageUrl, profileUrl)); + result.put(studyId, new MemberData(id, username, imageUrl, profileUrl)); } } return result; @@ -93,7 +93,7 @@ public Map findOwners(List studyIds) { SqlParameterSource parameters = new MapSqlParameterSource("ids", studyIds); - String sql = "SELECT study.id, member.github_id, member.username, member.image_url, member.profile_url " + String sql = "SELECT study.id, member.id as member_id, member.username, member.image_url, member.profile_url " + "FROM study JOIN member ON member.id = study.owner_id " + "WHERE study.id IN (:ids)"; diff --git a/backend/src/main/java/com/woowacourse/moamoa/studyroom/service/response/AuthorResponse.java b/backend/src/main/java/com/woowacourse/moamoa/studyroom/service/response/AuthorResponse.java index 7da9d9429..404a0a384 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/studyroom/service/response/AuthorResponse.java +++ b/backend/src/main/java/com/woowacourse/moamoa/studyroom/service/response/AuthorResponse.java @@ -14,12 +14,12 @@ @ToString public class AuthorResponse { - private long id; + private Long id; private String username; private String imageUrl; private String profileUrl; public AuthorResponse(MemberData memberData) { - this(memberData.getGithubId(), memberData.getUsername(), memberData.getImageUrl(), memberData.getProfileUrl()); + this(memberData.getId(), memberData.getUsername(), memberData.getImageUrl(), memberData.getProfileUrl()); } } diff --git a/backend/src/test/java/com/woowacourse/acceptance/steps/AfterLoginSteps.java b/backend/src/test/java/com/woowacourse/acceptance/steps/AfterLoginSteps.java index ac07acb65..2c62f429b 100644 --- a/backend/src/test/java/com/woowacourse/acceptance/steps/AfterLoginSteps.java +++ b/backend/src/test/java/com/woowacourse/acceptance/steps/AfterLoginSteps.java @@ -25,7 +25,12 @@ import static com.woowacourse.acceptance.fixture.StudyFixtures.자바스크립트_스터디_요약; import static com.woowacourse.acceptance.fixture.StudyFixtures.자바스크립트_스터디_제목; +import com.woowacourse.moamoa.member.service.response.MemberResponse; import com.woowacourse.moamoa.study.service.request.StudyRequestBuilder; +import io.restassured.RestAssured; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; public class AfterLoginSteps extends Steps { @@ -84,4 +89,15 @@ public class AfterLoginSteps extends Steps { public StudyRelatedSteps 스터디에(final Long studyId) { return new StudyRelatedSteps(studyId, token); } + + public MemberResponse 정보를_가져온다() { + return RestAssured.given().log().all() + .header(HttpHeaders.AUTHORIZATION, token) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .when().log().all() + .get("/api/members/me") + .then().log().all() + .statusCode(HttpStatus.OK.value()) + .extract().as(MemberResponse.class); + } } diff --git a/backend/src/test/java/com/woowacourse/acceptance/test/member/MemberAcceptanceTest.java b/backend/src/test/java/com/woowacourse/acceptance/test/member/MemberAcceptanceTest.java index a2384d642..5ad0db1e0 100644 --- a/backend/src/test/java/com/woowacourse/acceptance/test/member/MemberAcceptanceTest.java +++ b/backend/src/test/java/com/woowacourse/acceptance/test/member/MemberAcceptanceTest.java @@ -1,11 +1,10 @@ package com.woowacourse.acceptance.test.member; -import static org.apache.http.HttpHeaders.AUTHORIZATION; -import static com.woowacourse.acceptance.fixture.MemberFixtures.베루스_깃허브_ID; import static com.woowacourse.acceptance.fixture.MemberFixtures.베루스_이름; import static com.woowacourse.acceptance.fixture.MemberFixtures.베루스_이미지_URL; import static com.woowacourse.acceptance.fixture.MemberFixtures.베루스_프로필_URL; import static com.woowacourse.acceptance.steps.LoginSteps.베루스가; +import static org.apache.http.HttpHeaders.AUTHORIZATION; import static org.assertj.core.api.Assertions.assertThat; import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; import static org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders; @@ -33,7 +32,7 @@ void getCurrentMember() { .statusCode(HttpStatus.OK.value()) .extract().as(MemberResponse.class); - assertThat(memberResponse.getId()).isEqualTo(베루스_깃허브_ID); + assertThat(memberResponse.getId()).isEqualTo(memberResponse.getId()); assertThat(memberResponse.getUsername()).isEqualTo(베루스_이름); assertThat(memberResponse.getImageUrl()).isEqualTo(베루스_이미지_URL); assertThat(memberResponse.getProfileUrl()).isEqualTo(베루스_프로필_URL); diff --git a/backend/src/test/java/com/woowacourse/acceptance/test/study/GettingMyStudiesAcceptanceTest.java b/backend/src/test/java/com/woowacourse/acceptance/test/study/GettingMyStudiesAcceptanceTest.java index e9bac0a31..3f744d376 100644 --- a/backend/src/test/java/com/woowacourse/acceptance/test/study/GettingMyStudiesAcceptanceTest.java +++ b/backend/src/test/java/com/woowacourse/acceptance/test/study/GettingMyStudiesAcceptanceTest.java @@ -1,10 +1,8 @@ package com.woowacourse.acceptance.test.study; -import static com.woowacourse.acceptance.fixture.MemberFixtures.그린론_깃허브_ID; import static com.woowacourse.acceptance.fixture.MemberFixtures.그린론_이름; import static com.woowacourse.acceptance.fixture.MemberFixtures.그린론_이미지_URL; import static com.woowacourse.acceptance.fixture.MemberFixtures.그린론_프로필_URL; -import static com.woowacourse.acceptance.fixture.MemberFixtures.디우_깃허브_ID; import static com.woowacourse.acceptance.fixture.MemberFixtures.디우_이름; import static com.woowacourse.acceptance.fixture.MemberFixtures.디우_이미지_URL; import static com.woowacourse.acceptance.fixture.MemberFixtures.디우_프로필_URL; @@ -32,6 +30,7 @@ import com.woowacourse.acceptance.AcceptanceTest; import com.woowacourse.moamoa.member.query.data.MemberData; +import com.woowacourse.moamoa.member.service.response.MemberResponse; import com.woowacourse.moamoa.study.domain.StudyStatus; import com.woowacourse.moamoa.study.query.data.MyStudySummaryData; import com.woowacourse.moamoa.study.service.response.MyStudiesResponse; @@ -57,6 +56,9 @@ void getMyStudies() { 그린론이().로그인하고().스터디에(리액트_스터디_ID).참여한다(); final String token = 그린론이().로그인한다(); + final MemberResponse 그린론_정보 = 그린론이().로그인하고().정보를_가져온다(); + final MemberResponse 디우_정보 = 디우가().로그인하고().정보를_가져온다(); + // act final MyStudiesResponse body = RestAssured.given(spec).log().all() .filter(document("studies/myStudy")) @@ -71,13 +73,13 @@ void getMyStudies() { MyStudyResponse expectedJava = new MyStudyResponse( new MyStudySummaryData(자바_스터디_ID, 자바_스터디_제목, IN_PROGRESS, 1, null, 지금.toString(), null), - new MemberData(그린론_깃허브_ID, 그린론_이름, 그린론_이미지_URL, 그린론_프로필_URL), + new MemberData(그린론_정보.getId(), 그린론_이름, 그린론_이미지_URL, 그린론_프로필_URL), List.of(new TagSummaryData(자바_태그_ID, 자바_태그명), new TagSummaryData(BE_태그_ID, BE_태그명))); MyStudyResponse expectedReact = new MyStudyResponse( new MyStudySummaryData(리액트_스터디_ID, 리액트_스터디_제목, StudyStatus.PREPARE, 2, null, 지금.plusDays(10).toString(), null), - new MemberData(디우_깃허브_ID, 디우_이름, 디우_이미지_URL, 디우_프로필_URL), + new MemberData(디우_정보.getId(), 디우_이름, 디우_이미지_URL, 디우_프로필_URL), List.of()); assertThat(body.getStudies()) diff --git a/backend/src/test/java/com/woowacourse/moamoa/fixtures/StudyFixtures.java b/backend/src/test/java/com/woowacourse/moamoa/fixtures/StudyFixtures.java index 3dd865003..8fd987e7c 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/fixtures/StudyFixtures.java +++ b/backend/src/test/java/com/woowacourse/moamoa/fixtures/StudyFixtures.java @@ -47,7 +47,7 @@ public class StudyFixtures { /* 자바 스터디 */ - public static final Member 자바_스터디장 = new Member(짱구_아이디, 짱구_깃허브_아이디, 짱구_유저네임, 짱구_이미지, 짱구_프로필); + public static final Member 자바_스터디장 = new Member(짱구_깃허브_아이디, 짱구_유저네임, 짱구_이미지, 짱구_프로필); public static final Content 자바_스터디_내용 = new Content("신짱구의 자바의 정석", "자바 스터디 요약", "자바 스터디 썸네일", "자바 스터디 설명입니다."); public static final Participants 자바_스터디_참가자들 = new Participants(짱구_아이디, Set.of(그린론_아이디, 디우_아이디)); public static final RecruitPlanner 자바_스터디_모집계획 = new RecruitPlanner(10, RECRUITMENT_START, LocalDate.now()); @@ -62,7 +62,7 @@ public class StudyFixtures { } /* 리액트 스터디 */ - public static final Member 리액트_스터디장 = new Member(디우_아이디, 디우_깃허브_아이디, 디우_유저네임, 디우_이미지, 디우_프로필); + public static final Member 리액트_스터디장 = new Member(디우_깃허브_아이디, 디우_유저네임, 디우_이미지, 디우_프로필); public static final Content 리액트_스터디_내용 = new Content("디우의 이것이 리액트다.", "리액트 스터디 요약", "리액트 스터디 썸네일", "리액트 스터디 설명입니다."); public static final Participants 리액트_스터디_참가자들 = new Participants(디우_아이디, Set.of(짱구_아이디, 그린론_아이디, 베루스_아이디)); public static final RecruitPlanner 리액트_스터디_모집계획 = new RecruitPlanner(5, RECRUITMENT_START, LocalDate.now()); @@ -77,7 +77,7 @@ public class StudyFixtures { } /* 자바스크립트스크립트 스터디 */ - public static final Member 자바스크립트_스터디장 = new Member(그린론_아이디, 그린론_깃허브_아이디, 그린론_유저네임, 그린론_이미지, 그린론_프로필); + public static final Member 자바스크립트_스터디장 = new Member(그린론_깃허브_아이디, 그린론_유저네임, 그린론_이미지, 그린론_프로필); public static final Content 자바스크립트_스터디_내용 = new Content("그린론의 모던 자바스크립트 인 액션", "자바스크립트 스터디 요약", "자바스크립트 스터디 썸네일", "자바스크립트 스터디 설명입니다."); public static final Participants 자바스크립트_스터디_참가자들 = new Participants(그린론_아이디, Set.of(디우_아이디, 베루스_아이디)); public static final RecruitPlanner 자바스크립트_스터디_모집계획 = new RecruitPlanner(20, RECRUITMENT_START, LocalDate.now()); @@ -92,7 +92,7 @@ public class StudyFixtures { } /* HTTP 스터디 */ - public static final Member HTTP_스터디장 = new Member(디우_아이디, 디우_깃허브_아이디, 디우_유저네임, 디우_이미지, 디우_프로필); + public static final Member HTTP_스터디장 = new Member(디우_깃허브_아이디, 디우_유저네임, 디우_이미지, 디우_프로필); public static final Content HTTP_스터디_내용 = new Content("디우의 HTTP", "HTTP 스터디 요약", "HTTP 스터디 썸네일", "HTTP 스터디 설명입니다."); public static final Participants HTTP_스터디_참가자들 = new Participants(디우_아이디, Set.of(베루스_아이디, 짱구_아이디)); public static final RecruitPlanner HTTP_스터디_모집계획 = new RecruitPlanner(4, RECRUITMENT_END, LocalDate.now()); @@ -107,7 +107,7 @@ public class StudyFixtures { } /* 알고리즘 스터디 (모집 기간과 스터디 종료일자가 없음) */ - public static final Member 알고리즘_스터디장 = new Member(베루스_아이디, 베루스_깃허브_아이디, 베루스_유저네임, 베루스_이미지, 베루스_프로필); + public static final Member 알고리즘_스터디장 = new Member(베루스_깃허브_아이디, 베루스_유저네임, 베루스_이미지, 베루스_프로필); public static final Content 알고리즘_스터디_내용 = new Content("알고리즘 주도 개발 1타 강사 베루스", "알고리즘 스터디 요약", "알고리즘 스터디 썸네일", "알고리즘 스터디 설명입니다."); public static final Participants 알고리즘_스터디_참가자들 = new Participants(베루스_아이디, Set.of(그린론_아이디, 디우_아이디)); public static final RecruitPlanner 알고리즘_스터디_모집계획 = new RecruitPlanner(null, RECRUITMENT_END, null); @@ -122,7 +122,7 @@ public class StudyFixtures { } /* 리눅스 스터디 (최대 인원 없음) */ - public static final Member 리눅스_스터디장 = new Member(베루스_아이디, 베루스_깃허브_아이디, 베루스_유저네임, 베루스_이미지, 베루스_프로필); + public static final Member 리눅스_스터디장 = new Member(베루스_깃허브_아이디, 베루스_유저네임, 베루스_이미지, 베루스_프로필); public static final Content 리눅스_스터디_내용 = new Content("벨우스의 린우스", "리눅스 스터디 요약", "리눅스 스터디 썸네일", "리눅스 스터디 설명입니다."); public static final Participants 리눅스_스터디_참가자들 = new Participants(베루스_아이디, Set.of(그린론_아이디, 디우_아이디)); public static final RecruitPlanner 리눅스_스터디_모집계획 = new RecruitPlanner(null, RECRUITMENT_START, LocalDate.now()); @@ -137,7 +137,7 @@ public class StudyFixtures { } /* OS 스터디 */ - public static final Member OS_스터디장 = new Member(디우_아이디, 디우_깃허브_아이디, 디우_유저네임, 디우_이미지, 디우_프로필); + public static final Member OS_스터디장 = new Member(디우_깃허브_아이디, 디우_유저네임, 디우_이미지, 디우_프로필); public static final Content OS_스터디_내용 = new Content("디우의 OS 스터디", "OS 스터디 요약", "OS 스터디 썸네일", "OS 스터디 설명입니다."); public static final Participants OS_스터디_참가자들 = new Participants(디우_아이디, Set.of(그린론_아이디, 짱구_아이디, 베루스_아이디)); public static final RecruitPlanner OS_스터디_모집계획 = new RecruitPlanner(10, RECRUITMENT_START, LocalDate.now()); diff --git a/backend/src/test/java/com/woowacourse/moamoa/member/controller/MemberControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/member/controller/MemberControllerTest.java index 85f864e42..33917e98a 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/member/controller/MemberControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/member/controller/MemberControllerTest.java @@ -25,29 +25,29 @@ class MemberControllerTest { @Autowired MemberRepository memberRepository; - @DisplayName("github Id에 맞는 사용자를 조회한다.") + @DisplayName("id에 맞는 사용자를 조회한다.") @Test void getCurrentMember() { final MemberService memberService = new MemberService(memberRepository, memberDao); - memberService.saveOrUpdate(new Member(1L, "verus", "image", "profile")); + final MemberResponse memberResponse = memberService.saveOrUpdate(new Member(1L, "verus", "image", "profile")); final MemberController memberController = new MemberController(memberService); - final ResponseEntity response = memberController.getCurrentMember(1L); + final ResponseEntity response = memberController.getCurrentMember(memberResponse.getId()); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(response.getBody()).isNotNull(); - assertThat(response.getBody().getId()).isEqualTo(1L); + assertThat(response.getBody().getId()).isEqualTo(memberResponse.getId()); assertThat(response.getBody().getUsername()).isEqualTo("verus"); assertThat(response.getBody().getProfileUrl()).isEqualTo("profile"); assertThat(response.getBody().getImageUrl()).isEqualTo("image"); } - @DisplayName("github Id에 맞는 사용자가 없는 경우 예외가 발생한다.") + @DisplayName("id에 맞는 사용자가 없는 경우 예외가 발생한다.") @Test void findNotFoundGithubIdMember() { final MemberController memberController = new MemberController(new MemberService(memberRepository, memberDao)); - assertThatThrownBy(() -> memberController.getCurrentMember(2L)) - .isInstanceOf(MemberNotFoundException.class); + assertThatThrownBy(() -> memberController.getCurrentMember(1L)) + .isInstanceOf(MemberNotFoundException.class); } } diff --git a/backend/src/test/java/com/woowacourse/moamoa/member/service/MemberServiceTest.java b/backend/src/test/java/com/woowacourse/moamoa/member/service/MemberServiceTest.java index f4201dd26..3025d8a04 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/member/service/MemberServiceTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/member/service/MemberServiceTest.java @@ -41,12 +41,13 @@ void setUp() { @DisplayName("신규 사용자일 경우 사용자 정보를 저장한다.") @Test void saveMember() { - memberService.saveOrUpdate(new Member(5L, "sc0116", "https://image", "github.com")); + final MemberResponse memberResponse = memberService.saveOrUpdate( + new Member(5L, "sc0116", "https://image", "github.com")); - final MemberResponse member = memberService.getByGithubId(5L); + final MemberResponse member = memberService.getByMemberId(memberResponse.getId()); assertAll( - () -> assertThat(member.getId()).isEqualTo(5L), + () -> assertThat(member.getId()).isEqualTo(memberResponse.getId()), () -> assertThat(member.getUsername()).isEqualTo("sc0116"), () -> assertThat(member.getImageUrl()).isEqualTo("https://image"), () -> assertThat(member.getProfileUrl()).isEqualTo("github.com") @@ -56,14 +57,15 @@ void saveMember() { @DisplayName("기존 사용자일 경우 사용자 정보를 갱신한다.") @Test void updateMember() { - memberService.saveOrUpdate(new Member(1L, "sc0116", "jjanggu.image", "github.com")); + final MemberResponse memberResponse = memberService.saveOrUpdate( + new Member(1L, "sc0116", "jjanggu.image", "github.com")); entityManager.flush(); entityManager.clear(); - final MemberResponse member = memberService.getByGithubId(1L); + final MemberResponse member = memberService.getByMemberId(memberResponse.getId()); assertAll( - () -> assertThat(member.getId()).isEqualTo(1L), + () -> assertThat(member.getId()).isEqualTo(memberResponse.getId()), () -> assertThat(member.getUsername()).isEqualTo("sc0116"), () -> assertThat(member.getImageUrl()).isEqualTo("jjanggu.image"), () -> assertThat(member.getProfileUrl()).isEqualTo("github.com") diff --git a/backend/src/test/java/com/woowacourse/moamoa/member/webmvc/MemberWebMvcTest.java b/backend/src/test/java/com/woowacourse/moamoa/member/webmvc/MemberWebMvcTest.java index 9a041f7e6..fc27ba1d6 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/member/webmvc/MemberWebMvcTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/member/webmvc/MemberWebMvcTest.java @@ -36,7 +36,7 @@ void unauthorizedToken(String invalidToken) throws Exception { @Test void notFound() throws Exception { final String token = tokenProvider.createToken(1L).getAccessToken(); - given(memberService.getByGithubId(any())).willThrow(MemberNotFoundException.class); + given(memberService.getByMemberId(any())).willThrow(MemberNotFoundException.class); mockMvc.perform(get("/api/members/me") .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) diff --git a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java index 37d3c8468..f60459ea8 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java @@ -70,7 +70,7 @@ void setUp() { final LocalDate startDate = LocalDate.now(); StudyRequest javaStudyRequest = 자바_스터디_신청서(startDate); - javaStudy = createStudyService.createStudy(JJANGGU.getGithubId(), javaStudyRequest); + javaStudy = createStudyService.createStudy(JJANGGU.getId(), javaStudyRequest); StudyParticipantService participantService = new StudyParticipantService(memberRepository, studyRepository); participantService.participateStudy(greenlawn.getId(), javaStudy.getId()); @@ -85,10 +85,10 @@ void setUp() { final CreatingLinkRequest request3 = new CreatingLinkRequest("https://github.com/tco0427", "디우 링크."); final CreatingLinkRequest request4 = new CreatingLinkRequest("https://github.com/wilgur513", "베루스 링크."); - final Link link1 = linkService.createLink(JJANGGU.getGithubId(), javaStudy.getId(), request1); - final Link link2 = linkService.createLink(GREENLAWN.getGithubId(), javaStudy.getId(), request2); - final Link link3 = linkService.createLink(DWOO.getGithubId(), javaStudy.getId(), request3); - final Link link4 = linkService.createLink(VERUS.getGithubId(), javaStudy.getId(), request4); + final Link link1 = linkService.createLink(JJANGGU.getId(), javaStudy.getId(), request1); + final Link link2 = linkService.createLink(GREENLAWN.getId(), javaStudy.getId(), request2); + final Link link3 = linkService.createLink(DWOO.getId(), javaStudy.getId(), request3); + final Link link4 = linkService.createLink(VERUS.getId(), javaStudy.getId(), request4); entityManager.flush(); entityManager.clear(); @@ -102,7 +102,7 @@ void setUp() { } private Member toMember(final MemberData data) { - return new Member(data.getGithubId(), data.getUsername(), data.getImageUrl(), data.getProfileUrl()); + return new Member(data.getId(), data.getUsername(), data.getImageUrl(), data.getProfileUrl()); } @DisplayName("스터디 ID로 링크 공유글을 조회한다.") diff --git a/backend/src/test/java/com/woowacourse/moamoa/review/query/ReviewDaoTest.java b/backend/src/test/java/com/woowacourse/moamoa/review/query/ReviewDaoTest.java index 9d67e4e93..20c6603cb 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/review/query/ReviewDaoTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/review/query/ReviewDaoTest.java @@ -132,12 +132,12 @@ void findAllReviewsByStudyId() { assertThat(reviews).isNotEmpty(); assertThat(reviews).hasSize(4) .filteredOn(review -> review.getId() != null) - .extracting("member.githubId", "content") + .extracting("member.id", "content") .containsExactlyInAnyOrder( - tuple(javaReviews.get(0).getMember().getGithubId(), javaReviews.get(0).getContent()), - tuple(javaReviews.get(1).getMember().getGithubId(), javaReviews.get(1).getContent()), - tuple(javaReviews.get(2).getMember().getGithubId(), javaReviews.get(2).getContent()), - tuple(javaReviews.get(3).getMember().getGithubId(), javaReviews.get(3).getContent()) + tuple(javaReviews.get(0).getMember().getId(), javaReviews.get(0).getContent()), + tuple(javaReviews.get(1).getMember().getId(), javaReviews.get(1).getContent()), + tuple(javaReviews.get(2).getMember().getId(), javaReviews.get(2).getContent()), + tuple(javaReviews.get(3).getMember().getId(), javaReviews.get(3).getContent()) ); } } diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java index 4859f7223..644726bbd 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java @@ -151,13 +151,13 @@ void getMyStudies() { assertThat(owners) .hasSize(5) - .extracting("githubId", "username", "imageUrl", "profileUrl") + .extracting("id", "username", "imageUrl", "profileUrl") .containsExactlyInAnyOrder( - tuple(자바_스터디장.getGithubId(), 자바_스터디장.getUsername(), 자바_스터디장.getImageUrl(), 자바_스터디장.getProfileUrl()), - tuple(리액트_스터디장.getGithubId(), 리액트_스터디장.getUsername(), 리액트_스터디장.getImageUrl(), 리액트_스터디장.getProfileUrl()), - tuple(자바스크립트_스터디장.getGithubId(), 자바스크립트_스터디장.getUsername(), 자바스크립트_스터디장.getImageUrl(), 자바스크립트_스터디장.getProfileUrl()), - tuple(알고리즘_스터디장.getGithubId(), 알고리즘_스터디장.getUsername(), 알고리즘_스터디장.getImageUrl(), 알고리즘_스터디장.getProfileUrl()), - tuple(리눅스_스터디장.getGithubId(), 리눅스_스터디장.getUsername(), 리눅스_스터디장.getImageUrl(), 리눅스_스터디장.getProfileUrl()) + tuple(짱구.getId(), 자바_스터디장.getUsername(), 자바_스터디장.getImageUrl(), 자바_스터디장.getProfileUrl()), + tuple(디우.getId(), 리액트_스터디장.getUsername(), 리액트_스터디장.getImageUrl(), 리액트_스터디장.getProfileUrl()), + tuple(그린론.getId(), 자바스크립트_스터디장.getUsername(), 자바스크립트_스터디장.getImageUrl(), 자바스크립트_스터디장.getProfileUrl()), + tuple(베루스.getId(), 알고리즘_스터디장.getUsername(), 알고리즘_스터디장.getImageUrl(), 알고리즘_스터디장.getProfileUrl()), + tuple(베루스.getId(), 리눅스_스터디장.getUsername(), 리눅스_스터디장.getImageUrl(), 리눅스_스터디장.getProfileUrl()) ); final List> tags = myStudies.getBody() diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java index 744b572f4..02923b6cb 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java @@ -103,10 +103,6 @@ void findMyStudies() { final List studies = myStudiesResponse.getStudies(); - for (MyStudyResponse study : studies) { - System.out.println("study.getTitle() = " + study.getTitle()); - } - assertThat(studies) .hasSize(4) .filteredOn(study -> study.getId() != null) @@ -120,12 +116,12 @@ void findMyStudies() { assertThat(owners) .hasSize(4) - .extracting("githubId", "username", "imageUrl", "profileUrl") + .extracting("id", "username", "imageUrl", "profileUrl") .contains( - tuple(짱구.getGithubId(), 짱구.getUsername(), 짱구.getImageUrl(), 짱구.getProfileUrl()), - tuple(디우.getGithubId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()), - tuple(디우.getGithubId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()), - tuple(디우.getGithubId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()) + tuple(짱구.getId(), 짱구.getUsername(), 짱구.getImageUrl(), 짱구.getProfileUrl()), + tuple(디우.getId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()), + tuple(디우.getId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()), + tuple(디우.getId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()) ); assertThat(tags).hasSize(4); @@ -171,15 +167,15 @@ void findMyStudiesWithoutTags() { assertThat(owners) .hasSize(7) - .extracting("githubId", "username", "imageUrl", "profileUrl") + .extracting("id", "username", "imageUrl", "profileUrl") .contains( - tuple(짱구.getGithubId(), 짱구.getUsername(), 짱구.getImageUrl(), 짱구.getProfileUrl()), - tuple(디우.getGithubId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()), - tuple(그린론.getGithubId(), 그린론.getUsername(), 그린론.getImageUrl(), 그린론.getProfileUrl()), - tuple(디우.getGithubId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()), - tuple(베루스.getGithubId(), 베루스.getUsername(), 베루스.getImageUrl(), 베루스.getProfileUrl()), - tuple(베루스.getGithubId(), 베루스.getUsername(), 베루스.getImageUrl(), 베루스.getProfileUrl()), - tuple(디우.getGithubId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()) + tuple(짱구.getId(), 짱구.getUsername(), 짱구.getImageUrl(), 짱구.getProfileUrl()), + tuple(디우.getId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()), + tuple(그린론.getId(), 그린론.getUsername(), 그린론.getImageUrl(), 그린론.getProfileUrl()), + tuple(디우.getId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()), + tuple(베루스.getId(), 베루스.getUsername(), 베루스.getImageUrl(), 베루스.getProfileUrl()), + tuple(베루스.getId(), 베루스.getUsername(), 베루스.getImageUrl(), 베루스.getProfileUrl()), + tuple(디우.getId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()) ); assertThat(tags.get(4)).isEmpty(); From 13302c541c0e62dbb240b0fb5b0e98bbd8c7ae71 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Wed, 7 Sep 2022 15:25:39 +0900 Subject: [PATCH 03/19] =?UTF-8?q?refactor:=20ReferenceRoom=20`memberId`=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReferenceRoomController.java | 14 +++++++------- .../service/ReferenceRoomService.java | 12 ++++++------ .../controller/ReferenceRoomControllerTest.java | 13 ++++++------- .../SearchingReferenceRoomControllerTest.java | 11 ++++------- .../moamoa/referenceroom/query/LinkDaoTest.java | 8 ++++---- 5 files changed, 27 insertions(+), 31 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomController.java b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomController.java index 48887ba41..83e55efd1 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.referenceroom.controller; -import com.woowacourse.moamoa.auth.config.AuthenticationPrincipal; +import com.woowacourse.moamoa.auth.config.AuthenticatedMember; import com.woowacourse.moamoa.referenceroom.service.ReferenceRoomService; import com.woowacourse.moamoa.referenceroom.service.request.CreatingLinkRequest; import com.woowacourse.moamoa.referenceroom.service.request.EditingLinkRequest; @@ -25,32 +25,32 @@ public class ReferenceRoomController { @PostMapping public ResponseEntity createLink( - @AuthenticationPrincipal final Long githubId, + @AuthenticatedMember final Long memberId, @PathVariable("study-id") final Long studyId, @Valid @RequestBody final CreatingLinkRequest creatingLinkRequest ) { - final Long id = referenceRoomService.createLink(githubId, studyId, creatingLinkRequest).getId(); + final Long id = referenceRoomService.createLink(memberId, studyId, creatingLinkRequest).getId(); return ResponseEntity.created(URI.create("/api/studies/" + studyId + "/reference-room/links/" + id)).build(); } @PutMapping("/{link-id}") public ResponseEntity updateLink( - @AuthenticationPrincipal final Long githubId, + @AuthenticatedMember final Long memberId, @PathVariable("study-id") final Long studyId, @PathVariable("link-id") final Long linkId, @Valid @RequestBody final EditingLinkRequest editingLinkRequest ) { - referenceRoomService.updateLink(githubId, studyId, linkId, editingLinkRequest); + referenceRoomService.updateLink(memberId, studyId, linkId, editingLinkRequest); return ResponseEntity.noContent().build(); } @DeleteMapping("/{link-id}") public ResponseEntity deleteLink( - @AuthenticationPrincipal final Long githubId, + @AuthenticatedMember final Long memberId, @PathVariable("study-id") final Long studyId, @PathVariable("link-id") final Long linkId ) { - referenceRoomService.deleteLink(githubId, studyId, linkId); + referenceRoomService.deleteLink(memberId, studyId, linkId); return ResponseEntity.noContent().build(); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/ReferenceRoomService.java b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/ReferenceRoomService.java index 74b2765d1..9563aa44c 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/ReferenceRoomService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/ReferenceRoomService.java @@ -28,8 +28,8 @@ public class ReferenceRoomService { private final StudyRepository studyRepository; private final LinkRepository linkRepository; - public Link createLink(final Long githubId, final Long studyId, final CreatingLinkRequest creatingLinkRequest) { - final Member member = memberRepository.findByGithubId(githubId) + public Link createLink(final Long memberId, final Long studyId, final CreatingLinkRequest creatingLinkRequest) { + final Member member = memberRepository.findById(memberId) .orElseThrow(MemberNotFoundException::new); final Study study = studyRepository.findById(studyId) .orElseThrow(StudyNotFoundException::new); @@ -43,9 +43,9 @@ public Link createLink(final Long githubId, final Long studyId, final CreatingLi } public void updateLink( - final Long githubId, final Long studyId, final Long linkId, final EditingLinkRequest editingLinkRequest + final Long memberId, final Long studyId, final Long linkId, final EditingLinkRequest editingLinkRequest ) { - final Member member = memberRepository.findByGithubId(githubId) + final Member member = memberRepository.findById(memberId) .orElseThrow(MemberNotFoundException::new); final Study study = studyRepository.findById(studyId) .orElseThrow(StudyNotFoundException::new); @@ -60,8 +60,8 @@ public void updateLink( link.update(updatedLink); } - public void deleteLink(final Long githubId, final Long studyId, final Long linkId) { - final Member member = memberRepository.findByGithubId(githubId) + public void deleteLink(final Long memberId, final Long studyId, final Long linkId) { + final Member member = memberRepository.findById(memberId) .orElseThrow(MemberNotFoundException::new); final Study study = studyRepository.findById(studyId) .orElseThrow(StudyNotFoundException::new); diff --git a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomControllerTest.java index d9f760e07..8fb448e43 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomControllerTest.java @@ -1,7 +1,6 @@ package com.woowacourse.moamoa.referenceroom.controller; import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_깃허브_아이디; @@ -77,7 +76,7 @@ void setUp() { final CreatingLinkRequest creatingLinkRequest = new CreatingLinkRequest("https://github.com/sc0116", "링크 설명입니다."); - linkId = referenceRoomService.createLink(짱구_깃허브_아이디, javaStudyId, creatingLinkRequest).getId(); + linkId = referenceRoomService.createLink(jjangguId, javaStudyId, creatingLinkRequest).getId(); entityManager.flush(); entityManager.clear(); @@ -89,7 +88,7 @@ void createByNotParticipatedMember() { final CreatingLinkRequest creatingLinkRequest = new CreatingLinkRequest("https://github.com/sc0116", "링크 설명입니다."); - assertThatThrownBy(() -> sut.createLink(디우_깃허브_아이디, javaStudyId, creatingLinkRequest)) + assertThatThrownBy(() -> sut.createLink(dwooId, javaStudyId, creatingLinkRequest)) .isInstanceOf(NotCreatingLinkException.class); } @@ -98,7 +97,7 @@ void createByNotParticipatedMember() { void updateByInvalidLinkId() { final EditingLinkRequest editingLinkRequest = new EditingLinkRequest("www.naver.com", "수정"); - assertThatThrownBy(() -> sut.updateLink(짱구_깃허브_아이디, javaStudyId, -1L, editingLinkRequest)) + assertThatThrownBy(() -> sut.updateLink(jjangguId, javaStudyId, -1L, editingLinkRequest)) .isInstanceOf(LinkNotFoundException.class); } @@ -107,21 +106,21 @@ void updateByInvalidLinkId() { void updateByNotParticipatedMember() { final EditingLinkRequest editingLinkRequest = new EditingLinkRequest("https://github.com", "수정된 링크 설명입니다."); - assertThatThrownBy(() -> sut.updateLink(디우_깃허브_아이디, javaStudyId, linkId, editingLinkRequest)) + assertThatThrownBy(() -> sut.updateLink(dwooId, javaStudyId, linkId, editingLinkRequest)) .isInstanceOf(NotParticipatedMemberException.class); } @DisplayName("존재하지 않는 링크 공유글을 삭제할 수 없다.") @Test void deleteByInvalidLinkId() { - assertThatThrownBy(() -> sut.deleteLink(짱구_깃허브_아이디, javaStudyId, -1L)) + assertThatThrownBy(() -> sut.deleteLink(jjangguId, javaStudyId, -1L)) .isInstanceOf(LinkNotFoundException.class); } @DisplayName("스터디에 참여하지 않은 경우 링크 공유글을 삭제할 수 없다.") @Test void deleteByNotParticipatedMember() { - assertThatThrownBy(() -> sut.deleteLink(디우_깃허브_아이디, javaStudyId, linkId)) + assertThatThrownBy(() -> sut.deleteLink(dwooId, javaStudyId, linkId)) .isInstanceOf(NotParticipatedMemberException.class); } } diff --git a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java index 7911f7b87..c1d51c8fd 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java @@ -1,13 +1,10 @@ package com.woowacourse.moamoa.referenceroom.controller; import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_응답; import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우_응답; import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스_응답; import static com.woowacourse.moamoa.fixtures.MemberFixtures.병민; import static com.woowacourse.moamoa.fixtures.MemberFixtures.병민_깃허브_아이디; @@ -107,10 +104,10 @@ void setUp() { final CreatingLinkRequest request3 = new CreatingLinkRequest("https://github.com/tco0427", "디우 링크."); final CreatingLinkRequest request4 = new CreatingLinkRequest("https://github.com/wilgur513", "베루스 링크."); - final Link link1 = linkService.createLink(짱구_깃허브_아이디, javaStudy.getId(), request1); - final Link link2 = linkService.createLink(그린론_깃허브_아이디, javaStudy.getId(), request2); - final Link link3 = linkService.createLink(디우_깃허브_아이디, javaStudy.getId(), request3); - final Link link4 = linkService.createLink(베루스_깃허브_아이디, javaStudy.getId(), request4); + final Link link1 = linkService.createLink(jjanggu.getId(), javaStudy.getId(), request1); + final Link link2 = linkService.createLink(greenlawn.getId(), javaStudy.getId(), request2); + final Link link3 = linkService.createLink(dwoo.getId(), javaStudy.getId(), request3); + final Link link4 = linkService.createLink(verus.getId(), javaStudy.getId(), request4); entityManager.flush(); entityManager.clear(); diff --git a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java index f60459ea8..cc701ddae 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java @@ -85,10 +85,10 @@ void setUp() { final CreatingLinkRequest request3 = new CreatingLinkRequest("https://github.com/tco0427", "디우 링크."); final CreatingLinkRequest request4 = new CreatingLinkRequest("https://github.com/wilgur513", "베루스 링크."); - final Link link1 = linkService.createLink(JJANGGU.getId(), javaStudy.getId(), request1); - final Link link2 = linkService.createLink(GREENLAWN.getId(), javaStudy.getId(), request2); - final Link link3 = linkService.createLink(DWOO.getId(), javaStudy.getId(), request3); - final Link link4 = linkService.createLink(VERUS.getId(), javaStudy.getId(), request4); + final Link link1 = linkService.createLink(jjanggu.getId(), javaStudy.getId(), request1); + final Link link2 = linkService.createLink(greenlawn.getId(), javaStudy.getId(), request2); + final Link link3 = linkService.createLink(dwoo.getId(), javaStudy.getId(), request3); + final Link link4 = linkService.createLink(verus.getId(), javaStudy.getId(), request4); entityManager.flush(); entityManager.clear(); From 4283368e958d80a012197b106b63c5e5d8c14116 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Wed, 7 Sep 2022 15:37:13 +0900 Subject: [PATCH 04/19] =?UTF-8?q?refactor:=20SearchingReferenceRoom=20`mem?= =?UTF-8?q?berId`=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SearchingReferenceRoomController.java | 6 ++-- .../SearchingReferenceRoomService.java | 4 +-- .../SearchingReferenceRoomControllerTest.java | 35 +++++++++++-------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomController.java b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomController.java index d7554e63b..a5523bed6 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.referenceroom.controller; -import com.woowacourse.moamoa.auth.config.AuthenticationPrincipal; +import com.woowacourse.moamoa.auth.config.AuthenticatedMember; import com.woowacourse.moamoa.referenceroom.service.SearchingReferenceRoomService; import com.woowacourse.moamoa.referenceroom.service.response.LinksResponse; import lombok.RequiredArgsConstructor; @@ -21,11 +21,11 @@ public class SearchingReferenceRoomController { @GetMapping public ResponseEntity getLinks( - @AuthenticationPrincipal final Long githubId, + @AuthenticatedMember final Long memberId, @PathVariable("study-id") final Long studyId, @PageableDefault(size = 9) final Pageable pageable ) { - final LinksResponse linksResponse = searchingReferenceRoomService.getLinks(githubId, studyId, pageable); + final LinksResponse linksResponse = searchingReferenceRoomService.getLinks(memberId, studyId, pageable); return ResponseEntity.ok().body(linksResponse); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/SearchingReferenceRoomService.java b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/SearchingReferenceRoomService.java index 55ad52d34..17eb30b37 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/SearchingReferenceRoomService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/service/SearchingReferenceRoomService.java @@ -25,8 +25,8 @@ public class SearchingReferenceRoomService { private final MemberRepository memberRepository; private final StudyRepository studyRepository; - public LinksResponse getLinks(final Long githubId, final Long studyId, final Pageable pageable) { - final Member member = memberRepository.findByGithubId(githubId) + public LinksResponse getLinks(final Long memberId, final Long studyId, final Pageable pageable) { + final Member member = memberRepository.findById(memberId) .orElseThrow(MemberNotFoundException::new); final Study study = studyRepository.findById(studyId) .orElseThrow(StudyNotFoundException::new); diff --git a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java index c1d51c8fd..e30bb9287 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java @@ -7,7 +7,6 @@ import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스; import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스_응답; import static com.woowacourse.moamoa.fixtures.MemberFixtures.병민; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.병민_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_응답; @@ -70,17 +69,23 @@ class SearchingReferenceRoomControllerTest { private List linkResponses; + private Member 짱구; + private Member 그린론; + private Member 디우; + private Member 베루스; + private Member 병민; + @BeforeEach void setUp() { sut = new SearchingReferenceRoomController( new SearchingReferenceRoomService(linkDao, memberRepository, studyRepository)); // 사용자 추가 - final Member jjanggu = memberRepository.save(짱구()); - final Member greenlawn = memberRepository.save(그린론()); - final Member dwoo = memberRepository.save(디우()); - final Member verus = memberRepository.save(베루스()); - memberRepository.save(병민()); + 짱구 = memberRepository.save(짱구()); + 그린론 = memberRepository.save(그린론()); + 디우 = memberRepository.save(디우()); + 베루스 = memberRepository.save(베루스()); + 병민 = memberRepository.save(병민()); // 스터디 생성 StudyService studyService = new StudyService(studyRepository, memberRepository, new DateTimeSystem()); @@ -91,9 +96,9 @@ void setUp() { javaStudy = studyService.createStudy(짱구_깃허브_아이디, javaStudyRequest); StudyParticipantService participantService = new StudyParticipantService(memberRepository, studyRepository); - participantService.participateStudy(greenlawn.getId(), javaStudy.getId()); - participantService.participateStudy(dwoo.getId(), javaStudy.getId()); - participantService.participateStudy(verus.getId(), javaStudy.getId()); + participantService.participateStudy(그린론.getId(), javaStudy.getId()); + participantService.participateStudy(디우.getId(), javaStudy.getId()); + participantService.participateStudy(베루스.getId(), javaStudy.getId()); // 링크 공유 추가 final ReferenceRoomService linkService = new ReferenceRoomService(memberRepository, studyRepository, @@ -104,10 +109,10 @@ void setUp() { final CreatingLinkRequest request3 = new CreatingLinkRequest("https://github.com/tco0427", "디우 링크."); final CreatingLinkRequest request4 = new CreatingLinkRequest("https://github.com/wilgur513", "베루스 링크."); - final Link link1 = linkService.createLink(jjanggu.getId(), javaStudy.getId(), request1); - final Link link2 = linkService.createLink(greenlawn.getId(), javaStudy.getId(), request2); - final Link link3 = linkService.createLink(dwoo.getId(), javaStudy.getId(), request3); - final Link link4 = linkService.createLink(verus.getId(), javaStudy.getId(), request4); + final Link link1 = linkService.createLink(짱구.getId(), javaStudy.getId(), request1); + final Link link2 = linkService.createLink(그린론.getId(), javaStudy.getId(), request2); + final Link link3 = linkService.createLink(디우.getId(), javaStudy.getId(), request3); + final Link link4 = linkService.createLink(베루스.getId(), javaStudy.getId(), request4); entityManager.flush(); entityManager.clear(); @@ -131,7 +136,7 @@ void setUp() { @DisplayName("링크 공유글 전체 목록 조회를 할 수 있다.") @Test void getLinks() { - final ResponseEntity links = sut.getLinks(짱구_깃허브_아이디, javaStudy.getId(), PageRequest.of(0, 5)); + final ResponseEntity links = sut.getLinks(짱구.getId(), javaStudy.getId(), PageRequest.of(0, 5)); assertAll( () -> assertThat(links.getStatusCode()).isEqualTo(HttpStatus.OK), @@ -148,7 +153,7 @@ void getLinksByNotParticipatedMember() { final Long javaStudyId = javaStudy.getId(); final PageRequest pageRequest = PageRequest.of(0, 5); - assertThatThrownBy(() -> sut.getLinks(병민_깃허브_아이디, javaStudyId, pageRequest)) + assertThatThrownBy(() -> sut.getLinks(병민.getId(), javaStudyId, pageRequest)) .isInstanceOf(NotParticipatedMemberException.class); } } From 55b994ef0a8567c893604135737c9b4db301098d Mon Sep 17 00:00:00 2001 From: Donggyu Date: Wed, 7 Sep 2022 16:24:25 +0900 Subject: [PATCH 05/19] =?UTF-8?q?refactor:=20Review=20`memberId`=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/controller/ReviewController.java | 14 +++++++------- .../moamoa/review/service/ReviewService.java | 12 ++++++------ .../controller/ReviewControllerTest.java | 18 ++++++++++-------- .../SearchingReviewControllerTest.java | 10 +++++----- 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/review/controller/ReviewController.java b/backend/src/main/java/com/woowacourse/moamoa/review/controller/ReviewController.java index 077d6e511..1f0611f5b 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/review/controller/ReviewController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/review/controller/ReviewController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.review.controller; -import com.woowacourse.moamoa.auth.config.AuthenticationPrincipal; +import com.woowacourse.moamoa.auth.config.AuthenticatedMember; import com.woowacourse.moamoa.review.service.ReviewService; import com.woowacourse.moamoa.review.service.request.EditingReviewRequest; import com.woowacourse.moamoa.review.service.request.WriteReviewRequest; @@ -25,30 +25,30 @@ public class ReviewController { @PostMapping public ResponseEntity writeReview( - @AuthenticationPrincipal final Long githubId, + @AuthenticatedMember final Long memberId, @PathVariable(name = "study-id") final Long studyId, @Valid @RequestBody final WriteReviewRequest writeReviewRequest ) { - final Long id = reviewService.writeReview(githubId, studyId, writeReviewRequest); + final Long id = reviewService.writeReview(memberId, studyId, writeReviewRequest); return ResponseEntity.created(URI.create("/api/studies/" + studyId + "/reviews/" + id)).build(); } @PutMapping("/{review-id}") public ResponseEntity updateReview( - @AuthenticationPrincipal final Long githubId, + @AuthenticatedMember final Long memberId, @PathVariable(name = "review-id") final Long reviewId, @Valid @RequestBody final EditingReviewRequest editingReviewRequest ) { - reviewService.updateReview(githubId, reviewId, editingReviewRequest); + reviewService.updateReview(memberId, reviewId, editingReviewRequest); return ResponseEntity.noContent().build(); } @DeleteMapping("/{review-id}") public ResponseEntity deleteReview( - @AuthenticationPrincipal final Long githubId, + @AuthenticatedMember final Long memberId, @PathVariable(name = "review-id") final Long reviewId ) { - reviewService.deleteReview(githubId, reviewId); + reviewService.deleteReview(memberId, reviewId); return ResponseEntity.noContent().build(); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/review/service/ReviewService.java b/backend/src/main/java/com/woowacourse/moamoa/review/service/ReviewService.java index 09739da63..2e73caedf 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/review/service/ReviewService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/review/service/ReviewService.java @@ -26,10 +26,10 @@ public class ReviewService { private final MemberRepository memberRepository; private final StudyRepository studyRepository; - public Long writeReview(final Long githubId, final Long studyId, final WriteReviewRequest writeReviewRequest) { + public Long writeReview(final Long memberId, final Long studyId, final WriteReviewRequest writeReviewRequest) { final Study study = studyRepository.findById(studyId) .orElseThrow(StudyNotFoundException::new); - final Member member = memberRepository.findByGithubId(githubId) + final Member member = memberRepository.findById(memberId) .orElseThrow(MemberNotFoundException::new); if (!study.isReviewWritable(member.getId())) { @@ -40,8 +40,8 @@ public Long writeReview(final Long githubId, final Long studyId, final WriteRevi return reviewRepository.save(review).getId(); } - public void updateReview(final Long githubId, final Long reviewId, final EditingReviewRequest editingReviewRequest) { - final Member member = memberRepository.findByGithubId(githubId) + public void updateReview(final Long memberId, final Long reviewId, final EditingReviewRequest editingReviewRequest) { + final Member member = memberRepository.findById(memberId) .orElseThrow(MemberNotFoundException::new); final Review review = reviewRepository.findById(reviewId) .orElseThrow(ReviewNotFoundException::new); @@ -49,8 +49,8 @@ public void updateReview(final Long githubId, final Long reviewId, final Editing review.updateContent(new Reviewer(member.getId()), editingReviewRequest.getContent()); } - public void deleteReview(final Long githubId, final Long reviewId) { - final Member member = memberRepository.findByGithubId(githubId) + public void deleteReview(final Long memberId, final Long reviewId) { + final Member member = memberRepository.findById(memberId) .orElseThrow(MemberNotFoundException::new); final Review review = reviewRepository.findById(reviewId) .orElseThrow(ReviewNotFoundException::new); diff --git a/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java index 066ec6fc6..5fe46ef3f 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java @@ -1,7 +1,6 @@ package com.woowacourse.moamoa.review.controller; import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_응답; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_응답; @@ -49,13 +48,16 @@ class ReviewControllerTest { private Long 짱구_리뷰; + private Member 짱구; + private Member 그린론; + @BeforeEach void setUp() { sut = new ReviewController(new ReviewService(reviewRepository, memberRepository, studyRepository)); // 사용자 추가 - final Member jjanggu = memberRepository.save(짱구()); - final Member greelawn = memberRepository.save(그린론()); + 짱구 = memberRepository.save(짱구()); + 그린론 = memberRepository.save(그린론()); // 스터디 생성 StudyService studyService = new StudyService(studyRepository, memberRepository, new DateTimeSystem()); @@ -69,15 +71,15 @@ void setUp() { Study javaStudy = studyService.createStudy(1L, javaStudyRequest); StudyParticipantService participantService = new StudyParticipantService(memberRepository, studyRepository); - participantService.participateStudy(greelawn.getId(), javaStudy.getId()); + participantService.participateStudy(그린론.getId(), javaStudy.getId()); // 리뷰 추가 ReviewService reviewService = new ReviewService(reviewRepository, memberRepository, studyRepository); 짱구_리뷰 = reviewService - .writeReview(jjanggu.getGithubId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용1")); + .writeReview(짱구.getId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용1")); final Long javaReviewId4 = reviewService - .writeReview(greelawn.getGithubId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용4")); + .writeReview(그린론.getId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용4")); final ReviewResponse 리뷰_내용1 = new ReviewResponse(짱구_리뷰, new WriterResponse(짱구_응답), LocalDate.now(), LocalDate.now(), "리뷰 내용1"); @@ -93,14 +95,14 @@ void setUp() { void notUpdate() { final EditingReviewRequest request = new EditingReviewRequest("수정한 리뷰 내용입니다."); - assertThatThrownBy(() -> sut.updateReview(그린론_깃허브_아이디, 짱구_리뷰, request)) + assertThatThrownBy(() -> sut.updateReview(그린론.getId(), 짱구_리뷰, request)) .isInstanceOf(UnwrittenReviewException.class); } @DisplayName("내가 작성하지 않은 리뷰를 삭제할 수 없다.") @Test void notDelete() { - assertThatThrownBy(() -> sut.deleteReview(그린론_깃허브_아이디, 짱구_리뷰)) + assertThatThrownBy(() -> sut.deleteReview(그린론.getId(), 짱구_리뷰)) .isInstanceOf(UnwrittenReviewException.class); } } diff --git a/backend/src/test/java/com/woowacourse/moamoa/review/controller/SearchingReviewControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/review/controller/SearchingReviewControllerTest.java index 89aa4b7a9..d999431c6 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/review/controller/SearchingReviewControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/review/controller/SearchingReviewControllerTest.java @@ -93,14 +93,14 @@ void setUp() { ReviewService reviewService = new ReviewService(reviewRepository, memberRepository, studyRepository); final Long javaReviewId1 = reviewService - .writeReview(jjanggu.getGithubId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용1")); + .writeReview(jjanggu.getId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용1")); final Long javaReviewId2 = reviewService - .writeReview(greenlawn.getGithubId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용2")); + .writeReview(greenlawn.getId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용2")); final Long javaReviewId3 = reviewService - .writeReview(dwoo.getGithubId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용3")); + .writeReview(dwoo.getId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용3")); final Long javaReviewId4 = reviewService - .writeReview(verus.getGithubId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용4")); - reviewService.writeReview(jjanggu.getGithubId(), reactStudy.getId(), new WriteReviewRequest("리뷰 내용5")); + .writeReview(verus.getId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용4")); + reviewService.writeReview(jjanggu.getId(), reactStudy.getId(), new WriteReviewRequest("리뷰 내용5")); final ReviewResponse 리뷰_내용1 = new ReviewResponse(javaReviewId1, new WriterResponse(짱구_응답), LocalDate.now(), LocalDate.now(), "리뷰 내용1"); From dd067ad4dd27cc11f435a03ba6b48e9513218543 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Wed, 7 Sep 2022 16:46:26 +0900 Subject: [PATCH 06/19] =?UTF-8?q?refactor:=20Study=20`memberId`=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../study/controller/MyStudyController.java | 14 +++++------ .../study/controller/StudyController.java | 5 ++-- .../moamoa/study/service/MyStudyService.java | 8 +++---- .../moamoa/study/service/StudyService.java | 17 ++++---------- .../ReferenceRoomControllerTest.java | 3 +-- .../SearchingReferenceRoomControllerTest.java | 3 +-- .../referenceroom/query/LinkDaoTest.java | 2 +- .../controller/ReviewControllerTest.java | 2 +- .../SearchingReviewControllerTest.java | 4 ++-- .../moamoa/review/query/ReviewDaoTest.java | 4 ++-- .../controller/MyStudyControllerTest.java | 3 +-- .../SearchingStudyControllerTest.java | 12 +++++----- .../study/controller/StudyControllerTest.java | 23 +++++++++++-------- .../StudyParticipantControllerTest.java | 2 +- .../schedule/AutoUpdateStatusTaskTest.java | 16 ++++++------- .../study/service/MyStudyServiceTest.java | 6 ++--- .../controller/ArticleControllerTest.java | 4 ++-- .../DeletingArticleControllerTest.java | 6 ++--- .../GettingArticleControllerTest.java | 11 ++++----- ...mmunityArticleSummariesControllerTest.java | 23 +++++++++---------- .../UpdatingArticleControllerTest.java | 6 ++--- 21 files changed, 80 insertions(+), 94 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/study/controller/MyStudyController.java b/backend/src/main/java/com/woowacourse/moamoa/study/controller/MyStudyController.java index 48f26bb87..ae48b4aeb 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/study/controller/MyStudyController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/study/controller/MyStudyController.java @@ -1,17 +1,15 @@ package com.woowacourse.moamoa.study.controller; -import com.woowacourse.moamoa.auth.config.AuthenticationPrincipal; +import com.woowacourse.moamoa.auth.config.AuthenticatedMember; import com.woowacourse.moamoa.study.service.MyStudyService; import com.woowacourse.moamoa.study.service.response.MyRoleResponse; import com.woowacourse.moamoa.study.service.response.MyStudiesResponse; - +import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import lombok.RequiredArgsConstructor; - @RestController @RequiredArgsConstructor public class MyStudyController { @@ -19,15 +17,15 @@ public class MyStudyController { private final MyStudyService myStudyService; @GetMapping("/api/my/studies") - public ResponseEntity getMyStudies(@AuthenticationPrincipal final Long githubId) { - final MyStudiesResponse myStudiesResponse = myStudyService.getStudies(githubId); + public ResponseEntity getMyStudies(@AuthenticatedMember final Long memberId) { + final MyStudiesResponse myStudiesResponse = myStudyService.getStudies(memberId); return ResponseEntity.ok().body(myStudiesResponse); } @GetMapping("/api/members/me/role") public ResponseEntity getMyRoleInStudy( - @AuthenticationPrincipal final Long githubId, @RequestParam(name = "study-id") final Long studyId + @AuthenticatedMember final Long memberId, @RequestParam(name = "study-id") final Long studyId ) { - return ResponseEntity.ok().body(myStudyService.findMyRoleInStudy(githubId, studyId)); + return ResponseEntity.ok().body(myStudyService.findMyRoleInStudy(memberId, studyId)); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyController.java b/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyController.java index b67a29673..95d68c41e 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyController.java @@ -1,7 +1,6 @@ package com.woowacourse.moamoa.study.controller; import com.woowacourse.moamoa.auth.config.AuthenticatedMember; -import com.woowacourse.moamoa.auth.config.AuthenticationPrincipal; import com.woowacourse.moamoa.study.domain.Study; import com.woowacourse.moamoa.study.service.StudyService; import com.woowacourse.moamoa.study.service.request.StudyRequest; @@ -25,10 +24,10 @@ public class StudyController { @PostMapping public ResponseEntity createStudy( - @AuthenticationPrincipal final Long githubId, + @AuthenticatedMember final Long memberId, @Valid @RequestBody(required = false) final StudyRequest studyRequest ) { - final Study study = studyService.createStudy(githubId, studyRequest); + final Study study = studyService.createStudy(memberId, studyRequest); return ResponseEntity.created(URI.create("/api/studies/" + study.getId())).build(); } diff --git a/backend/src/main/java/com/woowacourse/moamoa/study/service/MyStudyService.java b/backend/src/main/java/com/woowacourse/moamoa/study/service/MyStudyService.java index 6037bf18b..22f2dc2db 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/study/service/MyStudyService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/study/service/MyStudyService.java @@ -36,8 +36,8 @@ public class MyStudyService { private final StudyRepository studyRepository; - public MyStudiesResponse getStudies(final Long githubId) { - final Member member = memberRepository.findByGithubId(githubId) + public MyStudiesResponse getStudies(final Long memberId) { + final Member member = memberRepository.findById(memberId) .orElseThrow(MemberNotFoundException::new); final List myStudySummaryData = myStudyDao.findMyStudyByMemberId(member.getId()); @@ -82,8 +82,8 @@ private List mapToResponse(final List myStu .collect(Collectors.toList()); } - public MyRoleResponse findMyRoleInStudy(final Long githubId, final Long studyId) { - final Member member = memberRepository.findByGithubId(githubId) + public MyRoleResponse findMyRoleInStudy(final Long memberId, final Long studyId) { + final Member member = memberRepository.findById(memberId) .orElseThrow(MemberNotFoundException::new); final Study study = studyRepository.findById(studyId) .orElseThrow(StudyNotFoundException::new); diff --git a/backend/src/main/java/com/woowacourse/moamoa/study/service/StudyService.java b/backend/src/main/java/com/woowacourse/moamoa/study/service/StudyService.java index 263aa4538..52447aaef 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/study/service/StudyService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/study/service/StudyService.java @@ -1,9 +1,9 @@ package com.woowacourse.moamoa.study.service; -import com.woowacourse.moamoa.common.exception.UnauthorizedException; import com.woowacourse.moamoa.common.utils.DateTimeSystem; import com.woowacourse.moamoa.member.domain.Member; import com.woowacourse.moamoa.member.domain.repository.MemberRepository; +import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import com.woowacourse.moamoa.study.domain.AttachedTags; import com.woowacourse.moamoa.study.domain.Content; import com.woowacourse.moamoa.study.domain.Participants; @@ -36,9 +36,10 @@ public StudyService(final StudyRepository studyRepository, this.dateTimeSystem = dateTimeSystem; } - public Study createStudy(final Long githubId, final StudyRequest request) { + public Study createStudy(final Long memberId, final StudyRequest request) { final LocalDateTime createdAt = dateTimeSystem.now(); - final Member owner = findMemberBy(githubId); + final Member owner = memberRepository.findById(memberId) + .orElseThrow(MemberNotFoundException::new); final Participants participants = request.mapToParticipants(owner.getId()); final RecruitPlanner recruitPlanner = request.mapToRecruitPlan(); @@ -51,16 +52,6 @@ public Study createStudy(final Long githubId, final StudyRequest request) { new Study(content, participants, recruitPlanner, studyPlanner, attachedTags, createdAt)); } - private Study findStudyBy(final Long studyId) { - return studyRepository.findById(studyId) - .orElseThrow(StudyNotFoundException::new); - } - - private Member findMemberBy(final Long githubId) { - return memberRepository.findByGithubId(githubId) - .orElseThrow(() -> new UnauthorizedException(String.format("%d의 githubId를 가진 사용자는 없습니다.", githubId))); - } - public void autoUpdateStatus() { final List studies = studyRepository.findAll(); final LocalDate now = dateTimeSystem.now().toLocalDate(); diff --git a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomControllerTest.java index 8fb448e43..71808cb4a 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomControllerTest.java @@ -3,7 +3,6 @@ import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우; import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바_스터디_신청서; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -65,7 +64,7 @@ void setUp() { final LocalDate startDate = LocalDate.now(); final StudyRequest javaStudyRequest = 자바_스터디_신청서(startDate); - javaStudyId = studyService.createStudy(짱구_깃허브_아이디, javaStudyRequest).getId(); + javaStudyId = studyService.createStudy(jjangguId, javaStudyRequest).getId(); StudyParticipantService participantService = new StudyParticipantService(memberRepository, studyRepository); participantService.participateStudy(verusId, javaStudyId); diff --git a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java index e30bb9287..db71553d2 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java @@ -8,7 +8,6 @@ import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스_응답; import static com.woowacourse.moamoa.fixtures.MemberFixtures.병민; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_응답; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바_스터디_신청서; import static org.assertj.core.api.Assertions.assertThat; @@ -93,7 +92,7 @@ void setUp() { final LocalDate startDate = LocalDate.now(); StudyRequest javaStudyRequest = 자바_스터디_신청서(startDate); - javaStudy = studyService.createStudy(짱구_깃허브_아이디, javaStudyRequest); + javaStudy = studyService.createStudy(짱구.getId(), javaStudyRequest); StudyParticipantService participantService = new StudyParticipantService(memberRepository, studyRepository); participantService.participateStudy(그린론.getId(), javaStudy.getId()); diff --git a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java index cc701ddae..835bed045 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/query/LinkDaoTest.java @@ -70,7 +70,7 @@ void setUp() { final LocalDate startDate = LocalDate.now(); StudyRequest javaStudyRequest = 자바_스터디_신청서(startDate); - javaStudy = createStudyService.createStudy(JJANGGU.getId(), javaStudyRequest); + javaStudy = createStudyService.createStudy(jjanggu.getId(), javaStudyRequest); StudyParticipantService participantService = new StudyParticipantService(memberRepository, studyRepository); participantService.participateStudy(greenlawn.getId(), javaStudy.getId()); diff --git a/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java index 5fe46ef3f..ff7ae732d 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java @@ -68,7 +68,7 @@ void setUp() { .startDate(startDate) .build(); - Study javaStudy = studyService.createStudy(1L, javaStudyRequest); + Study javaStudy = studyService.createStudy(짱구.getId(), javaStudyRequest); StudyParticipantService participantService = new StudyParticipantService(memberRepository, studyRepository); participantService.participateStudy(그린론.getId(), javaStudy.getId()); diff --git a/backend/src/test/java/com/woowacourse/moamoa/review/controller/SearchingReviewControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/review/controller/SearchingReviewControllerTest.java index d999431c6..87be118c7 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/review/controller/SearchingReviewControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/review/controller/SearchingReviewControllerTest.java @@ -81,8 +81,8 @@ void setUp() { StudyRequest javaStudyRequest = 자바_스터디_신청서(startDate); StudyRequest reactStudyRequest = 리액트_스터디_신청서(startDate); - javaStudy = studyService.createStudy(1L, javaStudyRequest); - final Study reactStudy = studyService.createStudy(1L, reactStudyRequest); + javaStudy = studyService.createStudy(jjanggu.getId(), javaStudyRequest); + final Study reactStudy = studyService.createStudy(jjanggu.getId(), reactStudyRequest); StudyParticipantService participantService = new StudyParticipantService(memberRepository, studyRepository); participantService.participateStudy(greenlawn.getId(), javaStudy.getId()); diff --git a/backend/src/test/java/com/woowacourse/moamoa/review/query/ReviewDaoTest.java b/backend/src/test/java/com/woowacourse/moamoa/review/query/ReviewDaoTest.java index 20c6603cb..3597d7412 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/review/query/ReviewDaoTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/review/query/ReviewDaoTest.java @@ -89,8 +89,8 @@ void setUp() { StudyRequest javaStudyRequest = 자바_스터디_신청서(startDate); StudyRequest reactStudyRequest = 리액트_스터디_신청서(startDate); - javaStudy = createStudyService.createStudy(1L, javaStudyRequest); - reactStudy = createStudyService.createStudy(1L, reactStudyRequest); + javaStudy = createStudyService.createStudy(짱구.getId(), javaStudyRequest); + reactStudy = createStudyService.createStudy(짱구.getId(), reactStudyRequest); // 리뷰 추가 final Review firstJavaReview = reviewRepository.save(자바_리뷰1(javaStudy.getId(), 짱구.getId())); diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java index 644726bbd..88057fc2b 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java @@ -1,7 +1,6 @@ package com.woowacourse.moamoa.study.controller; import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우; import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구; @@ -122,7 +121,7 @@ void setUp() { @DisplayName("내가 참여한 스터디를 조회한다.") @Test void getMyStudies() { - final ResponseEntity myStudies = myStudyController.getMyStudies(그린론_깃허브_아이디); + final ResponseEntity myStudies = myStudyController.getMyStudies(그린론.getId()); assertThat(myStudies.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(myStudies.getBody()).isNotNull(); diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/controller/SearchingStudyControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/controller/SearchingStudyControllerTest.java index 777c278c3..1c75ea726 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/controller/SearchingStudyControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/controller/SearchingStudyControllerTest.java @@ -86,26 +86,26 @@ void initDataBase() { StudyService studyService = new StudyService(studyRepository, memberRepository, new DateTimeSystem()); StudyRequest javaStudyRequest = 자바_스터디_신청서(List.of(1L, 2L, 3L), 10, LocalDate.now()); - javaStudyId = studyService.createStudy(jjanggu.getGithubId(), javaStudyRequest).getId(); + javaStudyId = studyService.createStudy(jjanggu.getId(), javaStudyRequest).getId(); StudyRequest reactStudyRequest = 리액트_스터디_신청서(List.of(2L, 4L, 5L), 5, LocalDate.now()); - reactStudyId = studyService.createStudy(dwoo.getGithubId(), reactStudyRequest).getId(); + reactStudyId = studyService.createStudy(dwoo.getId(), reactStudyRequest).getId(); StudyRequest javaScriptStudyRequest = 자바스크립트_스터디_신청서(List.of(2L, 4L), LocalDate.now()); - javaScriptId = studyService.createStudy(jjanggu.getGithubId(), javaScriptStudyRequest).getId(); + javaScriptId = studyService.createStudy(jjanggu.getId(), javaScriptStudyRequest).getId(); StudyRequest httpStudyRequest = HTTP_스터디_신청서(List.of(2L, 3L), LocalDate.now()); - httpStudyId = studyService.createStudy(jjanggu.getGithubId(), httpStudyRequest).getId(); + httpStudyId = studyService.createStudy(jjanggu.getId(), httpStudyRequest).getId(); StudyRequest algorithmStudyRequest = 알고리즘_스터디_신청서(List.of(), LocalDate.now()); - algorithmStudyId = studyService.createStudy(jjanggu.getGithubId(), algorithmStudyRequest).getId(); + algorithmStudyId = studyService.createStudy(jjanggu.getId(), algorithmStudyRequest).getId(); StudyRequest linuxStudyRequest = StudyRequest.builder() .title("Linux 스터디").excerpt("리눅스 설명").thumbnail("linux thumbnail").description("Linux를 공부하자의 베루스입니다.") .startDate(LocalDate.now()).endDate(LocalDate.now()).enrollmentEndDate(LocalDate.now()) .tagIds(List.of()) .build(); - linuxStudyId = studyService.createStudy(verus.getGithubId(), linuxStudyRequest).getId(); + linuxStudyId = studyService.createStudy(verus.getId(), linuxStudyRequest).getId(); StudyParticipantService participantService = new StudyParticipantService(memberRepository, studyRepository); diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java index 8c1c90d17..fdabdf405 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java @@ -7,10 +7,10 @@ import static org.springframework.http.HttpStatus.CREATED; import com.woowacourse.moamoa.common.RepositoryTest; -import com.woowacourse.moamoa.common.exception.UnauthorizedException; import com.woowacourse.moamoa.common.utils.DateTimeSystem; import com.woowacourse.moamoa.member.domain.Member; import com.woowacourse.moamoa.member.domain.repository.MemberRepository; +import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import com.woowacourse.moamoa.study.domain.AttachedTag; import com.woowacourse.moamoa.study.domain.Content; import com.woowacourse.moamoa.study.domain.Participants; @@ -38,10 +38,13 @@ class StudyControllerTest { @Autowired private MemberRepository memberRepository; + private Member 짱구; + private Member 디우; + @BeforeEach void initDataBase() { - memberRepository.save(new Member(1L, "jjanggu", "https://image", "github.com")); - memberRepository.save(new Member(2L, "dwoo", "https://image", "github.com")); + 짱구 = memberRepository.save(new Member(1L, "jjanggu", "https://image", "github.com")); + 디우 = memberRepository.save(new Member(2L, "dwoo", "https://image", "github.com")); } @DisplayName("스터디를 생성하여 저장한다.") @@ -63,7 +66,7 @@ void openStudy() { .build(); // when - final ResponseEntity response = sut.createStudy(1L, studyRequest); + final ResponseEntity response = sut.createStudy(짱구.getId(), studyRequest); // then final String id = response.getHeaders().getLocation().getPath().replace("/api/studies/", ""); @@ -101,7 +104,7 @@ void createStudyByInvalidPeriod() { .build(); // when - assertThatThrownBy(() -> sut.createStudy(1L, studyRequest)) + assertThatThrownBy(() -> sut.createStudy(짱구.getId(), studyRequest)) .isInstanceOf(InvalidPeriodException.class); } @@ -123,7 +126,7 @@ void checkStudyStatusIfCreateDateSameStartDate() { .tagIds(List.of(1L, 2L)) .build(); - final ResponseEntity response = sut.createStudy(1L, createStudyRequest); + final ResponseEntity response = sut.createStudy(짱구.getId(), createStudyRequest); final String id = response.getHeaders() .getLocation() .getPath() @@ -153,8 +156,8 @@ void createStudyByNotFoundUser() { .build(); // when - assertThatThrownBy(() -> sut.createStudy(100L, studyRequest)) // 존재하지 않는 사용자로 추가 시 예외 발생 - .isInstanceOf(UnauthorizedException.class); + assertThatThrownBy(() -> sut.createStudy(짱구.getId() + 100L, studyRequest)) // 존재하지 않는 사용자로 추가 시 예외 발생 + .isInstanceOf(MemberNotFoundException.class); } @DisplayName("최대인원이 한 명인 경우 바로 모집 종료가 되어야 한다.") @@ -175,7 +178,7 @@ void createdStudyWithMaxSizeOne() { .tagIds(List.of(1L, 2L)) .build(); - final ResponseEntity createdResponse = studyController.createStudy(1L, studyRequest); + final ResponseEntity createdResponse = studyController.createStudy(짱구.getId(), studyRequest); // when final String location = createdResponse.getHeaders().getLocation().getPath(); @@ -205,7 +208,7 @@ void updateStudyDetails() { .tagIds(List.of(1L, 2L)) .build(); - final ResponseEntity createdResponse = studyController.createStudy(1L, studyRequest); + final ResponseEntity createdResponse = studyController.createStudy(짱구.getId(), studyRequest); final String location = createdResponse.getHeaders().getLocation().getPath(); final long studyId = getStudyIdBy(location); Study study = studyRepository.findById(studyId).orElseThrow(); diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyParticipantControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyParticipantControllerTest.java index 1f5a441df..0ff42864d 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyParticipantControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyParticipantControllerTest.java @@ -55,7 +55,7 @@ void participateStudy() { .tagIds(List.of(1L, 2L)) .build(); - final ResponseEntity createdResponse = studyController.createStudy(jjanggu.getGithubId(), studyRequest); + final ResponseEntity createdResponse = studyController.createStudy(jjanggu.getId(), studyRequest); // when final String location = createdResponse.getHeaders().getLocation().getPath(); diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/schedule/AutoUpdateStatusTaskTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/schedule/AutoUpdateStatusTaskTest.java index 1c5bae37c..fe9d7e434 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/schedule/AutoUpdateStatusTaskTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/schedule/AutoUpdateStatusTaskTest.java @@ -58,8 +58,8 @@ void initDataBase() { dateTimeSystem = mock(DateTimeSystem.class); given(dateTimeSystem.now()).willReturn(now.minusDays(5)); - memberRepository.save(new Member(1L, "jjanggu", "https://image", "github.com")); - memberRepository.save(new Member(2L, "dwoo", "https://image", "github.com")); + final Member jjanggu = memberRepository.save(new Member(1L, "jjanggu", "https://image", "github.com")); + final Member dwoo = memberRepository.save(new Member(2L, "dwoo", "https://image", "github.com")); StudyService studyService = new StudyService(studyRepository, memberRepository, dateTimeSystem); @@ -69,7 +69,7 @@ void initDataBase() { .startDate(dateTimeSystem.now().toLocalDate().plusDays(3)) .enrollmentEndDate(dateTimeSystem.now().toLocalDate().plusDays(4)) .build(); - javaStudyId = studyService.createStudy(1L, javaRequest).getId(); + javaStudyId = studyService.createStudy(jjanggu.getId(), javaRequest).getId(); StudyRequest reactRequest = StudyRequest.builder() .title("React 스터디").excerpt("리액트 설명").thumbnail("react thumbnail") @@ -77,7 +77,7 @@ void initDataBase() { .startDate(dateTimeSystem.now().toLocalDate().plusDays(2)) .enrollmentEndDate(dateTimeSystem.now().toLocalDate().plusDays(3)) .build(); - reactStudyId = studyService.createStudy(1L, reactRequest).getId(); + reactStudyId = studyService.createStudy(jjanggu.getId(), reactRequest).getId(); StudyRequest javascriptRequest = StudyRequest.builder() .title("javaScript 스터디").excerpt("자바스크립트 설명").thumbnail("javascript thumbnail") @@ -85,14 +85,14 @@ void initDataBase() { .startDate(dateTimeSystem.now().toLocalDate().plusDays(8)) .enrollmentEndDate(dateTimeSystem.now().toLocalDate().plusDays(7)) .build(); - javascriptStudyId = studyService.createStudy(1L, javascriptRequest).getId(); + javascriptStudyId = studyService.createStudy(jjanggu.getId(), javascriptRequest).getId(); StudyRequest httpRequest = StudyRequest.builder() .title("Http 스터디").excerpt("Http 설명").thumbnail("http thumbnail") .description("그린론의 HTTP 접해보기") .startDate(dateTimeSystem.now().toLocalDate().plusDays(8)) .build(); - httpStudyId = studyService.createStudy(1L, httpRequest).getId(); + httpStudyId = studyService.createStudy(jjanggu.getId(), httpRequest).getId(); StudyRequest linuxRequest = StudyRequest.builder() .title("Linux 스터디").excerpt("리눅스 설명").thumbnail("linux thumbnail") @@ -100,7 +100,7 @@ void initDataBase() { .startDate(dateTimeSystem.now().toLocalDate()) .endDate(dateTimeSystem.now().toLocalDate()) .build(); - linuxStudyId = studyService.createStudy(1L, linuxRequest).getId(); + linuxStudyId = studyService.createStudy(jjanggu.getId(), linuxRequest).getId(); StudyRequest algorithmRequest = StudyRequest.builder() .title("알고리즘 스터디").excerpt("알고리즘 설명").thumbnail("algorithm thumbnail") @@ -109,7 +109,7 @@ void initDataBase() { .endDate(dateTimeSystem.now().toLocalDate().plusDays(5)) .build(); - algorithmStudyId = studyService.createStudy(1L, algorithmRequest).getId(); + algorithmStudyId = studyService.createStudy(jjanggu.getId(), algorithmRequest).getId(); sut = new AutoCloseEnrollmentTask(studyService); } diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java index 02923b6cb..11bea1065 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java @@ -89,7 +89,7 @@ void setUp() { @DisplayName("내가 참여한 스터디를 조회한다.") @Test void findMyStudies() { - final MyStudiesResponse myStudiesResponse = myStudyService.getStudies(짱구.getGithubId()); + final MyStudiesResponse myStudiesResponse = myStudyService.getStudies(짱구.getId()); final List owners = myStudiesResponse.getStudies() .stream() @@ -130,7 +130,7 @@ void findMyStudies() { @DisplayName("태그가 없는 스터디를 조회한다.") @Test void findMyStudiesWithoutTags() { - final MyStudiesResponse myStudiesResponse = myStudyService.getStudies(디우.getGithubId()); + final MyStudiesResponse myStudiesResponse = myStudyService.getStudies(디우.getId()); final List owners = myStudiesResponse.getStudies() .stream() @@ -201,7 +201,7 @@ void getMemberRoleNotExistUser() { @DisplayName("사용자 역할 조회하는 기능에서 존재하지 않는 스터디 조회 시 예외 발생") @Test void getMemberRoleNotExistStudy() { - assertThatThrownBy(() -> myStudyService.findMyRoleInStudy(1L, 10L)) + assertThatThrownBy(() -> myStudyService.findMyRoleInStudy(짱구.getId(), 10L)) .isInstanceOf(StudyNotFoundException.class) .hasMessageContaining("스터디가 존재하지 않습니다."); } diff --git a/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/ArticleControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/ArticleControllerTest.java index 5ca721134..303765d8a 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/ArticleControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/ArticleControllerTest.java @@ -69,7 +69,7 @@ void createCommunityArticle() { // arrange Member owner = memberRepository.save(new Member(1L, "username", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(owner.getGithubId(), javaStudyRequest.startDate(LocalDate.now()).build()); + .createStudy(owner.getId(), javaStudyRequest.startDate(LocalDate.now()).build()); ArticleRequest request = new ArticleRequest("게시글 제목", "게시글 내용"); @@ -97,7 +97,7 @@ void createNoticeArticle() { // arrange Member owner = memberRepository.save(new Member(1L, "username", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(owner.getGithubId(), javaStudyRequest.startDate(LocalDate.now()).build()); + .createStudy(owner.getId(), javaStudyRequest.startDate(LocalDate.now()).build()); ArticleRequest request = new ArticleRequest("게시글 제목", "게시글 내용"); diff --git a/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/DeletingArticleControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/DeletingArticleControllerTest.java index b64397467..a9c62e215 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/DeletingArticleControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/DeletingArticleControllerTest.java @@ -67,7 +67,7 @@ void deleteCommunityArticle() { Member member = memberRepository.save(new Member(1L, "username", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(member.getGithubId(), javaStudyRequest.startDate(LocalDate.now()).build()); + .createStudy(member.getId(), javaStudyRequest.startDate(LocalDate.now()).build()); ArticleRequest request = new ArticleRequest("게시글 제목", "게시글 내용"); Article article = articleService.createArticle(member.getId(), study.getId(), request, COMMUNITY); @@ -86,7 +86,7 @@ void throwExceptionWhenGettingToNotFoundArticle() { // arrange Member member = memberRepository.save(new Member(1L, "username", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(member.getGithubId(), javaStudyRequest.startDate(LocalDate.now()).build()); + .createStudy(member.getId(), javaStudyRequest.startDate(LocalDate.now()).build()); final Long memberId = member.getId(); final Long studyId = study.getId(); @@ -104,7 +104,7 @@ void throwExceptionWhenDeletingByNotParticipant() { Member other = memberRepository.save(new Member(2L, "username2", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(member.getGithubId(), javaStudyRequest.startDate(LocalDate.now()).build()); + .createStudy(member.getId(), javaStudyRequest.startDate(LocalDate.now()).build()); ArticleRequest request = new ArticleRequest("게시글 제목", "게시글 내용"); Article article = articleService.createArticle(member.getId(), study.getId(), request, COMMUNITY); diff --git a/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/GettingArticleControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/GettingArticleControllerTest.java index e40c53ebd..72d19b1c7 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/GettingArticleControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/GettingArticleControllerTest.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.studyroom.controller; -import static com.woowacourse.moamoa.studyroom.domain.ArticleType.*; +import static com.woowacourse.moamoa.studyroom.domain.ArticleType.COMMUNITY; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -13,9 +13,8 @@ import com.woowacourse.moamoa.study.service.StudyService; import com.woowacourse.moamoa.study.service.request.StudyRequestBuilder; import com.woowacourse.moamoa.studyroom.domain.Article; -import com.woowacourse.moamoa.studyroom.domain.ArticleType; -import com.woowacourse.moamoa.studyroom.domain.repository.studyroom.StudyRoomRepository; import com.woowacourse.moamoa.studyroom.domain.repository.article.ArticleRepositoryFactory; +import com.woowacourse.moamoa.studyroom.domain.repository.studyroom.StudyRoomRepository; import com.woowacourse.moamoa.studyroom.query.ArticleDao; import com.woowacourse.moamoa.studyroom.service.ArticleService; import com.woowacourse.moamoa.studyroom.service.exception.ArticleNotFoundException; @@ -69,7 +68,7 @@ void getStudyCommunityArticle() { // arrange Member member = memberRepository.save(new Member(1L, "username", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(member.getGithubId(), javaStudyRequest.startDate(LocalDate.now()).build()); + .createStudy(member.getId(), javaStudyRequest.startDate(LocalDate.now()).build()); ArticleRequest request = new ArticleRequest("게시글 제목", "게시글 내용"); Article article = articleService.createArticle(member.getId(), study.getId(), request, COMMUNITY); @@ -94,7 +93,7 @@ void throwExceptionWhenGettingToNotFoundArticle() { // arrange Member member = memberRepository.save(new Member(1L, "username", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(member.getGithubId(), javaStudyRequest.startDate(LocalDate.now()).build()); + .createStudy(member.getId(), javaStudyRequest.startDate(LocalDate.now()).build()); final Long memberId = member.getId(); final Long studyId = study.getId(); @@ -112,7 +111,7 @@ void throwExceptionWhenGettingByNotParticipant() { Member other = memberRepository.save(new Member(2L, "username2", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(member.getGithubId(), javaStudyRequest.startDate(LocalDate.now()).build()); + .createStudy(member.getId(), javaStudyRequest.startDate(LocalDate.now()).build()); ArticleRequest request = new ArticleRequest("게시글 제목", "게시글 내용"); Article article = articleService.createArticle(member.getId(), study.getId(), request, COMMUNITY); diff --git a/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/GettingCommunityArticleSummariesControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/GettingCommunityArticleSummariesControllerTest.java index 22bdb98a5..0f42c7c1d 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/GettingCommunityArticleSummariesControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/GettingCommunityArticleSummariesControllerTest.java @@ -1,15 +1,21 @@ package com.woowacourse.moamoa.studyroom.controller; -import static com.woowacourse.moamoa.studyroom.domain.ArticleType.*; +import static com.woowacourse.moamoa.studyroom.domain.ArticleType.COMMUNITY; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import com.woowacourse.moamoa.common.RepositoryTest; import com.woowacourse.moamoa.common.utils.DateTimeSystem; +import com.woowacourse.moamoa.member.domain.Member; +import com.woowacourse.moamoa.member.domain.repository.MemberRepository; +import com.woowacourse.moamoa.study.domain.Study; +import com.woowacourse.moamoa.study.domain.repository.StudyRepository; +import com.woowacourse.moamoa.study.service.StudyService; +import com.woowacourse.moamoa.study.service.exception.StudyNotFoundException; +import com.woowacourse.moamoa.study.service.request.StudyRequestBuilder; import com.woowacourse.moamoa.studyroom.domain.Article; -import com.woowacourse.moamoa.studyroom.domain.ArticleType; -import com.woowacourse.moamoa.studyroom.domain.repository.studyroom.StudyRoomRepository; import com.woowacourse.moamoa.studyroom.domain.repository.article.ArticleRepositoryFactory; +import com.woowacourse.moamoa.studyroom.domain.repository.studyroom.StudyRoomRepository; import com.woowacourse.moamoa.studyroom.query.ArticleDao; import com.woowacourse.moamoa.studyroom.service.ArticleService; import com.woowacourse.moamoa.studyroom.service.exception.UnviewableArticleException; @@ -17,13 +23,6 @@ import com.woowacourse.moamoa.studyroom.service.response.ArticleSummariesResponse; import com.woowacourse.moamoa.studyroom.service.response.ArticleSummaryResponse; import com.woowacourse.moamoa.studyroom.service.response.AuthorResponse; -import com.woowacourse.moamoa.member.domain.Member; -import com.woowacourse.moamoa.member.domain.repository.MemberRepository; -import com.woowacourse.moamoa.study.domain.Study; -import com.woowacourse.moamoa.study.domain.repository.StudyRepository; -import com.woowacourse.moamoa.study.service.StudyService; -import com.woowacourse.moamoa.study.service.exception.StudyNotFoundException; -import com.woowacourse.moamoa.study.service.request.StudyRequestBuilder; import java.time.LocalDate; import java.util.List; import org.junit.jupiter.api.BeforeEach; @@ -75,7 +74,7 @@ void getCommunityArticles() { // arrange Member 그린론 = memberRepository.save(new Member(1L, "그린론", "http://image", "http://profile")); - Study study = studyService.createStudy(그린론.getGithubId(), javaStudyRequest.startDate(LocalDate.now()).build()); + Study study = studyService.createStudy(그린론.getId(), javaStudyRequest.startDate(LocalDate.now()).build()); articleService .createArticle(그린론.getId(), study.getId(), new ArticleRequest("제목1", "내용1"), COMMUNITY); @@ -129,7 +128,7 @@ void throwExceptionWhenGettingByNotParticipant() { Member other = memberRepository.save(new Member(2L, "username2", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(member.getGithubId(), javaStudyRequest.startDate(LocalDate.now()).build()); + .createStudy(member.getId(), javaStudyRequest.startDate(LocalDate.now()).build()); final Long otherId = other.getId(); final Long studyId = study.getId(); diff --git a/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/UpdatingArticleControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/UpdatingArticleControllerTest.java index 8014e1e1d..9cf5d662d 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/UpdatingArticleControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/studyroom/controller/UpdatingArticleControllerTest.java @@ -71,7 +71,7 @@ void updateArticle() { // arrange Member owner = memberRepository.save(new Member(1L, "username", "image", "profile")); Study study = studyService - .createStudy(owner.getGithubId(), javaStudyBuilder.startDate(LocalDate.now()).build()); + .createStudy(owner.getId(), javaStudyBuilder.startDate(LocalDate.now()).build()); Article article = articleService .createArticle(owner.getId(), study.getId(), new ArticleRequest("제목", "내용"), COMMUNITY); @@ -98,7 +98,7 @@ void throwExceptionWhenUpdateToNotFoundArticle() { // arrange Member member = memberRepository.save(new Member(1L, "username", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(member.getGithubId(), javaStudyBuilder.startDate(LocalDate.now()).build()); + .createStudy(member.getId(), javaStudyBuilder.startDate(LocalDate.now()).build()); final Long memberId = member.getId(); final Long studyId = study.getId(); @@ -118,7 +118,7 @@ void throwExceptionWhenUpdateByNotParticipant() { Member other = memberRepository.save(new Member(2L, "username2", "imageUrl", "profileUrl")); Study study = studyService - .createStudy(member.getGithubId(), javaStudyBuilder.startDate(LocalDate.now()).build()); + .createStudy(member.getId(), javaStudyBuilder.startDate(LocalDate.now()).build()); ArticleRequest request = new ArticleRequest("게시글 제목", "게시글 내용"); final Article article = articleService From f842f386f78e6a4e792375608a0e308216bb4ef1 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Wed, 7 Sep 2022 17:04:20 +0900 Subject: [PATCH 07/19] =?UTF-8?q?refactor:=20AuthenticationPrincipal=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moamoa/auth/config/AuthConfig.java | 5 -- .../auth/config/AuthenticationPrincipal.java | 11 ---- .../auth/controller/AuthController.java | 6 +-- .../AuthenticationArgumentResolver.java | 39 -------------- .../moamoa/auth/service/AuthService.java | 10 +++- .../AuthenticationArgumentResolverTest.java | 53 ------------------- .../moamoa/auth/service/AuthServiceTest.java | 6 ++- 7 files changed, 15 insertions(+), 115 deletions(-) delete mode 100644 backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthenticationPrincipal.java delete mode 100644 backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticationArgumentResolver.java delete mode 100644 backend/src/test/java/com/woowacourse/moamoa/auth/controller/AuthenticationArgumentResolverTest.java diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthConfig.java b/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthConfig.java index 618364021..c3c273f0e 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthConfig.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthConfig.java @@ -2,11 +2,8 @@ import com.woowacourse.moamoa.auth.controller.AuthenticatedMemberResolver; import com.woowacourse.moamoa.auth.controller.AuthenticatedRefreshArgumentResolver; -import com.woowacourse.moamoa.auth.controller.AuthenticationArgumentResolver; import com.woowacourse.moamoa.auth.controller.AuthenticationInterceptor; - import java.util.List; - import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -21,12 +18,10 @@ public class AuthConfig implements WebMvcConfigurer { private final AuthenticatedRefreshArgumentResolver authenticatedRefreshArgumentResolver; private final AuthenticationInterceptor authenticationInterceptor; - private final AuthenticationArgumentResolver authenticationArgumentResolver; private final AuthenticatedMemberResolver authenticatedMemberResolver; @Override public void addArgumentResolvers(final List resolvers) { - resolvers.add(authenticationArgumentResolver); resolvers.add(authenticatedMemberResolver); resolvers.add(authenticatedRefreshArgumentResolver); } diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthenticationPrincipal.java b/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthenticationPrincipal.java deleted file mode 100644 index b4d934eaf..000000000 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthenticationPrincipal.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.woowacourse.moamoa.auth.config; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Target(ElementType.PARAMETER) -@Retention(RetentionPolicy.RUNTIME) -public @interface AuthenticationPrincipal { -} diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java index 70ffe2204..e7334d5b0 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java @@ -1,7 +1,7 @@ package com.woowacourse.moamoa.auth.controller; +import com.woowacourse.moamoa.auth.config.AuthenticatedMember; import com.woowacourse.moamoa.auth.config.AuthenticatedRefresh; -import com.woowacourse.moamoa.auth.config.AuthenticationPrincipal; import com.woowacourse.moamoa.auth.service.AuthService; import com.woowacourse.moamoa.auth.service.response.AccessTokenResponse; import com.woowacourse.moamoa.auth.service.response.TokensResponse; @@ -40,8 +40,8 @@ public ResponseEntity refreshToken(@AuthenticatedRefresh Lo } @DeleteMapping("/api/auth/logout") - public ResponseEntity logout(@AuthenticationPrincipal Long githubId) { - authService.logout(githubId); + public ResponseEntity logout(@AuthenticatedMember Long memberId) { + authService.logout(memberId); return ResponseEntity.noContent().header("Set-Cookie", removeCookie().toString()).build(); } diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticationArgumentResolver.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticationArgumentResolver.java deleted file mode 100644 index 1e4472da9..000000000 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticationArgumentResolver.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.woowacourse.moamoa.auth.controller; - -import com.woowacourse.moamoa.auth.config.AuthenticationExtractor; -import com.woowacourse.moamoa.auth.config.AuthenticationPrincipal; -import com.woowacourse.moamoa.auth.infrastructure.TokenProvider; -import com.woowacourse.moamoa.common.exception.UnauthorizedException; -import javax.servlet.http.HttpServletRequest; -import lombok.RequiredArgsConstructor; -import org.springframework.core.MethodParameter; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.support.WebDataBinderFactory; -import org.springframework.web.context.request.NativeWebRequest; -import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.method.support.ModelAndViewContainer; - -@Component -@RequiredArgsConstructor -public class AuthenticationArgumentResolver implements HandlerMethodArgumentResolver { - - private final TokenProvider tokenProvider; - - @Override - public boolean supportsParameter(final MethodParameter parameter) { - return parameter.hasParameterAnnotation(AuthenticationPrincipal.class); - } - - @Override - public Object resolveArgument(final MethodParameter parameter, final ModelAndViewContainer mavContainer, - final NativeWebRequest webRequest, final WebDataBinderFactory binderFactory) { - final HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class); - final String token = AuthenticationExtractor.extract(request); - - if (token == null) { - throw new UnauthorizedException("인증 타입이 올바르지 않습니다."); - } - - return Long.valueOf(tokenProvider.getPayload(token)); - } -} diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java index 22082543e..b9d9676e1 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java @@ -9,7 +9,10 @@ import com.woowacourse.moamoa.auth.service.response.AccessTokenResponse; import com.woowacourse.moamoa.auth.service.response.TokensResponse; import com.woowacourse.moamoa.common.exception.UnauthorizedException; +import com.woowacourse.moamoa.member.domain.Member; +import com.woowacourse.moamoa.member.domain.repository.MemberRepository; import com.woowacourse.moamoa.member.service.MemberService; +import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -24,6 +27,7 @@ public class AuthService { private final TokenProvider tokenProvider; private final OAuthClient oAuthClient; private final TokenRepository tokenRepository; + private final MemberRepository memberRepository; @Transactional public TokensResponse createToken(final String code) { @@ -60,8 +64,10 @@ public AccessTokenResponse refreshToken(final Long githubId, final String refres } @Transactional - public void logout(final Long githubId) { - final Token token = tokenRepository.findByGithubId(githubId) + public void logout(final Long memberId) { + final Member member = memberRepository.findById(memberId) + .orElseThrow(MemberNotFoundException::new); + final Token token = tokenRepository.findByGithubId(member.getGithubId()) .orElseThrow(TokenNotFoundException::new); tokenRepository.delete(token); diff --git a/backend/src/test/java/com/woowacourse/moamoa/auth/controller/AuthenticationArgumentResolverTest.java b/backend/src/test/java/com/woowacourse/moamoa/auth/controller/AuthenticationArgumentResolverTest.java deleted file mode 100644 index 857f995f4..000000000 --- a/backend/src/test/java/com/woowacourse/moamoa/auth/controller/AuthenticationArgumentResolverTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.woowacourse.moamoa.auth.controller; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.BDDMockito.given; - -import com.woowacourse.moamoa.WebMVCTest; -import com.woowacourse.moamoa.common.exception.UnauthorizedException; -import java.util.Collections; -import java.util.List; -import javax.servlet.http.HttpServletRequest; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpHeaders; - -class AuthenticationArgumentResolverTest extends WebMVCTest { - - @Autowired - private AuthenticationArgumentResolver authenticationArgumentResolver; - - @DisplayName("Authorization 인증 타입이 Bearer이 아닌 경우 예외가 발생한다.") - @Test - void validAuthorizationTypeIsBearer() { - String wrongBearerToken = "Basic " + tokenProvider.createToken(1L); - - given(nativeWebRequest.getNativeRequest(HttpServletRequest.class)) - .willReturn(httpServletRequest); - - given(httpServletRequest.getHeaders(HttpHeaders.AUTHORIZATION)) - .willReturn(Collections.enumeration(List.of(wrongBearerToken))); - - assertThatThrownBy( - () -> authenticationArgumentResolver.resolveArgument(null, null, nativeWebRequest, null)) - .isInstanceOf(UnauthorizedException.class) - .hasMessageContaining("인증 타입이 올바르지 않습니다."); - } - - @DisplayName("Authorization 인증 타입이 Bearer인 경우 payload를 반환한다.") - @Test - void getToken() { - String wrongBearerToken = "Bearer " + tokenProvider.createToken(1L).getAccessToken(); - - given(nativeWebRequest.getNativeRequest(HttpServletRequest.class)) - .willReturn(httpServletRequest); - - given(httpServletRequest.getHeaders(HttpHeaders.AUTHORIZATION)) - .willReturn(Collections.enumeration(List.of(wrongBearerToken))); - - assertThat(authenticationArgumentResolver.resolveArgument(null, null, nativeWebRequest, null)) - .isEqualTo(1L); - } -} diff --git a/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java b/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java index 13914777f..c9f3330f8 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java @@ -13,6 +13,7 @@ import com.woowacourse.moamoa.auth.service.response.TokensResponse; import com.woowacourse.moamoa.common.RepositoryTest; import com.woowacourse.moamoa.common.exception.UnauthorizedException; +import com.woowacourse.moamoa.member.domain.Member; import com.woowacourse.moamoa.member.domain.repository.MemberRepository; import com.woowacourse.moamoa.member.query.MemberDao; import com.woowacourse.moamoa.member.service.MemberService; @@ -48,7 +49,7 @@ void setUp() { memberService = new MemberService(memberRepository, memberDao); tokenProvider = Mockito.mock(TokenProvider.class); oAuthClient = Mockito.mock(OAuthClient.class); - authService = new AuthService(memberService, tokenProvider, oAuthClient, tokenRepository); + authService = new AuthService(memberService, tokenProvider, oAuthClient, tokenRepository, memberRepository); Mockito.when(oAuthClient.getAccessToken("authorization-code")).thenReturn("access-token"); Mockito.when(oAuthClient.getProfile("access-token")) @@ -100,9 +101,10 @@ void recreationAccessToken() { @Test void logout() { authService.createToken("authorization-code"); + final Member member = memberRepository.findByGithubId(1L).orElseThrow(); final Token token = tokenRepository.findByGithubId(1L).get(); - authService.logout(token.getGithubId()); + authService.logout(member.getId()); final Optional foundToken = tokenRepository.findByGithubId(token.getGithubId()); From 4bb0cbff58aac16dda468af7c5bbe925eae74e6f Mon Sep 17 00:00:00 2001 From: Donggyu Date: Tue, 13 Sep 2022 10:21:59 +0900 Subject: [PATCH 08/19] =?UTF-8?q?refactor:=20=EC=95=A1=EC=84=B8=EC=8A=A4?= =?UTF-8?q?=20=ED=86=A0=ED=81=B0=20=EC=9E=AC=EB=B0=9C=EA=B8=89=20memberId?= =?UTF-8?q?=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...icatedMember.java => AuthenticatedMemberId.java} | 2 +- .../moamoa/auth/controller/AuthController.java | 4 ++-- .../controller/AuthenticatedMemberResolver.java | 11 +++-------- .../AuthenticatedRefreshArgumentResolver.java | 8 +++++++- .../auth/infrastructure/JwtTokenProvider.java | 4 ++-- .../moamoa/auth/infrastructure/TokenProvider.java | 2 +- .../moamoa/auth/service/AuthService.java | 13 ++++++++----- .../moamoa/member/controller/MemberController.java | 4 ++-- .../controller/ReferenceRoomController.java | 8 ++++---- .../SearchingReferenceRoomController.java | 4 ++-- .../moamoa/review/controller/ReviewController.java | 8 ++++---- .../moamoa/study/controller/MyStudyController.java | 6 +++--- .../moamoa/study/controller/StudyController.java | 6 +++--- .../controller/StudyParticipantController.java | 6 +++--- .../studyroom/controller/ArticleController.java | 12 ++++++------ .../moamoa/auth/service/AuthServiceTest.java | 6 ++++-- 16 files changed, 55 insertions(+), 49 deletions(-) rename backend/src/main/java/com/woowacourse/moamoa/auth/config/{AuthenticatedMember.java => AuthenticatedMemberId.java} (86%) diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthenticatedMember.java b/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthenticatedMemberId.java similarity index 86% rename from backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthenticatedMember.java rename to backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthenticatedMemberId.java index 8eac7f120..7b4792513 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthenticatedMember.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthenticatedMemberId.java @@ -7,5 +7,5 @@ @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) -public @interface AuthenticatedMember { +public @interface AuthenticatedMemberId { } diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java index e7334d5b0..039e31661 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.auth.controller; -import com.woowacourse.moamoa.auth.config.AuthenticatedMember; +import com.woowacourse.moamoa.auth.config.AuthenticatedMemberId; import com.woowacourse.moamoa.auth.config.AuthenticatedRefresh; import com.woowacourse.moamoa.auth.service.AuthService; import com.woowacourse.moamoa.auth.service.response.AccessTokenResponse; @@ -40,7 +40,7 @@ public ResponseEntity refreshToken(@AuthenticatedRefresh Lo } @DeleteMapping("/api/auth/logout") - public ResponseEntity logout(@AuthenticatedMember Long memberId) { + public ResponseEntity logout(@AuthenticatedMemberId Long memberId) { authService.logout(memberId); return ResponseEntity.noContent().header("Set-Cookie", removeCookie().toString()).build(); diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedMemberResolver.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedMemberResolver.java index 805ae1322..a0ef6b30f 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedMemberResolver.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedMemberResolver.java @@ -1,12 +1,10 @@ package com.woowacourse.moamoa.auth.controller; -import com.woowacourse.moamoa.auth.config.AuthenticatedMember; +import com.woowacourse.moamoa.auth.config.AuthenticatedMemberId; import com.woowacourse.moamoa.auth.config.AuthenticationExtractor; import com.woowacourse.moamoa.auth.infrastructure.TokenProvider; import com.woowacourse.moamoa.common.exception.UnauthorizedException; -import com.woowacourse.moamoa.member.domain.Member; import com.woowacourse.moamoa.member.domain.repository.MemberRepository; -import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import javax.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.core.MethodParameter; @@ -25,7 +23,7 @@ public class AuthenticatedMemberResolver implements HandlerMethodArgumentResolve @Override public boolean supportsParameter(final MethodParameter parameter) { - return parameter.hasParameterAnnotation(AuthenticatedMember.class); + return parameter.hasParameterAnnotation(AuthenticatedMemberId.class); } @Override @@ -38,9 +36,6 @@ public Object resolveArgument(final MethodParameter parameter, final ModelAndVie throw new UnauthorizedException("인증 타입이 올바르지 않습니다."); } - final Long githubId = Long.valueOf(tokenProvider.getPayload(token)); - - final Member member = memberRepository.findByGithubId(githubId).orElseThrow(MemberNotFoundException::new); - return member.getId(); + return Long.valueOf(tokenProvider.getPayload(token)); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java index c7df9c6c8..58d79f54f 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java @@ -4,6 +4,9 @@ import com.woowacourse.moamoa.auth.config.AuthenticationExtractor; import com.woowacourse.moamoa.auth.infrastructure.TokenProvider; import com.woowacourse.moamoa.common.exception.UnauthorizedException; +import com.woowacourse.moamoa.member.domain.Member; +import com.woowacourse.moamoa.member.domain.repository.MemberRepository; +import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import javax.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.core.MethodParameter; @@ -18,6 +21,7 @@ public class AuthenticatedRefreshArgumentResolver implements HandlerMethodArgumentResolver { private final TokenProvider tokenProvider; + private final MemberRepository memberRepository; @Override public boolean supportsParameter(final MethodParameter parameter) { @@ -34,6 +38,8 @@ public Object resolveArgument(final MethodParameter parameter, final ModelAndVie throw new UnauthorizedException("인증 타입이 올바르지 않습니다."); } - return Long.valueOf(tokenProvider.getPayloadWithExpiredToken(token)); + final Long memberId = Long.valueOf(tokenProvider.getPayloadWithExpiredToken(token)); + final Member member = memberRepository.findById(memberId).orElseThrow(MemberNotFoundException::new); + return member.getGithubId(); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/JwtTokenProvider.java b/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/JwtTokenProvider.java index 468d0a062..3f96f0e37 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/JwtTokenProvider.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/JwtTokenProvider.java @@ -93,7 +93,7 @@ public boolean validateToken(final String token) { } @Override - public String recreationAccessToken(final Long githubId, final String refreshToken) { + public String recreationAccessToken(final Long memberId, final String refreshToken) { Jws claims = Jwts.parserBuilder() .setSigningKey(key) .build() @@ -102,7 +102,7 @@ public String recreationAccessToken(final Long githubId, final String refreshTok Date tokenExpirationDate = claims.getBody().getExpiration(); validateTokenExpiration(tokenExpirationDate); - return createAccessToken(githubId); + return createAccessToken(memberId); } private void validateTokenExpiration(Date tokenExpirationDate) { diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/TokenProvider.java b/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/TokenProvider.java index 540ccde7c..5757450eb 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/TokenProvider.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/TokenProvider.java @@ -12,7 +12,7 @@ public interface TokenProvider { boolean validateToken(final String token); - String recreationAccessToken(final Long githubId, final String refreshToken); + String recreationAccessToken(final Long memberId, final String refreshToken); long getValidityInMilliseconds(); } diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java index b9d9676e1..8a2e56e83 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java @@ -35,17 +35,18 @@ public TokensResponse createToken(final String code) { final GithubProfileResponse githubProfileResponse = oAuthClient.getProfile(accessToken); memberService.saveOrUpdate(githubProfileResponse.toMember()); - final Long githubId = githubProfileResponse.getGithubId(); - final Optional token = tokenRepository.findByGithubId(githubId); + final Member member = memberRepository.findByGithubId(githubProfileResponse.getGithubId()) + .orElseThrow(); - final TokensResponse tokenResponse = tokenProvider.createToken(githubProfileResponse.getGithubId()); + final Optional token = tokenRepository.findByGithubId(member.getGithubId()); + final TokensResponse tokenResponse = tokenProvider.createToken(member.getId()); if (token.isPresent()) { token.get().updateRefreshToken(tokenResponse.getRefreshToken()); return tokenResponse; } - tokenRepository.save(new Token(githubProfileResponse.getGithubId(), tokenResponse.getRefreshToken())); + tokenRepository.save(new Token(member.getGithubId(), tokenResponse.getRefreshToken())); return tokenResponse; } @@ -58,7 +59,9 @@ public AccessTokenResponse refreshToken(final Long githubId, final String refres throw new UnauthorizedException("유효하지 않은 토큰입니다."); } - String accessToken = tokenProvider.recreationAccessToken(githubId, refreshToken); + final Member member = memberRepository.findByGithubId(githubId).orElseThrow(MemberNotFoundException::new); + + String accessToken = tokenProvider.recreationAccessToken(member.getId(), refreshToken); return new AccessTokenResponse(accessToken, tokenProvider.getValidityInMilliseconds()); } diff --git a/backend/src/main/java/com/woowacourse/moamoa/member/controller/MemberController.java b/backend/src/main/java/com/woowacourse/moamoa/member/controller/MemberController.java index 836595632..a30d60ca9 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/member/controller/MemberController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/member/controller/MemberController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.member.controller; -import com.woowacourse.moamoa.auth.config.AuthenticatedMember; +import com.woowacourse.moamoa.auth.config.AuthenticatedMemberId; import com.woowacourse.moamoa.member.service.MemberService; import com.woowacourse.moamoa.member.service.response.MemberResponse; import lombok.RequiredArgsConstructor; @@ -16,7 +16,7 @@ public class MemberController { @GetMapping("/api/members/me") public ResponseEntity getCurrentMember( - @AuthenticatedMember Long memberId + @AuthenticatedMemberId Long memberId ) { MemberResponse response = memberService.getByMemberId(memberId); return ResponseEntity.ok().body(response); diff --git a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomController.java b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomController.java index 83e55efd1..ff6ef1d25 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/ReferenceRoomController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.referenceroom.controller; -import com.woowacourse.moamoa.auth.config.AuthenticatedMember; +import com.woowacourse.moamoa.auth.config.AuthenticatedMemberId; import com.woowacourse.moamoa.referenceroom.service.ReferenceRoomService; import com.woowacourse.moamoa.referenceroom.service.request.CreatingLinkRequest; import com.woowacourse.moamoa.referenceroom.service.request.EditingLinkRequest; @@ -25,7 +25,7 @@ public class ReferenceRoomController { @PostMapping public ResponseEntity createLink( - @AuthenticatedMember final Long memberId, + @AuthenticatedMemberId final Long memberId, @PathVariable("study-id") final Long studyId, @Valid @RequestBody final CreatingLinkRequest creatingLinkRequest ) { @@ -35,7 +35,7 @@ public ResponseEntity createLink( @PutMapping("/{link-id}") public ResponseEntity updateLink( - @AuthenticatedMember final Long memberId, + @AuthenticatedMemberId final Long memberId, @PathVariable("study-id") final Long studyId, @PathVariable("link-id") final Long linkId, @Valid @RequestBody final EditingLinkRequest editingLinkRequest @@ -46,7 +46,7 @@ public ResponseEntity updateLink( @DeleteMapping("/{link-id}") public ResponseEntity deleteLink( - @AuthenticatedMember final Long memberId, + @AuthenticatedMemberId final Long memberId, @PathVariable("study-id") final Long studyId, @PathVariable("link-id") final Long linkId ) { diff --git a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomController.java b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomController.java index a5523bed6..465ea730c 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.referenceroom.controller; -import com.woowacourse.moamoa.auth.config.AuthenticatedMember; +import com.woowacourse.moamoa.auth.config.AuthenticatedMemberId; import com.woowacourse.moamoa.referenceroom.service.SearchingReferenceRoomService; import com.woowacourse.moamoa.referenceroom.service.response.LinksResponse; import lombok.RequiredArgsConstructor; @@ -21,7 +21,7 @@ public class SearchingReferenceRoomController { @GetMapping public ResponseEntity getLinks( - @AuthenticatedMember final Long memberId, + @AuthenticatedMemberId final Long memberId, @PathVariable("study-id") final Long studyId, @PageableDefault(size = 9) final Pageable pageable ) { diff --git a/backend/src/main/java/com/woowacourse/moamoa/review/controller/ReviewController.java b/backend/src/main/java/com/woowacourse/moamoa/review/controller/ReviewController.java index 1f0611f5b..0d59993c2 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/review/controller/ReviewController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/review/controller/ReviewController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.review.controller; -import com.woowacourse.moamoa.auth.config.AuthenticatedMember; +import com.woowacourse.moamoa.auth.config.AuthenticatedMemberId; import com.woowacourse.moamoa.review.service.ReviewService; import com.woowacourse.moamoa.review.service.request.EditingReviewRequest; import com.woowacourse.moamoa.review.service.request.WriteReviewRequest; @@ -25,7 +25,7 @@ public class ReviewController { @PostMapping public ResponseEntity writeReview( - @AuthenticatedMember final Long memberId, + @AuthenticatedMemberId final Long memberId, @PathVariable(name = "study-id") final Long studyId, @Valid @RequestBody final WriteReviewRequest writeReviewRequest ) { @@ -35,7 +35,7 @@ public ResponseEntity writeReview( @PutMapping("/{review-id}") public ResponseEntity updateReview( - @AuthenticatedMember final Long memberId, + @AuthenticatedMemberId final Long memberId, @PathVariable(name = "review-id") final Long reviewId, @Valid @RequestBody final EditingReviewRequest editingReviewRequest ) { @@ -45,7 +45,7 @@ public ResponseEntity updateReview( @DeleteMapping("/{review-id}") public ResponseEntity deleteReview( - @AuthenticatedMember final Long memberId, + @AuthenticatedMemberId final Long memberId, @PathVariable(name = "review-id") final Long reviewId ) { reviewService.deleteReview(memberId, reviewId); diff --git a/backend/src/main/java/com/woowacourse/moamoa/study/controller/MyStudyController.java b/backend/src/main/java/com/woowacourse/moamoa/study/controller/MyStudyController.java index ae48b4aeb..f6207b899 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/study/controller/MyStudyController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/study/controller/MyStudyController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.study.controller; -import com.woowacourse.moamoa.auth.config.AuthenticatedMember; +import com.woowacourse.moamoa.auth.config.AuthenticatedMemberId; import com.woowacourse.moamoa.study.service.MyStudyService; import com.woowacourse.moamoa.study.service.response.MyRoleResponse; import com.woowacourse.moamoa.study.service.response.MyStudiesResponse; @@ -17,14 +17,14 @@ public class MyStudyController { private final MyStudyService myStudyService; @GetMapping("/api/my/studies") - public ResponseEntity getMyStudies(@AuthenticatedMember final Long memberId) { + public ResponseEntity getMyStudies(@AuthenticatedMemberId final Long memberId) { final MyStudiesResponse myStudiesResponse = myStudyService.getStudies(memberId); return ResponseEntity.ok().body(myStudiesResponse); } @GetMapping("/api/members/me/role") public ResponseEntity getMyRoleInStudy( - @AuthenticatedMember final Long memberId, @RequestParam(name = "study-id") final Long studyId + @AuthenticatedMemberId final Long memberId, @RequestParam(name = "study-id") final Long studyId ) { return ResponseEntity.ok().body(myStudyService.findMyRoleInStudy(memberId, studyId)); } diff --git a/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyController.java b/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyController.java index 95d68c41e..0183043d9 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.study.controller; -import com.woowacourse.moamoa.auth.config.AuthenticatedMember; +import com.woowacourse.moamoa.auth.config.AuthenticatedMemberId; import com.woowacourse.moamoa.study.domain.Study; import com.woowacourse.moamoa.study.service.StudyService; import com.woowacourse.moamoa.study.service.request.StudyRequest; @@ -24,7 +24,7 @@ public class StudyController { @PostMapping public ResponseEntity createStudy( - @AuthenticatedMember final Long memberId, + @AuthenticatedMemberId final Long memberId, @Valid @RequestBody(required = false) final StudyRequest studyRequest ) { final Study study = studyService.createStudy(memberId, studyRequest); @@ -33,7 +33,7 @@ public ResponseEntity createStudy( @PutMapping("/{study-id}") public ResponseEntity updateStudy( - @AuthenticatedMember final Long memberId, + @AuthenticatedMemberId final Long memberId, @PathVariable("study-id") final Long studyId, @Valid @RequestBody(required = false) final StudyRequest request ) { diff --git a/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyParticipantController.java b/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyParticipantController.java index 83140f511..e6008f16d 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyParticipantController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/study/controller/StudyParticipantController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.study.controller; -import com.woowacourse.moamoa.auth.config.AuthenticatedMember; +import com.woowacourse.moamoa.auth.config.AuthenticatedMemberId; import com.woowacourse.moamoa.study.service.StudyParticipantService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -19,7 +19,7 @@ public class StudyParticipantController { @PostMapping public ResponseEntity participateStudy( - @AuthenticatedMember final Long memberId, @PathVariable("study-id") final Long studyId + @AuthenticatedMemberId final Long memberId, @PathVariable("study-id") final Long studyId ) { studyParticipantService.participateStudy(memberId, studyId); return ResponseEntity.noContent().build(); @@ -27,7 +27,7 @@ public ResponseEntity participateStudy( @DeleteMapping public ResponseEntity leaveStudy( - @AuthenticatedMember final Long memberId, @PathVariable("study-id") final Long studyId + @AuthenticatedMemberId final Long memberId, @PathVariable("study-id") final Long studyId ) { studyParticipantService.leaveStudy(memberId, studyId); return ResponseEntity.noContent().build(); diff --git a/backend/src/main/java/com/woowacourse/moamoa/studyroom/controller/ArticleController.java b/backend/src/main/java/com/woowacourse/moamoa/studyroom/controller/ArticleController.java index 435b4113b..db3fb23cd 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/studyroom/controller/ArticleController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/studyroom/controller/ArticleController.java @@ -1,6 +1,6 @@ package com.woowacourse.moamoa.studyroom.controller; -import com.woowacourse.moamoa.auth.config.AuthenticatedMember; +import com.woowacourse.moamoa.auth.config.AuthenticatedMemberId; import com.woowacourse.moamoa.studyroom.domain.Article; import com.woowacourse.moamoa.studyroom.domain.ArticleType; import com.woowacourse.moamoa.studyroom.service.ArticleService; @@ -33,7 +33,7 @@ public ArticleController(final ArticleService articleService) { } @PostMapping - public ResponseEntity createArticle(@AuthenticatedMember final Long id, + public ResponseEntity createArticle(@AuthenticatedMemberId final Long id, @PathVariable("study-id") final Long studyId, @PathVariable("article-type") final ArticleType type, @Valid @RequestBody final ArticleRequest request @@ -44,7 +44,7 @@ public ResponseEntity createArticle(@AuthenticatedMember final Long id, } @GetMapping("/{article-id}") - public ResponseEntity getArticle(@AuthenticatedMember final Long id, + public ResponseEntity getArticle(@AuthenticatedMemberId final Long id, @PathVariable("study-id") final Long studyId, @PathVariable("article-type") final ArticleType articleType, @PathVariable("article-id") final Long articleId @@ -54,7 +54,7 @@ public ResponseEntity getArticle(@AuthenticatedMember final Lon } @DeleteMapping("{article-id}") - public ResponseEntity deleteArticle(@AuthenticatedMember final Long id, + public ResponseEntity deleteArticle(@AuthenticatedMemberId final Long id, @PathVariable("study-id") final Long studyId, @PathVariable("article-id") final Long articleId, @PathVariable("article-type") final ArticleType type @@ -64,7 +64,7 @@ public ResponseEntity deleteArticle(@AuthenticatedMember final Long id, } @GetMapping - public ResponseEntity getArticles(@AuthenticatedMember final Long id, + public ResponseEntity getArticles(@AuthenticatedMemberId final Long id, @PathVariable("study-id") final Long studyId, @PathVariable("article-type") final ArticleType type, @PageableDefault final Pageable pageable @@ -74,7 +74,7 @@ public ResponseEntity getArticles(@AuthenticatedMember } @PutMapping("/{article-id}") - public ResponseEntity updateArticle(@AuthenticatedMember final Long id, + public ResponseEntity updateArticle(@AuthenticatedMemberId final Long id, @PathVariable("study-id") final Long studyId, @PathVariable("article-id") final Long articleId, @PathVariable("article-type") final ArticleType type, diff --git a/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java b/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java index c9f3330f8..38c666610 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java @@ -3,6 +3,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import com.woowacourse.moamoa.auth.domain.Token; import com.woowacourse.moamoa.auth.domain.repository.TokenRepository; @@ -54,9 +56,9 @@ void setUp() { Mockito.when(oAuthClient.getAccessToken("authorization-code")).thenReturn("access-token"); Mockito.when(oAuthClient.getProfile("access-token")) .thenReturn(new GithubProfileResponse(1L, "dwoo", "imageUrl", "profileUrl")); - Mockito.when(tokenProvider.createToken(1L)) + Mockito.when(tokenProvider.createToken(any())) .thenReturn(new TokensResponse("accessToken", "refreshToken")); - Mockito.when(tokenProvider.recreationAccessToken(1L, "refreshToken")) + Mockito.when(tokenProvider.recreationAccessToken(any(), eq("refreshToken"))) .thenReturn("recreationAccessToken"); } From 6452b4586e5484bb3b53b68b03492f1035626d0a Mon Sep 17 00:00:00 2001 From: Donggyu Date: Tue, 13 Sep 2022 13:53:04 +0900 Subject: [PATCH 09/19] =?UTF-8?q?refactor:=20token=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=20memberId=20=EA=B0=80=EC=A7=80=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/controller/AuthController.java | 4 ++-- .../AuthenticatedMemberResolver.java | 2 -- .../AuthenticatedRefreshArgumentResolver.java | 6 +----- .../woowacourse/moamoa/auth/domain/Token.java | 6 +++--- .../domain/repository/TokenRepository.java | 2 +- .../auth/infrastructure/JwtTokenProvider.java | 4 ++-- .../moamoa/auth/service/AuthService.java | 19 ++++++------------- .../test/auth/AuthAcceptanceTest.java | 10 ++++++++-- .../moamoa/auth/service/AuthServiceTest.java | 17 ++++++++++------- backend/src/test/resources/schema.sql | 2 +- 10 files changed, 34 insertions(+), 38 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java index 039e31661..58673c870 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthController.java @@ -35,8 +35,8 @@ public ResponseEntity login(@RequestParam final String code } @GetMapping("/api/auth/refresh") - public ResponseEntity refreshToken(@AuthenticatedRefresh Long githubId, @CookieValue String refreshToken) { - return ResponseEntity.ok().body(authService.refreshToken(githubId, refreshToken)); + public ResponseEntity refreshToken(@AuthenticatedRefresh Long memberId, @CookieValue String refreshToken) { + return ResponseEntity.ok().body(authService.refreshToken(memberId, refreshToken)); } @DeleteMapping("/api/auth/logout") diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedMemberResolver.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedMemberResolver.java index a0ef6b30f..ccd3923d9 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedMemberResolver.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedMemberResolver.java @@ -4,7 +4,6 @@ import com.woowacourse.moamoa.auth.config.AuthenticationExtractor; import com.woowacourse.moamoa.auth.infrastructure.TokenProvider; import com.woowacourse.moamoa.common.exception.UnauthorizedException; -import com.woowacourse.moamoa.member.domain.repository.MemberRepository; import javax.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.core.MethodParameter; @@ -18,7 +17,6 @@ @RequiredArgsConstructor public class AuthenticatedMemberResolver implements HandlerMethodArgumentResolver { - private final MemberRepository memberRepository; private final TokenProvider tokenProvider; @Override diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java index 58d79f54f..f26b565a7 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java @@ -4,9 +4,7 @@ import com.woowacourse.moamoa.auth.config.AuthenticationExtractor; import com.woowacourse.moamoa.auth.infrastructure.TokenProvider; import com.woowacourse.moamoa.common.exception.UnauthorizedException; -import com.woowacourse.moamoa.member.domain.Member; import com.woowacourse.moamoa.member.domain.repository.MemberRepository; -import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import javax.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.core.MethodParameter; @@ -38,8 +36,6 @@ public Object resolveArgument(final MethodParameter parameter, final ModelAndVie throw new UnauthorizedException("인증 타입이 올바르지 않습니다."); } - final Long memberId = Long.valueOf(tokenProvider.getPayloadWithExpiredToken(token)); - final Member member = memberRepository.findById(memberId).orElseThrow(MemberNotFoundException::new); - return member.getGithubId(); + return Long.valueOf(tokenProvider.getPayloadWithExpiredToken(token)); } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/domain/Token.java b/backend/src/main/java/com/woowacourse/moamoa/auth/domain/Token.java index 33760f67a..86e63e87a 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/domain/Token.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/domain/Token.java @@ -22,12 +22,12 @@ public class Token { private Long id; @Column(nullable = false) - private Long githubId; + private Long memberId; private String refreshToken; - public Token(final Long githubId, final String refreshToken) { - this(null, githubId, refreshToken); + public Token(final Long memberId, final String refreshToken) { + this(null, memberId, refreshToken); } public void updateRefreshToken(final String refreshToken) { diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/domain/repository/TokenRepository.java b/backend/src/main/java/com/woowacourse/moamoa/auth/domain/repository/TokenRepository.java index c5c3fc487..658d55be7 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/domain/repository/TokenRepository.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/domain/repository/TokenRepository.java @@ -6,5 +6,5 @@ public interface TokenRepository extends JpaRepository { - Optional findByGithubId(Long githubId); + Optional findByMemberId(Long memberId); } diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/JwtTokenProvider.java b/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/JwtTokenProvider.java index 3f96f0e37..c1f768321 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/JwtTokenProvider.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/infrastructure/JwtTokenProvider.java @@ -111,11 +111,11 @@ private void validateTokenExpiration(Date tokenExpirationDate) { } } - private String createAccessToken(final Long githubId) { + private String createAccessToken(final Long memberId) { final Date now = new Date(); return Jwts.builder() - .setSubject(Long.toString(githubId)) + .setSubject(Long.toString(memberId)) .setIssuedAt(now) .setExpiration(new Date(now.getTime() + validityInMilliseconds)) .signWith(key, SignatureAlgorithm.HS256) diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java index 8a2e56e83..65152645f 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java @@ -12,7 +12,6 @@ import com.woowacourse.moamoa.member.domain.Member; import com.woowacourse.moamoa.member.domain.repository.MemberRepository; import com.woowacourse.moamoa.member.service.MemberService; -import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -34,11 +33,10 @@ public TokensResponse createToken(final String code) { final String accessToken = oAuthClient.getAccessToken(code); final GithubProfileResponse githubProfileResponse = oAuthClient.getProfile(accessToken); memberService.saveOrUpdate(githubProfileResponse.toMember()); - final Member member = memberRepository.findByGithubId(githubProfileResponse.getGithubId()) .orElseThrow(); - final Optional token = tokenRepository.findByGithubId(member.getGithubId()); + final Optional token = tokenRepository.findByMemberId(member.getId()); final TokensResponse tokenResponse = tokenProvider.createToken(member.getId()); if (token.isPresent()) { @@ -46,31 +44,26 @@ public TokensResponse createToken(final String code) { return tokenResponse; } - tokenRepository.save(new Token(member.getGithubId(), tokenResponse.getRefreshToken())); + tokenRepository.save(new Token(member.getId(), tokenResponse.getRefreshToken())); return tokenResponse; } - public AccessTokenResponse refreshToken(final Long githubId, final String refreshToken) { - final Token token = tokenRepository.findByGithubId(githubId) + public AccessTokenResponse refreshToken(final Long memberId, final String refreshToken) { + final Token token = tokenRepository.findByMemberId(memberId) .orElseThrow(TokenNotFoundException::new); if (!token.getRefreshToken().equals(refreshToken)) { throw new UnauthorizedException("유효하지 않은 토큰입니다."); } - final Member member = memberRepository.findByGithubId(githubId).orElseThrow(MemberNotFoundException::new); - - String accessToken = tokenProvider.recreationAccessToken(member.getId(), refreshToken); - + String accessToken = tokenProvider.recreationAccessToken(memberId, refreshToken); return new AccessTokenResponse(accessToken, tokenProvider.getValidityInMilliseconds()); } @Transactional public void logout(final Long memberId) { - final Member member = memberRepository.findById(memberId) - .orElseThrow(MemberNotFoundException::new); - final Token token = tokenRepository.findByGithubId(member.getGithubId()) + final Token token = tokenRepository.findByMemberId(memberId) .orElseThrow(TokenNotFoundException::new); tokenRepository.delete(token); diff --git a/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java b/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java index 25909c47a..b49fd6624 100644 --- a/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java +++ b/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java @@ -20,6 +20,8 @@ import com.woowacourse.moamoa.auth.domain.Token; import com.woowacourse.moamoa.auth.domain.repository.TokenRepository; import com.woowacourse.moamoa.auth.service.oauthclient.response.GithubProfileResponse; +import com.woowacourse.moamoa.member.domain.Member; +import com.woowacourse.moamoa.member.domain.repository.MemberRepository; import io.restassured.RestAssured; import java.util.Map; import org.junit.jupiter.api.Assertions; @@ -33,6 +35,9 @@ class AuthAcceptanceTest extends AcceptanceTest { @Autowired private TokenRepository tokenRepository; + @Autowired + private MemberRepository memberRepository; + @DisplayName("Authorization code를 받아서 token을 발급한다.") @Test void getJwtToken() throws JsonProcessingException { @@ -64,7 +69,8 @@ void getJwtToken() throws JsonProcessingException { @Test void refreshToken() { final String token = getBearerTokenBySignInOrUp(new GithubProfileResponse(4L, "verus", "https://image", "github.com")); - final Token foundToken = tokenRepository.findByGithubId(4L).get(); + final Member member = memberRepository.findByGithubId(4L).orElseThrow(); + final Token foundToken = tokenRepository.findByMemberId(member.getId()).orElseThrow(); RestAssured.given(spec).log().all() .filter(document("auth/refresh", @@ -83,7 +89,7 @@ void refreshToken() { @Test void logout() { final String token = getBearerTokenBySignInOrUp(new GithubProfileResponse(4L, "verus", "https://image", "github.com")); - final Token foundToken = tokenRepository.findByGithubId(4L).get(); + final Token foundToken = tokenRepository.findByMemberId(4L).get(); RestAssured.given(spec).log().all() .filter(document("auth/logout", diff --git a/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java b/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java index 38c666610..6f9031ec9 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java @@ -66,7 +66,8 @@ void setUp() { @Test void saveRefreshToken() { authService.createToken("authorization-code"); - final Token token = tokenRepository.findByGithubId(1L).get(); + final Member member = memberRepository.findByGithubId(1L).orElseThrow(); + final Token token = tokenRepository.findByMemberId(member.getId()).orElseThrow(); assertThat(token.getRefreshToken()).isEqualTo("refreshToken"); } @@ -75,10 +76,11 @@ void saveRefreshToken() { @Test void updateRefreshToken() { authService.createToken("authorization-code"); - final Token token = tokenRepository.findByGithubId(1L).get(); + final Member member = memberRepository.findByGithubId(1L).orElseThrow(); + final Token token = tokenRepository.findByMemberId(member.getId()).orElseThrow(); final String refreshToken = token.getRefreshToken(); - final AccessTokenResponse accessTokenResponse = authService.refreshToken(1L, refreshToken); + final AccessTokenResponse accessTokenResponse = authService.refreshToken(member.getId(), refreshToken); assertThat(refreshToken).isNotBlank(); assertThat(accessTokenResponse.getAccessToken()).isEqualTo("recreationAccessToken"); } @@ -94,9 +96,10 @@ void validateRefreshToken() { @Test void recreationAccessToken() { authService.createToken("authorization-code"); - final Token token = tokenRepository.findByGithubId(1L).get(); + final Member member = memberRepository.findByGithubId(1L).orElseThrow(); + final Token token = tokenRepository.findByMemberId(member.getId()).orElseThrow(); - assertDoesNotThrow(() -> authService.refreshToken(1L, token.getRefreshToken())); + assertDoesNotThrow(() -> authService.refreshToken(member.getId(), token.getRefreshToken())); } @DisplayName("로그아웃을 하면 Token 을 제거한다.") @@ -104,11 +107,11 @@ void recreationAccessToken() { void logout() { authService.createToken("authorization-code"); final Member member = memberRepository.findByGithubId(1L).orElseThrow(); - final Token token = tokenRepository.findByGithubId(1L).get(); + final Token token = tokenRepository.findByMemberId(member.getId()).orElseThrow(); authService.logout(member.getId()); - final Optional foundToken = tokenRepository.findByGithubId(token.getGithubId()); + final Optional foundToken = tokenRepository.findByMemberId(token.getMemberId()); assertThat(token).isNotNull(); assertThat(foundToken).isEmpty(); diff --git a/backend/src/test/resources/schema.sql b/backend/src/test/resources/schema.sql index 5d1780f24..ee79199b0 100644 --- a/backend/src/test/resources/schema.sql +++ b/backend/src/test/resources/schema.sql @@ -127,6 +127,6 @@ CREATE TABLE notice CREATE TABLE token ( id BIGINT PRIMARY KEY AUTO_INCREMENT, - github_id BIGINT NOT NULL UNIQUE, + member_id BIGINT NOT NULL UNIQUE, refresh_token MEDIUMTEXT ); From 965e9ee87a7f977afa9124847d1085abc26810da Mon Sep 17 00:00:00 2001 From: Donggyu Date: Tue, 13 Sep 2022 14:03:33 +0900 Subject: [PATCH 10/19] =?UTF-8?q?fix:=20Auth=20=EC=9D=B8=EC=88=98=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../woowacourse/acceptance/test/auth/AuthAcceptanceTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java b/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java index b49fd6624..778d0a106 100644 --- a/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java +++ b/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java @@ -89,7 +89,8 @@ void refreshToken() { @Test void logout() { final String token = getBearerTokenBySignInOrUp(new GithubProfileResponse(4L, "verus", "https://image", "github.com")); - final Token foundToken = tokenRepository.findByMemberId(4L).get(); + final Member member = memberRepository.findByGithubId(4L).orElseThrow(); + final Token foundToken = tokenRepository.findByMemberId(member.getId()).get(); RestAssured.given(spec).log().all() .filter(document("auth/logout", From 30c3413e41a66ba78130573ae682a6b725451f42 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Wed, 14 Sep 2022 16:08:50 +0900 Subject: [PATCH 11/19] =?UTF-8?q?feat:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=ED=95=84=EB=93=9C=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20=EB=B0=8F=20DB=20=EC=A1=B0=ED=9A=8C=20=EC=B5=9C?= =?UTF-8?q?=EC=86=8C=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AuthenticatedRefreshArgumentResolver.java | 2 -- .../moamoa/auth/service/AuthService.java | 13 ++++++------- .../review/service/response/ReviewResponse.java | 2 -- .../test/member/MemberAcceptanceTest.java | 2 +- .../member/controller/MemberControllerTest.java | 2 +- 5 files changed, 8 insertions(+), 13 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java index f26b565a7..c7df9c6c8 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/AuthenticatedRefreshArgumentResolver.java @@ -4,7 +4,6 @@ import com.woowacourse.moamoa.auth.config.AuthenticationExtractor; import com.woowacourse.moamoa.auth.infrastructure.TokenProvider; import com.woowacourse.moamoa.common.exception.UnauthorizedException; -import com.woowacourse.moamoa.member.domain.repository.MemberRepository; import javax.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.core.MethodParameter; @@ -19,7 +18,6 @@ public class AuthenticatedRefreshArgumentResolver implements HandlerMethodArgumentResolver { private final TokenProvider tokenProvider; - private final MemberRepository memberRepository; @Override public boolean supportsParameter(final MethodParameter parameter) { diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java index 65152645f..dce3709bf 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java @@ -9,9 +9,9 @@ import com.woowacourse.moamoa.auth.service.response.AccessTokenResponse; import com.woowacourse.moamoa.auth.service.response.TokensResponse; import com.woowacourse.moamoa.common.exception.UnauthorizedException; -import com.woowacourse.moamoa.member.domain.Member; import com.woowacourse.moamoa.member.domain.repository.MemberRepository; import com.woowacourse.moamoa.member.service.MemberService; +import com.woowacourse.moamoa.member.service.response.MemberResponse; import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -32,19 +32,18 @@ public class AuthService { public TokensResponse createToken(final String code) { final String accessToken = oAuthClient.getAccessToken(code); final GithubProfileResponse githubProfileResponse = oAuthClient.getProfile(accessToken); - memberService.saveOrUpdate(githubProfileResponse.toMember()); - final Member member = memberRepository.findByGithubId(githubProfileResponse.getGithubId()) - .orElseThrow(); + final MemberResponse memberResponse = memberService.saveOrUpdate(githubProfileResponse.toMember()); + final Long memberId = memberResponse.getId(); - final Optional token = tokenRepository.findByMemberId(member.getId()); - final TokensResponse tokenResponse = tokenProvider.createToken(member.getId()); + final Optional token = tokenRepository.findByMemberId(memberId); + final TokensResponse tokenResponse = tokenProvider.createToken(memberId); if (token.isPresent()) { token.get().updateRefreshToken(tokenResponse.getRefreshToken()); return tokenResponse; } - tokenRepository.save(new Token(member.getId(), tokenResponse.getRefreshToken())); + tokenRepository.save(new Token(memberId, tokenResponse.getRefreshToken())); return tokenResponse; } diff --git a/backend/src/main/java/com/woowacourse/moamoa/review/service/response/ReviewResponse.java b/backend/src/main/java/com/woowacourse/moamoa/review/service/response/ReviewResponse.java index 76129f932..3db6e666c 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/review/service/response/ReviewResponse.java +++ b/backend/src/main/java/com/woowacourse/moamoa/review/service/response/ReviewResponse.java @@ -1,7 +1,5 @@ package com.woowacourse.moamoa.review.service.response; -import com.woowacourse.moamoa.member.query.data.MemberData; -import com.woowacourse.moamoa.review.domain.Review; import com.woowacourse.moamoa.review.query.data.ReviewData; import java.time.LocalDate; import lombok.AccessLevel; diff --git a/backend/src/test/java/com/woowacourse/acceptance/test/member/MemberAcceptanceTest.java b/backend/src/test/java/com/woowacourse/acceptance/test/member/MemberAcceptanceTest.java index 5ad0db1e0..a6d298f43 100644 --- a/backend/src/test/java/com/woowacourse/acceptance/test/member/MemberAcceptanceTest.java +++ b/backend/src/test/java/com/woowacourse/acceptance/test/member/MemberAcceptanceTest.java @@ -32,7 +32,7 @@ void getCurrentMember() { .statusCode(HttpStatus.OK.value()) .extract().as(MemberResponse.class); - assertThat(memberResponse.getId()).isEqualTo(memberResponse.getId()); + assertThat(memberResponse.getId()).isNotNull(); assertThat(memberResponse.getUsername()).isEqualTo(베루스_이름); assertThat(memberResponse.getImageUrl()).isEqualTo(베루스_이미지_URL); assertThat(memberResponse.getProfileUrl()).isEqualTo(베루스_프로필_URL); diff --git a/backend/src/test/java/com/woowacourse/moamoa/member/controller/MemberControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/member/controller/MemberControllerTest.java index 33917e98a..63ad3c846 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/member/controller/MemberControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/member/controller/MemberControllerTest.java @@ -36,7 +36,7 @@ void getCurrentMember() { assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(response.getBody()).isNotNull(); - assertThat(response.getBody().getId()).isEqualTo(memberResponse.getId()); + assertThat(response.getBody().getId()).isNotNull(); assertThat(response.getBody().getUsername()).isEqualTo("verus"); assertThat(response.getBody().getProfileUrl()).isEqualTo("profile"); assertThat(response.getBody().getImageUrl()).isEqualTo("image"); From 9f57a82cfef7704dabefe47f6e3cd18491c1e93c Mon Sep 17 00:00:00 2001 From: Donggyu Date: Wed, 14 Sep 2022 16:20:27 +0900 Subject: [PATCH 12/19] =?UTF-8?q?refactor:=20orElseThrow=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=20=ED=83=80=EC=9E=85=20=EB=AA=85=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moamoa/auth/service/AuthService.java | 2 -- .../test/auth/AuthAcceptanceTest.java | 14 +++++++--- .../moamoa/auth/service/AuthServiceTest.java | 28 +++++++++++++------ 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java index dce3709bf..128908899 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java @@ -9,7 +9,6 @@ import com.woowacourse.moamoa.auth.service.response.AccessTokenResponse; import com.woowacourse.moamoa.auth.service.response.TokensResponse; import com.woowacourse.moamoa.common.exception.UnauthorizedException; -import com.woowacourse.moamoa.member.domain.repository.MemberRepository; import com.woowacourse.moamoa.member.service.MemberService; import com.woowacourse.moamoa.member.service.response.MemberResponse; import java.util.Optional; @@ -26,7 +25,6 @@ public class AuthService { private final TokenProvider tokenProvider; private final OAuthClient oAuthClient; private final TokenRepository tokenRepository; - private final MemberRepository memberRepository; @Transactional public TokensResponse createToken(final String code) { diff --git a/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java b/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java index 778d0a106..be25d045d 100644 --- a/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java +++ b/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java @@ -19,9 +19,11 @@ import com.woowacourse.acceptance.AcceptanceTest; import com.woowacourse.moamoa.auth.domain.Token; import com.woowacourse.moamoa.auth.domain.repository.TokenRepository; +import com.woowacourse.moamoa.auth.exception.TokenNotFoundException; import com.woowacourse.moamoa.auth.service.oauthclient.response.GithubProfileResponse; import com.woowacourse.moamoa.member.domain.Member; import com.woowacourse.moamoa.member.domain.repository.MemberRepository; +import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import io.restassured.RestAssured; import java.util.Map; import org.junit.jupiter.api.Assertions; @@ -69,8 +71,10 @@ void getJwtToken() throws JsonProcessingException { @Test void refreshToken() { final String token = getBearerTokenBySignInOrUp(new GithubProfileResponse(4L, "verus", "https://image", "github.com")); - final Member member = memberRepository.findByGithubId(4L).orElseThrow(); - final Token foundToken = tokenRepository.findByMemberId(member.getId()).orElseThrow(); + final Member member = memberRepository.findByGithubId(4L) + .orElseThrow(MemberNotFoundException::new); + final Token foundToken = tokenRepository.findByMemberId(member.getId()) + .orElseThrow(TokenNotFoundException::new); RestAssured.given(spec).log().all() .filter(document("auth/refresh", @@ -89,8 +93,10 @@ void refreshToken() { @Test void logout() { final String token = getBearerTokenBySignInOrUp(new GithubProfileResponse(4L, "verus", "https://image", "github.com")); - final Member member = memberRepository.findByGithubId(4L).orElseThrow(); - final Token foundToken = tokenRepository.findByMemberId(member.getId()).get(); + final Member member = memberRepository.findByGithubId(4L) + .orElseThrow(MemberNotFoundException::new); + final Token foundToken = tokenRepository.findByMemberId(member.getId()) + .orElseThrow(TokenNotFoundException::new); RestAssured.given(spec).log().all() .filter(document("auth/logout", diff --git a/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java b/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java index 6f9031ec9..9afa0718c 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java @@ -8,6 +8,7 @@ import com.woowacourse.moamoa.auth.domain.Token; import com.woowacourse.moamoa.auth.domain.repository.TokenRepository; +import com.woowacourse.moamoa.auth.exception.TokenNotFoundException; import com.woowacourse.moamoa.auth.infrastructure.TokenProvider; import com.woowacourse.moamoa.auth.service.oauthclient.OAuthClient; import com.woowacourse.moamoa.auth.service.oauthclient.response.GithubProfileResponse; @@ -19,6 +20,7 @@ import com.woowacourse.moamoa.member.domain.repository.MemberRepository; import com.woowacourse.moamoa.member.query.MemberDao; import com.woowacourse.moamoa.member.service.MemberService; +import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import java.util.Optional; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -51,7 +53,7 @@ void setUp() { memberService = new MemberService(memberRepository, memberDao); tokenProvider = Mockito.mock(TokenProvider.class); oAuthClient = Mockito.mock(OAuthClient.class); - authService = new AuthService(memberService, tokenProvider, oAuthClient, tokenRepository, memberRepository); + authService = new AuthService(memberService, tokenProvider, oAuthClient, tokenRepository); Mockito.when(oAuthClient.getAccessToken("authorization-code")).thenReturn("access-token"); Mockito.when(oAuthClient.getProfile("access-token")) @@ -66,8 +68,10 @@ void setUp() { @Test void saveRefreshToken() { authService.createToken("authorization-code"); - final Member member = memberRepository.findByGithubId(1L).orElseThrow(); - final Token token = tokenRepository.findByMemberId(member.getId()).orElseThrow(); + final Member member = memberRepository.findByGithubId(1L) + .orElseThrow(MemberNotFoundException::new); + final Token token = tokenRepository.findByMemberId(member.getId()) + .orElseThrow(TokenNotFoundException::new); assertThat(token.getRefreshToken()).isEqualTo("refreshToken"); } @@ -76,8 +80,10 @@ void saveRefreshToken() { @Test void updateRefreshToken() { authService.createToken("authorization-code"); - final Member member = memberRepository.findByGithubId(1L).orElseThrow(); - final Token token = tokenRepository.findByMemberId(member.getId()).orElseThrow(); + final Member member = memberRepository.findByGithubId(1L) + .orElseThrow(MemberNotFoundException::new); + final Token token = tokenRepository.findByMemberId(member.getId()) + .orElseThrow(TokenNotFoundException::new); final String refreshToken = token.getRefreshToken(); final AccessTokenResponse accessTokenResponse = authService.refreshToken(member.getId(), refreshToken); @@ -96,8 +102,10 @@ void validateRefreshToken() { @Test void recreationAccessToken() { authService.createToken("authorization-code"); - final Member member = memberRepository.findByGithubId(1L).orElseThrow(); - final Token token = tokenRepository.findByMemberId(member.getId()).orElseThrow(); + final Member member = memberRepository.findByGithubId(1L) + .orElseThrow(MemberNotFoundException::new); + final Token token = tokenRepository.findByMemberId(member.getId()) + .orElseThrow(TokenNotFoundException::new); assertDoesNotThrow(() -> authService.refreshToken(member.getId(), token.getRefreshToken())); } @@ -106,8 +114,10 @@ void recreationAccessToken() { @Test void logout() { authService.createToken("authorization-code"); - final Member member = memberRepository.findByGithubId(1L).orElseThrow(); - final Token token = tokenRepository.findByMemberId(member.getId()).orElseThrow(); + final Member member = memberRepository.findByGithubId(1L) + .orElseThrow(MemberNotFoundException::new); + final Token token = tokenRepository.findByMemberId(member.getId()) + .orElseThrow(TokenNotFoundException::new); authService.logout(member.getId()); From 0cd2733505e3e6af74a5f166cebd4002342ce72a Mon Sep 17 00:00:00 2001 From: Donggyu Date: Thu, 15 Sep 2022 07:46:53 +0900 Subject: [PATCH 13/19] =?UTF-8?q?test:=20orElseThrow=20->=20get=20?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/auth/AuthAcceptanceTest.java | 14 +++------- .../moamoa/auth/service/AuthServiceTest.java | 26 ++++++------------- .../study/controller/StudyControllerTest.java | 4 +-- 3 files changed, 14 insertions(+), 30 deletions(-) diff --git a/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java b/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java index be25d045d..85de909aa 100644 --- a/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java +++ b/backend/src/test/java/com/woowacourse/acceptance/test/auth/AuthAcceptanceTest.java @@ -19,11 +19,9 @@ import com.woowacourse.acceptance.AcceptanceTest; import com.woowacourse.moamoa.auth.domain.Token; import com.woowacourse.moamoa.auth.domain.repository.TokenRepository; -import com.woowacourse.moamoa.auth.exception.TokenNotFoundException; import com.woowacourse.moamoa.auth.service.oauthclient.response.GithubProfileResponse; import com.woowacourse.moamoa.member.domain.Member; import com.woowacourse.moamoa.member.domain.repository.MemberRepository; -import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import io.restassured.RestAssured; import java.util.Map; import org.junit.jupiter.api.Assertions; @@ -71,10 +69,8 @@ void getJwtToken() throws JsonProcessingException { @Test void refreshToken() { final String token = getBearerTokenBySignInOrUp(new GithubProfileResponse(4L, "verus", "https://image", "github.com")); - final Member member = memberRepository.findByGithubId(4L) - .orElseThrow(MemberNotFoundException::new); - final Token foundToken = tokenRepository.findByMemberId(member.getId()) - .orElseThrow(TokenNotFoundException::new); + final Member member = memberRepository.findByGithubId(4L).get(); + final Token foundToken = tokenRepository.findByMemberId(member.getId()).get(); RestAssured.given(spec).log().all() .filter(document("auth/refresh", @@ -93,10 +89,8 @@ void refreshToken() { @Test void logout() { final String token = getBearerTokenBySignInOrUp(new GithubProfileResponse(4L, "verus", "https://image", "github.com")); - final Member member = memberRepository.findByGithubId(4L) - .orElseThrow(MemberNotFoundException::new); - final Token foundToken = tokenRepository.findByMemberId(member.getId()) - .orElseThrow(TokenNotFoundException::new); + final Member member = memberRepository.findByGithubId(4L).get(); + final Token foundToken = tokenRepository.findByMemberId(member.getId()).get(); RestAssured.given(spec).log().all() .filter(document("auth/logout", diff --git a/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java b/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java index 9afa0718c..245bc79f2 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/auth/service/AuthServiceTest.java @@ -8,7 +8,6 @@ import com.woowacourse.moamoa.auth.domain.Token; import com.woowacourse.moamoa.auth.domain.repository.TokenRepository; -import com.woowacourse.moamoa.auth.exception.TokenNotFoundException; import com.woowacourse.moamoa.auth.infrastructure.TokenProvider; import com.woowacourse.moamoa.auth.service.oauthclient.OAuthClient; import com.woowacourse.moamoa.auth.service.oauthclient.response.GithubProfileResponse; @@ -20,7 +19,6 @@ import com.woowacourse.moamoa.member.domain.repository.MemberRepository; import com.woowacourse.moamoa.member.query.MemberDao; import com.woowacourse.moamoa.member.service.MemberService; -import com.woowacourse.moamoa.member.service.exception.MemberNotFoundException; import java.util.Optional; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -68,10 +66,8 @@ void setUp() { @Test void saveRefreshToken() { authService.createToken("authorization-code"); - final Member member = memberRepository.findByGithubId(1L) - .orElseThrow(MemberNotFoundException::new); - final Token token = tokenRepository.findByMemberId(member.getId()) - .orElseThrow(TokenNotFoundException::new); + final Member member = memberRepository.findByGithubId(1L).get(); + final Token token = tokenRepository.findByMemberId(member.getId()).get(); assertThat(token.getRefreshToken()).isEqualTo("refreshToken"); } @@ -80,10 +76,8 @@ void saveRefreshToken() { @Test void updateRefreshToken() { authService.createToken("authorization-code"); - final Member member = memberRepository.findByGithubId(1L) - .orElseThrow(MemberNotFoundException::new); - final Token token = tokenRepository.findByMemberId(member.getId()) - .orElseThrow(TokenNotFoundException::new); + final Member member = memberRepository.findByGithubId(1L).get(); + final Token token = tokenRepository.findByMemberId(member.getId()).get(); final String refreshToken = token.getRefreshToken(); final AccessTokenResponse accessTokenResponse = authService.refreshToken(member.getId(), refreshToken); @@ -102,10 +96,8 @@ void validateRefreshToken() { @Test void recreationAccessToken() { authService.createToken("authorization-code"); - final Member member = memberRepository.findByGithubId(1L) - .orElseThrow(MemberNotFoundException::new); - final Token token = tokenRepository.findByMemberId(member.getId()) - .orElseThrow(TokenNotFoundException::new); + final Member member = memberRepository.findByGithubId(1L).get(); + final Token token = tokenRepository.findByMemberId(member.getId()).get(); assertDoesNotThrow(() -> authService.refreshToken(member.getId(), token.getRefreshToken())); } @@ -114,10 +106,8 @@ void recreationAccessToken() { @Test void logout() { authService.createToken("authorization-code"); - final Member member = memberRepository.findByGithubId(1L) - .orElseThrow(MemberNotFoundException::new); - final Token token = tokenRepository.findByMemberId(member.getId()) - .orElseThrow(TokenNotFoundException::new); + final Member member = memberRepository.findByGithubId(1L).get(); + final Token token = tokenRepository.findByMemberId(member.getId()).get(); authService.logout(member.getId()); diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java index fdabdf405..d78f2a95f 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java @@ -183,7 +183,7 @@ void createdStudyWithMaxSizeOne() { // when final String location = createdResponse.getHeaders().getLocation().getPath(); final long studyId = getStudyIdBy(location); - final Study study = studyRepository.findById(studyId).orElseThrow(); + final Study study = studyRepository.findById(studyId).get(); // then assertThat(study.getRecruitPlanner().getRecruitStatus()).isEqualTo(RECRUITMENT_END); @@ -211,7 +211,7 @@ void updateStudyDetails() { final ResponseEntity createdResponse = studyController.createStudy(짱구.getId(), studyRequest); final String location = createdResponse.getHeaders().getLocation().getPath(); final long studyId = getStudyIdBy(location); - Study study = studyRepository.findById(studyId).orElseThrow(); + Study study = studyRepository.findById(studyId).get(); final StudyRequest updatingStudyRequest = StudyRequest.builder() .title("변경된 title") From 624d511cab8748a1d85bc38d43c08bec9057aaa6 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Thu, 15 Sep 2022 08:54:48 +0900 Subject: [PATCH 14/19] =?UTF-8?q?refactor:=20=EC=8A=A4=ED=84=B0=EB=94=94?= =?UTF-8?q?=EC=9E=A5=20Fixture=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moamoa/fixtures/StudyFixtures.java | 24 ------------------- .../controller/MyStudyControllerTest.java | 15 ++++-------- 2 files changed, 5 insertions(+), 34 deletions(-) diff --git a/backend/src/test/java/com/woowacourse/moamoa/fixtures/StudyFixtures.java b/backend/src/test/java/com/woowacourse/moamoa/fixtures/StudyFixtures.java index 8fd987e7c..732a080df 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/fixtures/StudyFixtures.java +++ b/backend/src/test/java/com/woowacourse/moamoa/fixtures/StudyFixtures.java @@ -1,25 +1,9 @@ package com.woowacourse.moamoa.fixtures; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_아이디; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_유저네임; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_이미지; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_프로필; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우_아이디; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우_유저네임; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우_이미지; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.디우_프로필; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스_아이디; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스_유저네임; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스_이미지; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.베루스_프로필; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_깃허브_아이디; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_아이디; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_유저네임; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_이미지; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_프로필; import static com.woowacourse.moamoa.fixtures.TagFixtures.BE_태그_아이디; import static com.woowacourse.moamoa.fixtures.TagFixtures.FE_태그_아이디; import static com.woowacourse.moamoa.fixtures.TagFixtures.리액트_태그_아이디; @@ -30,7 +14,6 @@ import static com.woowacourse.moamoa.study.domain.StudyStatus.IN_PROGRESS; import static com.woowacourse.moamoa.study.domain.StudyStatus.PREPARE; -import com.woowacourse.moamoa.member.domain.Member; import com.woowacourse.moamoa.study.domain.AttachedTag; import com.woowacourse.moamoa.study.domain.AttachedTags; import com.woowacourse.moamoa.study.domain.Content; @@ -47,7 +30,6 @@ public class StudyFixtures { /* 자바 스터디 */ - public static final Member 자바_스터디장 = new Member(짱구_깃허브_아이디, 짱구_유저네임, 짱구_이미지, 짱구_프로필); public static final Content 자바_스터디_내용 = new Content("신짱구의 자바의 정석", "자바 스터디 요약", "자바 스터디 썸네일", "자바 스터디 설명입니다."); public static final Participants 자바_스터디_참가자들 = new Participants(짱구_아이디, Set.of(그린론_아이디, 디우_아이디)); public static final RecruitPlanner 자바_스터디_모집계획 = new RecruitPlanner(10, RECRUITMENT_START, LocalDate.now()); @@ -62,7 +44,6 @@ public class StudyFixtures { } /* 리액트 스터디 */ - public static final Member 리액트_스터디장 = new Member(디우_깃허브_아이디, 디우_유저네임, 디우_이미지, 디우_프로필); public static final Content 리액트_스터디_내용 = new Content("디우의 이것이 리액트다.", "리액트 스터디 요약", "리액트 스터디 썸네일", "리액트 스터디 설명입니다."); public static final Participants 리액트_스터디_참가자들 = new Participants(디우_아이디, Set.of(짱구_아이디, 그린론_아이디, 베루스_아이디)); public static final RecruitPlanner 리액트_스터디_모집계획 = new RecruitPlanner(5, RECRUITMENT_START, LocalDate.now()); @@ -77,7 +58,6 @@ public class StudyFixtures { } /* 자바스크립트스크립트 스터디 */ - public static final Member 자바스크립트_스터디장 = new Member(그린론_깃허브_아이디, 그린론_유저네임, 그린론_이미지, 그린론_프로필); public static final Content 자바스크립트_스터디_내용 = new Content("그린론의 모던 자바스크립트 인 액션", "자바스크립트 스터디 요약", "자바스크립트 스터디 썸네일", "자바스크립트 스터디 설명입니다."); public static final Participants 자바스크립트_스터디_참가자들 = new Participants(그린론_아이디, Set.of(디우_아이디, 베루스_아이디)); public static final RecruitPlanner 자바스크립트_스터디_모집계획 = new RecruitPlanner(20, RECRUITMENT_START, LocalDate.now()); @@ -92,7 +72,6 @@ public class StudyFixtures { } /* HTTP 스터디 */ - public static final Member HTTP_스터디장 = new Member(디우_깃허브_아이디, 디우_유저네임, 디우_이미지, 디우_프로필); public static final Content HTTP_스터디_내용 = new Content("디우의 HTTP", "HTTP 스터디 요약", "HTTP 스터디 썸네일", "HTTP 스터디 설명입니다."); public static final Participants HTTP_스터디_참가자들 = new Participants(디우_아이디, Set.of(베루스_아이디, 짱구_아이디)); public static final RecruitPlanner HTTP_스터디_모집계획 = new RecruitPlanner(4, RECRUITMENT_END, LocalDate.now()); @@ -107,7 +86,6 @@ public class StudyFixtures { } /* 알고리즘 스터디 (모집 기간과 스터디 종료일자가 없음) */ - public static final Member 알고리즘_스터디장 = new Member(베루스_깃허브_아이디, 베루스_유저네임, 베루스_이미지, 베루스_프로필); public static final Content 알고리즘_스터디_내용 = new Content("알고리즘 주도 개발 1타 강사 베루스", "알고리즘 스터디 요약", "알고리즘 스터디 썸네일", "알고리즘 스터디 설명입니다."); public static final Participants 알고리즘_스터디_참가자들 = new Participants(베루스_아이디, Set.of(그린론_아이디, 디우_아이디)); public static final RecruitPlanner 알고리즘_스터디_모집계획 = new RecruitPlanner(null, RECRUITMENT_END, null); @@ -122,7 +100,6 @@ public class StudyFixtures { } /* 리눅스 스터디 (최대 인원 없음) */ - public static final Member 리눅스_스터디장 = new Member(베루스_깃허브_아이디, 베루스_유저네임, 베루스_이미지, 베루스_프로필); public static final Content 리눅스_스터디_내용 = new Content("벨우스의 린우스", "리눅스 스터디 요약", "리눅스 스터디 썸네일", "리눅스 스터디 설명입니다."); public static final Participants 리눅스_스터디_참가자들 = new Participants(베루스_아이디, Set.of(그린론_아이디, 디우_아이디)); public static final RecruitPlanner 리눅스_스터디_모집계획 = new RecruitPlanner(null, RECRUITMENT_START, LocalDate.now()); @@ -137,7 +114,6 @@ public class StudyFixtures { } /* OS 스터디 */ - public static final Member OS_스터디장 = new Member(디우_깃허브_아이디, 디우_유저네임, 디우_이미지, 디우_프로필); public static final Content OS_스터디_내용 = new Content("디우의 OS 스터디", "OS 스터디 요약", "OS 스터디 썸네일", "OS 스터디 설명입니다."); public static final Participants OS_스터디_참가자들 = new Participants(디우_아이디, Set.of(그린론_아이디, 짱구_아이디, 베루스_아이디)); public static final RecruitPlanner OS_스터디_모집계획 = new RecruitPlanner(10, RECRUITMENT_START, LocalDate.now()); diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java index 88057fc2b..37700247f 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/controller/MyStudyControllerTest.java @@ -10,31 +10,26 @@ import static com.woowacourse.moamoa.fixtures.StudyFixtures.리눅스_스터디_내용; import static com.woowacourse.moamoa.fixtures.StudyFixtures.리눅스_스터디_모집계획; import static com.woowacourse.moamoa.fixtures.StudyFixtures.리눅스_스터디_참가자들; -import static com.woowacourse.moamoa.fixtures.StudyFixtures.리눅스_스터디장; import static com.woowacourse.moamoa.fixtures.StudyFixtures.리액트_스터디; import static com.woowacourse.moamoa.fixtures.StudyFixtures.리액트_스터디_계획; import static com.woowacourse.moamoa.fixtures.StudyFixtures.리액트_스터디_내용; import static com.woowacourse.moamoa.fixtures.StudyFixtures.리액트_스터디_모집계획; import static com.woowacourse.moamoa.fixtures.StudyFixtures.리액트_스터디_참가자들; -import static com.woowacourse.moamoa.fixtures.StudyFixtures.리액트_스터디장; import static com.woowacourse.moamoa.fixtures.StudyFixtures.알고리즘_스터디; import static com.woowacourse.moamoa.fixtures.StudyFixtures.알고리즘_스터디_계획; import static com.woowacourse.moamoa.fixtures.StudyFixtures.알고리즘_스터디_내용; import static com.woowacourse.moamoa.fixtures.StudyFixtures.알고리즘_스터디_모집계획; import static com.woowacourse.moamoa.fixtures.StudyFixtures.알고리즘_스터디_참가자들; -import static com.woowacourse.moamoa.fixtures.StudyFixtures.알고리즘_스터디장; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바_스터디; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바_스터디_계획; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바_스터디_내용; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바_스터디_모집계획; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바_스터디_참가자들; -import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바_스터디장; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바스크립트_스터디; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바스크립트_스터디_계획; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바스크립트_스터디_내용; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바스크립트_스터디_모집계획; import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바스크립트_스터디_참가자들; -import static com.woowacourse.moamoa.fixtures.StudyFixtures.자바스크립트_스터디장; import static com.woowacourse.moamoa.fixtures.TagFixtures.BE_태그_아이디; import static com.woowacourse.moamoa.fixtures.TagFixtures.BE_태그명; import static com.woowacourse.moamoa.fixtures.TagFixtures.FE_태그_아이디; @@ -152,11 +147,11 @@ void getMyStudies() { .hasSize(5) .extracting("id", "username", "imageUrl", "profileUrl") .containsExactlyInAnyOrder( - tuple(짱구.getId(), 자바_스터디장.getUsername(), 자바_스터디장.getImageUrl(), 자바_스터디장.getProfileUrl()), - tuple(디우.getId(), 리액트_스터디장.getUsername(), 리액트_스터디장.getImageUrl(), 리액트_스터디장.getProfileUrl()), - tuple(그린론.getId(), 자바스크립트_스터디장.getUsername(), 자바스크립트_스터디장.getImageUrl(), 자바스크립트_스터디장.getProfileUrl()), - tuple(베루스.getId(), 알고리즘_스터디장.getUsername(), 알고리즘_스터디장.getImageUrl(), 알고리즘_스터디장.getProfileUrl()), - tuple(베루스.getId(), 리눅스_스터디장.getUsername(), 리눅스_스터디장.getImageUrl(), 리눅스_스터디장.getProfileUrl()) + tuple(짱구.getId(), 짱구.getUsername(), 짱구.getImageUrl(), 짱구.getProfileUrl()), + tuple(디우.getId(), 디우.getUsername(), 디우.getImageUrl(), 디우.getProfileUrl()), + tuple(그린론.getId(), 그린론.getUsername(), 그린론.getImageUrl(), 그린론.getProfileUrl()), + tuple(베루스.getId(), 베루스.getUsername(), 베루스.getImageUrl(), 베루스.getProfileUrl()), + tuple(베루스.getId(), 베루스.getUsername(), 베루스.getImageUrl(), 베루스.getProfileUrl()) ); final List> tags = myStudies.getBody() From ae13bf996c5d9549f7cc9ae11502ce800c12dc6e Mon Sep 17 00:00:00 2001 From: Donggyu Date: Thu, 15 Sep 2022 14:28:42 +0900 Subject: [PATCH 15/19] =?UTF-8?q?chore:=20=EC=BD=94=EB=93=9C=20=EB=83=84?= =?UTF-8?q?=EC=83=88=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SearchingReferenceRoomControllerTest.java | 3 ++- .../controller/ReviewControllerTest.java | 18 +++++------------- .../study/controller/StudyControllerTest.java | 6 ++++-- .../study/service/MyStudyServiceTest.java | 3 ++- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java index db71553d2..1a50967b4 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/referenceroom/controller/SearchingReferenceRoomControllerTest.java @@ -152,7 +152,8 @@ void getLinksByNotParticipatedMember() { final Long javaStudyId = javaStudy.getId(); final PageRequest pageRequest = PageRequest.of(0, 5); - assertThatThrownBy(() -> sut.getLinks(병민.getId(), javaStudyId, pageRequest)) + final Long memberId = 병민.getId(); + assertThatThrownBy(() -> sut.getLinks(memberId, javaStudyId, pageRequest)) .isInstanceOf(NotParticipatedMemberException.class); } } diff --git a/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java index ff7ae732d..3f2bae7ec 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/review/controller/ReviewControllerTest.java @@ -1,9 +1,7 @@ package com.woowacourse.moamoa.review.controller; import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.그린론_응답; import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구; -import static com.woowacourse.moamoa.fixtures.MemberFixtures.짱구_응답; import static org.assertj.core.api.Assertions.assertThatThrownBy; import com.woowacourse.moamoa.common.RepositoryTest; @@ -15,8 +13,6 @@ import com.woowacourse.moamoa.review.service.exception.UnwrittenReviewException; import com.woowacourse.moamoa.review.service.request.EditingReviewRequest; import com.woowacourse.moamoa.review.service.request.WriteReviewRequest; -import com.woowacourse.moamoa.review.service.response.ReviewResponse; -import com.woowacourse.moamoa.review.service.response.WriterResponse; import com.woowacourse.moamoa.study.domain.Study; import com.woowacourse.moamoa.study.domain.repository.StudyRepository; import com.woowacourse.moamoa.study.service.StudyParticipantService; @@ -78,13 +74,6 @@ void setUp() { 짱구_리뷰 = reviewService .writeReview(짱구.getId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용1")); - final Long javaReviewId4 = reviewService - .writeReview(그린론.getId(), javaStudy.getId(), new WriteReviewRequest("리뷰 내용4")); - - final ReviewResponse 리뷰_내용1 = new ReviewResponse(짱구_리뷰, new WriterResponse(짱구_응답), LocalDate.now(), - LocalDate.now(), "리뷰 내용1"); - final ReviewResponse 리뷰_내용4 = new ReviewResponse(javaReviewId4, new WriterResponse(그린론_응답), LocalDate.now(), - LocalDate.now(), "리뷰 내용4"); entityManager.flush(); entityManager.clear(); @@ -94,15 +83,18 @@ void setUp() { @Test void notUpdate() { final EditingReviewRequest request = new EditingReviewRequest("수정한 리뷰 내용입니다."); + final Long memberId = 그린론.getId(); - assertThatThrownBy(() -> sut.updateReview(그린론.getId(), 짱구_리뷰, request)) + assertThatThrownBy(() -> sut.updateReview(memberId, 짱구_리뷰, request)) .isInstanceOf(UnwrittenReviewException.class); } @DisplayName("내가 작성하지 않은 리뷰를 삭제할 수 없다.") @Test void notDelete() { - assertThatThrownBy(() -> sut.deleteReview(그린론.getId(), 짱구_리뷰)) + final Long memberId = 그린론.getId(); + + assertThatThrownBy(() -> sut.deleteReview(memberId, 짱구_리뷰)) .isInstanceOf(UnwrittenReviewException.class); } } diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java index d78f2a95f..3de8539e0 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/controller/StudyControllerTest.java @@ -104,7 +104,8 @@ void createStudyByInvalidPeriod() { .build(); // when - assertThatThrownBy(() -> sut.createStudy(짱구.getId(), studyRequest)) + final Long memberId = 짱구.getId(); + assertThatThrownBy(() -> sut.createStudy(memberId, studyRequest)) .isInstanceOf(InvalidPeriodException.class); } @@ -156,7 +157,8 @@ void createStudyByNotFoundUser() { .build(); // when - assertThatThrownBy(() -> sut.createStudy(짱구.getId() + 100L, studyRequest)) // 존재하지 않는 사용자로 추가 시 예외 발생 + final Long memberId = 짱구.getId(); + assertThatThrownBy(() -> sut.createStudy(memberId + 100L, studyRequest)) // 존재하지 않는 사용자로 추가 시 예외 발생 .isInstanceOf(MemberNotFoundException.class); } diff --git a/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java b/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java index 11bea1065..17d95c939 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/study/service/MyStudyServiceTest.java @@ -201,7 +201,8 @@ void getMemberRoleNotExistUser() { @DisplayName("사용자 역할 조회하는 기능에서 존재하지 않는 스터디 조회 시 예외 발생") @Test void getMemberRoleNotExistStudy() { - assertThatThrownBy(() -> myStudyService.findMyRoleInStudy(짱구.getId(), 10L)) + final Long memberId = 짱구.getId(); + assertThatThrownBy(() -> myStudyService.findMyRoleInStudy(memberId, 10L)) .isInstanceOf(StudyNotFoundException.class) .hasMessageContaining("스터디가 존재하지 않습니다."); } From 3a6aca783935d28f54087d67a5d0931d712ecb20 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Thu, 15 Sep 2022 16:34:53 +0900 Subject: [PATCH 16/19] =?UTF-8?q?feta:=20=EC=B6=A9=EB=8F=8C=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interceptor/PathMatcherContainer.java | 40 +++++++++++++++++++ .../interceptor/PathMatcherInterceptor.java | 38 ++++++++++++++++++ .../interceptor/PathRequestMatcher.java | 18 +++++++++ .../interceptor/PathMatcherContainerTest.java | 30 ++++++++++++++ .../interceptor/PathRequestMatcherTest.java | 26 ++++++++++++ 5 files changed, 152 insertions(+) create mode 100644 backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherContainer.java create mode 100644 backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherInterceptor.java create mode 100644 backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathRequestMatcher.java create mode 100644 backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherContainerTest.java create mode 100644 backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/PathRequestMatcherTest.java diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherContainer.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherContainer.java new file mode 100644 index 000000000..583a308c8 --- /dev/null +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherContainer.java @@ -0,0 +1,40 @@ +package com.woowacourse.moamoa.auth.controller.interceptor; + +import java.util.ArrayList; +import java.util.List; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Component; +import org.springframework.util.AntPathMatcher; +import org.springframework.util.PathMatcher; + +@Component +public class PathMatcherContainer { + + private final PathMatcher pathMatcher; + private final List includePathPatterns; + private final List excludePathPatterns; + + public PathMatcherContainer() { + this.pathMatcher = new AntPathMatcher(); + this.includePathPatterns = new ArrayList<>(); + this.excludePathPatterns = new ArrayList<>(); + } + + public boolean isNotIncludePath(final String targetPath, final String pathMethod) { + final boolean excludePattern = excludePathPatterns.stream() + .anyMatch(requestPath -> requestPath.match(pathMatcher, targetPath, pathMethod)); + + final boolean isNotIncludePattern = includePathPatterns.stream() + .noneMatch(requestPath -> requestPath.match(pathMatcher, targetPath, pathMethod)); + + return excludePattern || isNotIncludePattern; + } + + public void includePathPattern(final String path, final HttpMethod method) { + this.includePathPatterns.add(new PathRequestMatcher(path, method)); + } + + public void excludePathPattern(final String path, final HttpMethod method) { + this.excludePathPatterns.add(new PathRequestMatcher(path, method)); + } +} diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherInterceptor.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherInterceptor.java new file mode 100644 index 000000000..9e3c38ed3 --- /dev/null +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherInterceptor.java @@ -0,0 +1,38 @@ +package com.woowacourse.moamoa.auth.controller.interceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import lombok.AllArgsConstructor; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +@Component +@AllArgsConstructor +public class PathMatcherInterceptor implements HandlerInterceptor { + + private final HandlerInterceptor handlerInterceptor; + private final PathMatcherContainer pathMatcherContainer; + + @Override + public boolean preHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler) + throws Exception { + + if (pathMatcherContainer.isNotIncludePath(request.getRequestURI(), request.getMethod())) { + return true; + } + + return this.handlerInterceptor.preHandle(request, response, handler); + } + + public PathMatcherInterceptor includePathPattern(final String pathPattern, final HttpMethod method) { + this.pathMatcherContainer.includePathPattern(pathPattern, method); + return this; + } + + public PathMatcherInterceptor excludePathPattern(final String pathPattern, final HttpMethod method) { + this.pathMatcherContainer.excludePathPattern(pathPattern, method); + return this; + } +} diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathRequestMatcher.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathRequestMatcher.java new file mode 100644 index 000000000..863dc781b --- /dev/null +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/PathRequestMatcher.java @@ -0,0 +1,18 @@ +package com.woowacourse.moamoa.auth.controller.interceptor; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.springframework.http.HttpMethod; +import org.springframework.util.PathMatcher; + +@AllArgsConstructor +@Getter +public class PathRequestMatcher { + + private final String path; + private final HttpMethod method; + + public boolean match(final PathMatcher pathMatcher, final String targetPath, final String pathMethod) { + return pathMatcher.match(path, targetPath) && this.method.matches(pathMethod); + } +} diff --git a/backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherContainerTest.java b/backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherContainerTest.java new file mode 100644 index 000000000..c2582efda --- /dev/null +++ b/backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/PathMatcherContainerTest.java @@ -0,0 +1,30 @@ +package com.woowacourse.moamoa.auth.controller.interceptor; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.woowacourse.moamoa.WebMVCTest; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.springframework.beans.factory.annotation.Autowired; + +class PathMatcherContainerTest extends WebMVCTest { + + @Autowired + private PathMatcherContainer pathMatcherContainer; + + @DisplayName("인증이 필요한 요청이 아닌지 확인한다.") + @ParameterizedTest + @CsvSource(value = { + "/api/studies,OPTION,true", + "/api/studies,POST,false", + "/api/studies,GET,true", + "/api/members/me/role,GET,false", + "/api/studies/1/reviews,POST,false", + "/api/studies/1/reviews/1,DELETE,false", + "/api/study/\\d+,PUT,false" + }) + void checkIsValidateRequest(String path, String method, boolean expected) { + assertThat(pathMatcherContainer.isNotIncludePath(path, method)).isEqualTo(expected); + } +} diff --git a/backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/PathRequestMatcherTest.java b/backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/PathRequestMatcherTest.java new file mode 100644 index 000000000..a715e9ac9 --- /dev/null +++ b/backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/PathRequestMatcherTest.java @@ -0,0 +1,26 @@ +package com.woowacourse.moamoa.auth.controller.interceptor; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.springframework.http.HttpMethod; +import org.springframework.util.AntPathMatcher; + +class PathRequestMatcherTest { + + @DisplayName("요청이 잘 match되는지 검증한다.") + @ParameterizedTest + @CsvSource(value = { + "/api/studies,POST,/api/studies,POST,true", + "/api/studies,GET,/api/studies,POST,false", + "/api/studies/**,POST,/api/studies/1,POST,true", + "/api/studies/**,PUT,/api/studies/1/reviews/1,PUT,true" + }) + void isMatch(String path, HttpMethod method, String targetPath, String targetMethod, boolean expected) { + final PathRequestMatcher pathRequestMatcher = new PathRequestMatcher(path, method); + + assertThat(pathRequestMatcher.match(new AntPathMatcher(), targetPath, targetMethod)).isEqualTo(expected); + } +} From b52a6739d3fe1756a0f541e77907ff7322724f69 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Thu, 15 Sep 2022 16:41:57 +0900 Subject: [PATCH 17/19] Merge branch 'develop' of https://github.com/woowacourse-teams/2022-moamoa into refactor/320-auth-memberid # Conflicts: # backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthConfig.java --- .../java/com/woowacourse/moamoa/auth/config/AuthConfig.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthConfig.java b/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthConfig.java index 9928488db..dfa93e7f7 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthConfig.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/config/AuthConfig.java @@ -2,9 +2,7 @@ import com.woowacourse.moamoa.auth.controller.AuthenticatedMemberResolver; import com.woowacourse.moamoa.auth.controller.AuthenticatedRefreshArgumentResolver; -import com.woowacourse.moamoa.auth.controller.AuthenticationArgumentResolver; import com.woowacourse.moamoa.auth.controller.interceptor.AuthenticationInterceptor; - import com.woowacourse.moamoa.auth.controller.interceptor.PathMatcherContainer; import com.woowacourse.moamoa.auth.controller.interceptor.PathMatcherInterceptor; import com.woowacourse.moamoa.auth.infrastructure.TokenProvider; @@ -24,7 +22,6 @@ public class AuthConfig implements WebMvcConfigurer { private final AuthenticatedRefreshArgumentResolver authenticatedRefreshArgumentResolver; - private final AuthenticationArgumentResolver authenticationArgumentResolver; private final AuthenticatedMemberResolver authenticatedMemberResolver; private final PathMatcherContainer pathMatcherContainer; From 2c1dcd8c580bbbb189048c0f7ba6c60792ea1401 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Thu, 15 Sep 2022 18:27:47 +0900 Subject: [PATCH 18/19] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/controller/interceptor/AuthenticationInterceptor.java | 2 +- .../src/main/java/com/woowacourse/moamoa/auth/domain/Token.java | 2 ++ .../java/com/woowacourse/moamoa/auth/service/AuthService.java | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/AuthenticationInterceptor.java b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/AuthenticationInterceptor.java index 087db716b..74d1b346f 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/AuthenticationInterceptor.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/controller/interceptor/AuthenticationInterceptor.java @@ -31,7 +31,7 @@ private void validateToken(final String token, final String requestURI) { return; } if (token == null || !tokenProvider.validateToken(token)) { - throw new UnauthorizedException("유효하지 않은 토큰입니다."); + throw new UnauthorizedException(String.format("유효하지 않은 토큰[%s]입니다.", token)); } } } diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/domain/Token.java b/backend/src/main/java/com/woowacourse/moamoa/auth/domain/Token.java index 86e63e87a..ab7e3ae34 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/domain/Token.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/domain/Token.java @@ -10,11 +10,13 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; @Entity @Getter @NoArgsConstructor(access = PROTECTED) @AllArgsConstructor +@ToString public class Token { @Id diff --git a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java index 128908899..3b0cd79d2 100644 --- a/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java +++ b/backend/src/main/java/com/woowacourse/moamoa/auth/service/AuthService.java @@ -51,7 +51,7 @@ public AccessTokenResponse refreshToken(final Long memberId, final String refres .orElseThrow(TokenNotFoundException::new); if (!token.getRefreshToken().equals(refreshToken)) { - throw new UnauthorizedException("유효하지 않은 토큰입니다."); + throw new UnauthorizedException(String.format("유효하지 않은 토큰[%s]입니다.", token)); } String accessToken = tokenProvider.recreationAccessToken(memberId, refreshToken); From a47f96c6932ce8d9776c23fef0fcfb9a7b3f74c1 Mon Sep 17 00:00:00 2001 From: Donggyu Date: Thu, 15 Sep 2022 18:33:17 +0900 Subject: [PATCH 19/19] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/interceptor/AuthenticationInterceptorTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/AuthenticationInterceptorTest.java b/backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/AuthenticationInterceptorTest.java index 311b2acb2..223442bca 100644 --- a/backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/AuthenticationInterceptorTest.java +++ b/backend/src/test/java/com/woowacourse/moamoa/auth/controller/interceptor/AuthenticationInterceptorTest.java @@ -8,7 +8,6 @@ import com.woowacourse.moamoa.common.exception.UnauthorizedException; import java.util.Collections; import java.util.List; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; @@ -57,7 +56,6 @@ void validateInvalidToken() { .willReturn(Collections.enumeration(List.of(token))); assertThatThrownBy(() -> pathMatcherInterceptor.preHandle(httpServletRequest, null, null)) - .isInstanceOf(UnauthorizedException.class) - .hasMessageContaining("유효하지 않은 토큰입니다."); + .isInstanceOf(UnauthorizedException.class); } }