From 22fa19ac90fe6323c727ef437a0ecde0f13766e9 Mon Sep 17 00:00:00 2001 From: coli Date: Mon, 18 Aug 2025 22:38:44 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=EB=A0=88=ED=8F=AC=EC=A7=80?= =?UTF-8?q?=ED=86=A0=EB=A6=AC=20=EB=93=B1=EB=A1=9D=EC=8B=9C=20not=20found?= =?UTF-8?q?=20=EC=97=90=EB=9F=AC=EA=B0=80=20=EB=82=98=EB=A9=B4=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=EC=BD=94=EB=93=9C=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../facade/RepositoryFacadeService.java | 19 +++++++++++------ .../facade/RepositoryFacadeServiceTest.java | 21 +++++++++++++++++++ .../exception/errorcode/ErrorCode.java | 1 + 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java b/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java index 5df57cf..fa2f138 100644 --- a/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java +++ b/gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java @@ -3,13 +3,16 @@ import static com.devoops.Constants.INITIAL_PULL_REQUEST_COUNT; import com.devoops.command.request.RepositoryCreateCommand; -import com.devoops.domain.entity.github.repo.GithubRepository; import com.devoops.domain.entity.github.pr.PullRequests; +import com.devoops.domain.entity.github.repo.GithubRepository; import com.devoops.domain.entity.user.User; import com.devoops.dto.request.GithubRepoUrl; import com.devoops.dto.request.RepositorySaveRequest; import com.devoops.dto.response.GithubRepoInfoResponse; import com.devoops.event.AnalyzeMyPrEvent; +import com.devoops.exception.GithubNotFoundException; +import com.devoops.exception.custom.GssException; +import com.devoops.exception.errorcode.ErrorCode; import com.devoops.service.GitHubService; import com.devoops.service.github.WebHookService; import com.devoops.service.repository.RepositoryService; @@ -30,11 +33,15 @@ public class RepositoryFacadeService { @Transactional public GithubRepository save(RepositorySaveRequest request, User user) { - GithubRepoUrl repoUrl = new GithubRepoUrl(request.url()); - GithubRepository savedRepository = saveRepository(repoUrl, user); - webHookService.registerWebhook(user, savedRepository.getId()); - eventPublisher.publishEvent(new AnalyzeMyPrEvent(repoUrl, user, this)); - return savedRepository; + try { + GithubRepoUrl repoUrl = new GithubRepoUrl(request.url()); + GithubRepository savedRepository = saveRepository(repoUrl, user); + webHookService.registerWebhook(user, savedRepository.getId()); + eventPublisher.publishEvent(new AnalyzeMyPrEvent(repoUrl, user, this)); + return savedRepository; + } catch (GithubNotFoundException githubNotFoundException) { + throw new GssException(ErrorCode.REGISTRY_GITHUB_REPOSITORY_NOT_FOUND); + } } private GithubRepository saveRepository(GithubRepoUrl url, User user) { diff --git a/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java b/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java index 347e537..6917528 100644 --- a/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java +++ b/gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java @@ -57,6 +57,17 @@ class Save { ); } + @Test + void 웹훅_등록_실패_시_애플리케이션_에러로_전환한다() { + User user = userGenerator.generate("김건우"); + RepositorySaveRequest request = new RepositorySaveRequest("https://github.com/octocat/Hello-World"); + mockingErrorWhenCreateWebHook(); + + assertThatThrownBy(() -> repositoryFacadeService.save(request, user)) + .isInstanceOf(GssException.class) + .hasMessage(ErrorCode.REGISTRY_GITHUB_REPOSITORY_NOT_FOUND.getMessage()); + } + @Test void 레포지토리를_중복_저장할_수_없다() { User user = userGenerator.generate("김건우"); @@ -79,6 +90,16 @@ private void mockingGithubClient() { Mockito.when(gitHubClient.createWebhook(any(), any(), any(), any())) .thenReturn(mockWebHookCreateResponse); } + + private void mockingErrorWhenCreateWebHook() { + GithubRepoInfoResponse mockResponse = new GithubRepoInfoResponse(123, "testName", "testUrl", + new OwnerResponse("김건우")); + WebHookCreateResponse mockWebHookCreateResponse = new WebHookCreateResponse(123); + Mockito.when(gitHubClient.getRepositoryInfo(anyString(), anyString(), anyString())) + .thenReturn(mockResponse); + Mockito.when(gitHubClient.createWebhook(any(), any(), any(), any())) + .thenThrow(new GithubNotFoundException("mocking error")); + } } @Nested diff --git a/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java b/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java index 3f80dc0..636702e 100644 --- a/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java +++ b/gss-common/src/main/java/com/devoops/exception/errorcode/ErrorCode.java @@ -6,6 +6,7 @@ public enum ErrorCode { //4XX + REGISTRY_GITHUB_REPOSITORY_NOT_FOUND(400, "입력한 깃허브 레포지토리를 등록할 수 없습니다"), REPOSITORY_NOT_FOUND(400, "레포지토리를 찾을 수 없습니다"), MALFORMED_GITHUB_REPOSITORY_URL(400, "잘못된 형식의 레포지토리 url입니다"), UNAUTHORIZED_EXCEPTION(401, "잘못된 유저 접근입니다"), From 43922f89e2cf75c5d5efd71798292f8d61e31b37 Mon Sep 17 00:00:00 2001 From: coli Date: Mon, 18 Aug 2025 23:12:36 +0900 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20=EC=9D=B4=EC=8A=88=20=ED=85=9C?= =?UTF-8?q?=ED=94=8C=EB=A6=BF=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/pull_request_template.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 37e348f..1248c8f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,7 +1,3 @@ -# 🚩 연관 JIRA 이슈 -jira issue url: - +# 🚩 연관 이슈 # 🔂 변경 내역 - -# 🗣️ 리뷰 요구사항 (선택)