diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 37e348f6..1248c8f7 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,7 +1,3 @@ -# 🚩 μ—°κ΄€ JIRA 이슈 -jira issue url: - +# 🚩 μ—°κ΄€ 이슈 # πŸ”‚ λ³€κ²½ λ‚΄μ—­ - -# πŸ—£οΈ 리뷰 μš”κ΅¬μ‚¬ν•­ (선택) 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 5df57cf8..fa2f1381 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 347e5372..69175285 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 3f80dc0c..636702ea 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, "잘λͺ»λœ μœ μ € μ ‘κ·Όμž…λ‹ˆλ‹€"),