Skip to content

Commit

Permalink
test: (#29) loginWithKakao메서드에 대한 컨트롤러 단위 테스트 작성
Browse files Browse the repository at this point in the history
  • Loading branch information
jeomxon committed Jul 18, 2023
1 parent b4015f7 commit b9f6d3e
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
2 changes: 2 additions & 0 deletions backend/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.rest-assured:rest-assured'
testImplementation 'io.rest-assured:spring-mock-mvc'
}

tasks.named('test') {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.votogether.domain.auth.controller;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;

import com.votogether.domain.auth.service.AuthService;
import com.votogether.domain.member.service.MemberService;
import com.votogether.global.jwt.TokenProcessor;
import io.restassured.module.mockmvc.RestAssuredMockMvc;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpStatus;
import org.springframework.test.web.servlet.MockMvc;

@WebMvcTest(controllers = AuthController.class)
class AuthControllerTest {

@Autowired
MockMvc mockMvc;

@MockBean
AuthService authService;

@MockBean
TokenProcessor tokenProcessor;

@MockBean
MemberService memberService;

@BeforeEach
void setUp() {
RestAssuredMockMvc.standaloneSetup(new AuthController(authService));
}

@Test
@DisplayName("카카오 로그인을 한다.")
void loginWithKakao() {
// given
String accessToken = "abcdefg";

given(authService.register(any())).willReturn(accessToken);

// when
String responseBody = RestAssuredMockMvc
.given().log().all()
.queryParam("code", "abc1234")
.when().get("/auth/kakao/callback")
.then().log().all()
.status(HttpStatus.OK)
.extract()
.asString();

// then
assertAll(
() -> assertThat(responseBody).contains("accessToken"),
() -> assertThat(responseBody).contains(accessToken)
);
}

}

0 comments on commit b9f6d3e

Please sign in to comment.