Skip to content

Commit 296d29f

Browse files
committed
refactor: 403에러로 전환
1 parent 6f4614c commit 296d29f

File tree

4 files changed

+30
-5
lines changed

4 files changed

+30
-5
lines changed

gss-api-app/src/main/java/com/devoops/service/facade/RepositoryFacadeService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.devoops.dto.request.RepositorySaveRequest;
1111
import com.devoops.dto.response.GithubRepoInfoResponse;
1212
import com.devoops.event.AnalyzeMyPrEvent;
13+
import com.devoops.exception.GithubForbiddenException;
1314
import com.devoops.exception.GithubNotFoundException;
1415
import com.devoops.exception.custom.GssException;
1516
import com.devoops.exception.errorcode.ErrorCode;
@@ -42,7 +43,7 @@ public GithubRepository save(RepositorySaveRequest request, User user) {
4243

4344
eventPublisher.publishEvent(new AnalyzeMyPrEvent(repoUrl, user, this));
4445
return savedRepository;
45-
} catch (GithubNotFoundException githubNotFoundException) {
46+
} catch (GithubNotFoundException | GithubForbiddenException githubException) {
4647
throw new GssException(ErrorCode.REGISTRY_GITHUB_REPOSITORY_NOT_FOUND);
4748
}
4849
}

gss-api-app/src/test/java/com/devoops/service/facade/RepositoryFacadeServiceTest.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.devoops.dto.response.GithubRepoInfoResponse;
1919
import com.devoops.dto.response.OwnerResponse;
2020
import com.devoops.dto.response.WebHookCreateResponse;
21+
import com.devoops.exception.GithubForbiddenException;
2122
import com.devoops.exception.GithubNotFoundException;
2223
import com.devoops.exception.custom.GssException;
2324
import com.devoops.exception.errorcode.ErrorCode;
@@ -59,10 +60,21 @@ class Save {
5960
}
6061

6162
@Test
62-
void 웹훅_등록_실패_시_애플리케이션_에러로_전환한다() {
63+
void 웹훅_등록_시_404_에러가_발생하면_애플리케이션_에러로_전환한다() {
6364
User user = userGenerator.generate("김건우");
6465
RepositorySaveRequest request = new RepositorySaveRequest("https://github.com/octocat/Hello-World");
65-
mockingErrorWhenCreateWebHook();
66+
mockingErrorWhenCreateWebHook(new GithubNotFoundException("mocking error"));
67+
68+
assertThatThrownBy(() -> repositoryFacadeService.save(request, user))
69+
.isInstanceOf(GssException.class)
70+
.hasMessage(ErrorCode.REGISTRY_GITHUB_REPOSITORY_NOT_FOUND.getMessage());
71+
}
72+
73+
@Test
74+
void 웹훅_등록_시_403_에러가_발생하면_애플리케이션_에러로_전환한다() {
75+
User user = userGenerator.generate("김건우");
76+
RepositorySaveRequest request = new RepositorySaveRequest("https://github.com/octocat/Hello-World");
77+
mockingErrorWhenCreateWebHook(new GithubForbiddenException("mocking error"));
6678

6779
assertThatThrownBy(() -> repositoryFacadeService.save(request, user))
6880
.isInstanceOf(GssException.class)
@@ -121,14 +133,14 @@ private void mockingGithubClient() {
121133
.thenReturn(mockWebHookCreateResponse);
122134
}
123135

124-
private void mockingErrorWhenCreateWebHook() {
136+
private void mockingErrorWhenCreateWebHook(Exception exception) {
125137
GithubRepoInfoResponse mockResponse = new GithubRepoInfoResponse(123, "testName", "testUrl",
126138
new OwnerResponse("김건우"));
127139
WebHookCreateResponse mockWebHookCreateResponse = new WebHookCreateResponse(123);
128140
Mockito.when(gitHubClient.getRepositoryInfo(anyString(), anyString(), anyString()))
129141
.thenReturn(mockResponse);
130142
Mockito.when(gitHubClient.createWebhook(any(), any(), any(), any()))
131-
.thenThrow(new GithubNotFoundException("mocking error"));
143+
.thenThrow(exception);
132144
}
133145
}
134146

gss-client/gss-github-client/src/main/java/com/devoops/client/GithubExchangeFilterFunction.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.devoops.client;
22

3+
import com.devoops.exception.GithubForbiddenException;
34
import com.devoops.exception.GithubNotFoundException;
45
import com.devoops.exception.custom.GssException;
56
import com.devoops.exception.errorcode.ErrorCode;
@@ -30,6 +31,9 @@ public ExchangeFilterFunction githubErrorLogger() {
3031
if (response.statusCode().isSameCodeAs(HttpStatusCode.valueOf(404))) {
3132
return Mono.error(new GithubNotFoundException("깃허브에서 자원을 찾을 수 없습니다."));
3233
}
34+
if(response.statusCode().isSameCodeAs(HttpStatusCode.valueOf(403))) {
35+
return Mono.error(new GithubForbiddenException("깃허브 자원의 접근 권한이 없습니다"));
36+
}
3337
return Mono.error(new GssException(ErrorCode.GITHUB_CLIENT_ERROR));
3438
});
3539
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.devoops.exception;
2+
3+
public class GithubForbiddenException extends RuntimeException {
4+
5+
public GithubForbiddenException(String message) {
6+
super(message);
7+
}
8+
}

0 commit comments

Comments
 (0)