Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.devoops.dto.request.RepositorySaveRequest;
import com.devoops.dto.response.GithubRepoInfoResponse;
import com.devoops.event.AnalyzeMyPrEvent;
import com.devoops.exception.GithubForbiddenException;
import com.devoops.exception.GithubNotFoundException;
import com.devoops.exception.custom.GssException;
import com.devoops.exception.errorcode.ErrorCode;
Expand Down Expand Up @@ -42,7 +43,7 @@ public GithubRepository save(RepositorySaveRequest request, User user) {

eventPublisher.publishEvent(new AnalyzeMyPrEvent(repoUrl, user, this));
return savedRepository;
} catch (GithubNotFoundException githubNotFoundException) {
} catch (GithubNotFoundException | GithubForbiddenException githubException) {
throw new GssException(ErrorCode.REGISTRY_GITHUB_REPOSITORY_NOT_FOUND);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.devoops.dto.response.GithubRepoInfoResponse;
import com.devoops.dto.response.OwnerResponse;
import com.devoops.dto.response.WebHookCreateResponse;
import com.devoops.exception.GithubForbiddenException;
import com.devoops.exception.GithubNotFoundException;
import com.devoops.exception.custom.GssException;
import com.devoops.exception.errorcode.ErrorCode;
Expand Down Expand Up @@ -59,10 +60,21 @@ class Save {
}

@Test
void 웹훅_등록_실패_시_애플리케이션_에러로_전환한다() {
void 웹훅_등록_시_404_에러가_발생하면_애플리케이션_에러로_전환한다() {
User user = userGenerator.generate("김건우");
RepositorySaveRequest request = new RepositorySaveRequest("https://github.com/octocat/Hello-World");
mockingErrorWhenCreateWebHook();
mockingErrorWhenCreateWebHook(new GithubNotFoundException("mocking error"));

assertThatThrownBy(() -> repositoryFacadeService.save(request, user))
.isInstanceOf(GssException.class)
.hasMessage(ErrorCode.REGISTRY_GITHUB_REPOSITORY_NOT_FOUND.getMessage());
}

@Test
void 웹훅_등록_시_403_에러가_발생하면_애플리케이션_에러로_전환한다() {
User user = userGenerator.generate("김건우");
RepositorySaveRequest request = new RepositorySaveRequest("https://github.com/octocat/Hello-World");
mockingErrorWhenCreateWebHook(new GithubForbiddenException("mocking error"));

assertThatThrownBy(() -> repositoryFacadeService.save(request, user))
.isInstanceOf(GssException.class)
Expand Down Expand Up @@ -121,14 +133,14 @@ private void mockingGithubClient() {
.thenReturn(mockWebHookCreateResponse);
}

private void mockingErrorWhenCreateWebHook() {
private void mockingErrorWhenCreateWebHook(Exception exception) {
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"));
.thenThrow(exception);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.devoops.client;

import com.devoops.exception.GithubForbiddenException;
import com.devoops.exception.GithubNotFoundException;
import com.devoops.exception.custom.GssException;
import com.devoops.exception.errorcode.ErrorCode;
Expand Down Expand Up @@ -30,6 +31,9 @@ public ExchangeFilterFunction githubErrorLogger() {
if (response.statusCode().isSameCodeAs(HttpStatusCode.valueOf(404))) {
return Mono.error(new GithubNotFoundException("깃허브에서 자원을 찾을 수 없습니다."));
}
if(response.statusCode().isSameCodeAs(HttpStatusCode.valueOf(403))) {
return Mono.error(new GithubForbiddenException("깃허브 자원의 접근 권한이 없습니다"));
}
return Mono.error(new GssException(ErrorCode.GITHUB_CLIENT_ERROR));
});
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.devoops.exception;

public class GithubForbiddenException extends RuntimeException {

public GithubForbiddenException(String message) {
super(message);
}
}
Loading