Skip to content

Commit 341ec00

Browse files
authored
Merge pull request #93 from Alpha-origin/fix/metadata-null-check
fix: 자료를 올리지 않은 사용자의 isGit·isPortfolio가 500 대신 false를 돌려줌
2 parents 4010f0e + 867ac8f commit 341ec00

2 files changed

Lines changed: 63 additions & 2 deletions

File tree

‎src/main/java/repit/repit_api_server/domain/metadata/controller/MetaDataController.java‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,22 @@ public ResponseEntity<MetaDataResponse> getMetaData(
4343
}
4444

4545

46+
// 자료를 한 번도 올리지 않은 사용자는 인증 서버가 두 값을 null로 준다. 없는 것이지 오류가 아니다.
4647
@GetMapping("/isGit")
4748
public ResponseEntity<Boolean> isGit(
4849
@AuthenticationPrincipal AuthUser authUser
4950
) {
5051
MetaDataResponse metaData = metaService.getMetaData(authUser.token());
51-
return ResponseEntity.ok(!metaData.getGitUrls().isEmpty());
52+
return ResponseEntity.ok(metaData != null && metaData.getGitUrls() != null
53+
&& !metaData.getGitUrls().isEmpty());
5254
}
5355

5456
@GetMapping("/isPortfolio")
5557
public ResponseEntity<Boolean> isPortfolio(
5658
@AuthenticationPrincipal AuthUser authUser
5759
) {
5860
MetaDataResponse metaData = metaService.getMetaData(authUser.token());
59-
return ResponseEntity.ok(!metaData.getFileUrl().isEmpty());
61+
return ResponseEntity.ok(metaData != null && metaData.getFileUrl() != null
62+
&& !metaData.getFileUrl().isBlank());
6063
}
6164
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package repit.repit_api_server.domain.metadata.controller;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.junit.jupiter.api.extension.ExtendWith;
5+
import org.mockito.InjectMocks;
6+
import org.mockito.Mock;
7+
import org.mockito.junit.jupiter.MockitoExtension;
8+
import repit.repit_api_server.domain.metadata.dto.response.MetaDataResponse;
9+
import repit.repit_api_server.domain.metadata.service.AnalysisLaunchService;
10+
import repit.repit_api_server.domain.metadata.service.MetaService;
11+
import repit.repit_api_server.global.auth.AuthUser;
12+
import repit.repit_api_server.global.response.UserResponse;
13+
14+
import java.util.List;
15+
16+
import static org.assertj.core.api.Assertions.assertThat;
17+
import static org.mockito.Mockito.when;
18+
19+
/**
20+
* 자료를 올리지 않은 사용자에게 인증 서버는 두 값을 null로 준다. 그것을 500이 아니라 false로 답한다.
21+
*/
22+
@ExtendWith(MockitoExtension.class)
23+
class MetaDataControllerTest {
24+
25+
private static final AuthUser USER = new AuthUser(new UserResponse(), "Bearer token");
26+
27+
@Mock
28+
private MetaService metaService;
29+
@Mock
30+
private AnalysisLaunchService analysisLaunchService;
31+
@InjectMocks
32+
private MetaDataController controller;
33+
34+
@Test
35+
void 자료가_없으면_false() {
36+
when(metaService.getMetaData("Bearer token")).thenReturn(new MetaDataResponse(null, null));
37+
38+
assertThat(controller.isGit(USER).getBody()).isFalse();
39+
assertThat(controller.isPortfolio(USER).getBody()).isFalse();
40+
}
41+
42+
@Test
43+
void 인증_서버가_빈_응답을_주면_false() {
44+
when(metaService.getMetaData("Bearer token")).thenReturn(null);
45+
46+
assertThat(controller.isGit(USER).getBody()).isFalse();
47+
assertThat(controller.isPortfolio(USER).getBody()).isFalse();
48+
}
49+
50+
@Test
51+
void 자료가_있으면_true() {
52+
when(metaService.getMetaData("Bearer token"))
53+
.thenReturn(new MetaDataResponse(List.of("https://github.com/a/b"), "https://s3/x.pdf"));
54+
55+
assertThat(controller.isGit(USER).getBody()).isTrue();
56+
assertThat(controller.isPortfolio(USER).getBody()).isTrue();
57+
}
58+
}

0 commit comments

Comments
 (0)