inflearn logo
강의

講義

知識共有

ホドルマンの腹痛開発ショー (SpringBoot、Vue.JS、AWS)

セキュリティ カスタム WithMockUser テスト まとめ

SecurityMockContext 로부터 유저 정보를 가져오기

261

작성자 없음

投稿した質問数 0

0

 @Test
    @DisplayName("글 삭제")
    @CustomMockUser
    void test7() throws Exception {
        // given
        UserPrincipal principal = (UserPrincipal) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        Member byId = memberRepository.findById(principal.getUserId()).orElseThrow(UserNotFound::new);
        Post post = Post.builder()
                        .title("Hello World")
                        .content("Hello Java")
                        .member(byId)
                        .build();
        postRepository.save(post);

        // expected
        mockMvc.perform(delete("/posts/{postId}", post.getId()))
               .andExpect(status().isOk())
               .andDo(print());
    }

vue.js aws spring-boot jpa spring-security

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
제공해 주신 정보에 따르면, Spring Security를 사용한 테스트 방법에 대해 알고 싶으신 것 같습니다. 테스트에서 특정 사용자의 권한을 가진 상태로 요청을 처리하는 예시는 다음과 같습니다.

Java:

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.security.test.context.support.WithMockUser;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;

@WebMvcTest(UserController.class)
class MySecurityTests {

@Autowired
private MockMvc mvc;

@Test
@WithMockUser(roles = "ADMIN")
void requestProtectedUrlWithUser() throws Exception {
    this.mvc.perform(get("/"));
}

}

Kotlin:

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.security.test.context.support.WithMockUser
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders

@WebMvcTest(UserController::class)
class MySecurityTests(@Autowired val mvc: MockMvc) {

@Test
@WithMockUser(roles = ["ADMIN"])
fun requestProtectedUrlWithUser() {
    mvc.perform(MockMvcRequestBuilders.get("/"))
}

}

위 예시에서는 @WithMockUser 어노테이션을 사용하여 테스트를 실행하는 사용자가 ‘ADMIN’ 역할을 가진 것처럼 설정되어 있습니다. 여러분의 테스트에서 @CustomMockUser와 유사한 방법을 사용하고 있다면, @WithMockUser나 Spring Security의 다른 테스트 지원 기능을 사용하여 권한을 설정할 수 있습니다.

더 자세한 내용이나 다른 Spring Security 테스트 관련 기능을 알고 싶으시면, Spring Security의 참조 문서를 확인하세요.

참조 링크: Spring Security reference documentation

Deprecated 관련 사항들

0

100

2

깃헙 collaboator 초대 관련

0

88

1

강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다

0

157

2

logout 후에 login 페이지 이동은 어디서 시켜주는건가요?

0

231

1

다중 데이터를 삭제 할 때

0

270

2

querydsl Q class 이슈

0

414

2

Windows WSL Vue 설정

2

246

1

Dip, @transactional

0

188

1

[vite] http proxy error: /auth/login

0

1043

2

로그인 하고 나서 GET요청으로 메인페이지 요청

0

234

2

GitHub Collaborator 초대 관련

0

256

2

Window에서 Vue.js 설정

0

321

2

(솔루션 수정)'tsyringe' Error: TypeInfo not known for "클래스명"

0

713

2

collaboator로 초대받을 수 있을까요??

0

283

2

given 부분이 길어질 때 어떻게 처리하면 좋을까요?

0

318

1

섹션9 프론트의 코드를 보고싶습니다,,,

0

423

1

Spring Security - defaultSuccessUrl 질문

0

625

1

강의 화면이 나오지 않습니다. 음성과 자막만 나와요

0

302

1

JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ

0

690

2

ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상

0

1179

2

섹션10 언제 나오나요?

0

484

1

CommentService에서 Repository를 호출하지 않는데도

0

342

1

Editor....를 활용한 패턴에 질문있습니다.

0

494

1

섹션9 vue

0

453

2