inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

스프링부트 테스트에서 @AuthenticationPrincipal UserDetails userDetails 테스트

미해결

컨트롤러 테스트에서 @AuthenticationPrincipal UserDetails userDetails에 해당하는 부분을 테스트하려고 하는데 계속 실패해서 질문드립니다 ㅠㅠ // 회원 탈퇴 @DeleteMapping("/{memberId}") @Tag(name = "member") @Operation(summary = "삭제 API", description = "유저를 삭제하는 API입니다.") @PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')") public String remove(@PathVariable Long memberId, @AuthenticationPrincipal UserDetails userDetails) { try { String email = userDetails.getUsername(); log.info("email : " + email); String remove = memberService.removeUser(memberId, email); return remove; } catch (Exception e) { return "회원탈퇴 실패했습니다. :" + e.getMessage(); } } 이런식으로 프론트가 헤더에 accessToken을 보내주면 검증을 한 후 @AuthenticationPrincipal UserDetails userDetails이거로 정보를 가져와서 권한과 해당 유저인지 체크 후 처리하는 로직을 구성하고 있는데 이거를 테스트할 때 막혔습니다. 일단 구글에서 검색해서 나온 방법들을 다 사용해도 실패가 뜨네요. ↓구글에서 나온 방법 적용 @Retention(RetentionPolicy.RUNTIME) @WithSecurityContext(factory = WithAuthUserSecurityContextFactory.class) public @interface WithAuthUser { String user() default "test@test.com"; String role() default "USER"; } public class WithAuthUserSecurityContextFactory implements WithSecurityContextFactory<WithAuthUser> { @Override public SecurityContext createSecurityContext(WithAuthUser annotation) { String email = annotation.user(); String role = annotation.role(); MemberEntity member = MemberEntity.builder() .memberId(1L) .email(email) .memberPw("dudtjq8990!") .memberName("테스터") .memberRole(Role.valueOf(role)) .nickName("테스터") .memberPoint(0) .provider(null) .providerId(null) .address(AddressEntity.builder() .memberAddr("서울시 강남구") .memberZipCode("103-332") .memberAddrDetail("102") .build()) .build(); UserDetails userDetails = new PrincipalDetails(member); Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); SecurityContext context = SecurityContextHolder.createEmptyContext(); context.setAuthentication(authentication); return context; } } @Test @WithAuthUser void remove() throws Exception { Long id = 1L; String email = "test@test.com"; mockMvc.perform(delete("/api/v1/users/{memberId}", id) .contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); verify(memberService).removeUser(id, email); } org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: No primary or single unique constructor found for interface org.springframework.security .core.userdetails.UserDetails 이런 오류가 발생합니다. 찾아보니까 UserDetails를 구현한 클래스 PrincipalDetails에 생성자가 없어서 나오는 오류라고 하는데 문제는 해당 클래스에 기본 생성자가 있다는 것입니다. 생성자가 있는데 계속 없다고 에러가 발생합니다. @ㅇNoArgsConstructorㅇ

  • 스프링부트
  • junit5
  • 테스트
  • controller
유요한 댓글 1 좋아요 0 조회수 1160

accounts/url 질의

미해결

장고 설계철학으로 시작하는 파이썬 장고 입문

화면과같이 include 부분 강좌와 다르게 저절로 세팅이 되고 서버 실행하면 계속 오류가나는데 어떻게해야하나요ㅜㅜ

  • python
  • django
동휘김 댓글 2 좋아요 0 조회수 260

수정이라는 작업을 할 때 PUT을 더 사용하는 이유가 있을까요?

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

HTTP 메서드에 처음 공부할 때 수정의 경우에는 PUT과 PATCH를 사용한다고 배웠는데요. PUT의 경우에는 통째로 갈아끼우는 방식의 갱신이고 PATCH의 경우에는 부분 수정이 가능하다고 배웠습니다. 이 강의에서는 USER의 정보중에 이름만받고 있어서(PUT은 전체 필드를 명시해주어야 한다고 배웠습니다.) PATCH가 더 적당한 방식이 아닌가라는 생각이 들었습니다. PATCH가 아닌 PUTMapping을 사용하신 이유가 있으실까요? 그리고 이와 관련된 블로그 글들이 많은데 저마다 내리는 결론이 달라서 조금 혼란스럽습니다. 강사님의 생각을 듣고 싶습니다. 좋은 강의 만들어주신 태현님을 존중하고 존경하며 이만 글 줄이겠습니다!

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
wisehero 댓글 1 좋아요 4 조회수 2463

사용되는 아키텍처에 대해

미해결

Practical Testing: 실용적인 테스트 가이드

학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요! 먼저 유사한 질문이 있었는지 검색해 보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 선생님 강의 잘보고 있습니다. 질문드리고 싶은 부분은 강의에서 사용되는 아키텍처에 대한 것입니다. 레이어드 아키텍처라는것은 이해했지만, 패키지 구조가 생소해서 어떻게 구성되는지는 이해하기 어려운것 같습니다. 제가 아는 방식은 컨트롤러, 서비스, 리파짓토리, 도메인 패키지로 단순하게 작성하는 방법인데, 여기서 사용된 패키지 구성방식과 관련된 키워드나 레퍼런스를 얻을 수 있을가요?

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
gukin.dev 댓글 2 좋아요 0 조회수 580

@ManyToOne 매핑 질문입니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

게시글과 댓글을 매핑 하려고 하는데 게시글에 어떤 댓글이 달렸는지 조회 하기 위해 게시글 -> 댓글 OneToMany 단방향 매핑을 하려고 했더니, @OneToMany는 지양하라고 해서 댓글에 @ManyToOne 매핑을 하려고 했는데요. 이러면 댓글->게시글 단방향이 되는 것 아닌가요? 게시글에 어떤 댓글이 있는지 확인을 하고 싶을 뿐인데 ManyToOne을 지양하는 이럴 땐 어떻게 해야하는지 궁금합니다 .. 매핑이 아니라 차라리 int communitySeq 를 멤버 변수로 갖도록 하고 jpql에서 join문을 통해 데이터를 가져오는 것이 맞을까요??

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 300

OpenJDK 64-bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended경고가 뜹니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) A. 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) A. 아니요 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) A. 네 [질문 내용] 테스트 코드 실행을 하면 OpenJDK 64-bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 이 경고가 계속 뜹니다. https://www.inflearn.com/questions/917150/openjdk-64-bit-server-vm-warning 찾아보면서 이 답변을 따라해도 로그가 뜨지 않고 경고가 뜨는데 어떻게 해야하나요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
jaemoon 댓글 4 좋아요 0 조회수 13555

접근 제어자 문제 풀이

해결됨

김영한의 실전 자바 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 문제 풀이를 다음 날 새로 만들어서 풀어보니까 조금 다른 부분이 생겼는데 1. 본인 2. 강의 각 배열의 총 가격 값만 더하는 거라면 1번처럼 하는 게 좋아 보이는데 Item item = items[i];를 추가하신 이유와 어떤 차이점이 있는지 궁금해요

  • java
  • 객체지향
ᄒᄉ 댓글 1 좋아요 1 조회수 271

어떻게 MemberForm 클래스가 선택이 되는지 과정이 궁금합니다.

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 강의 잘 듣고 있습니다. 재밌게 강의를 듣던 중 궁금증이 생겨 이렇게 질문 드리게 되었습니다. 7분40초~7분50초 쯤 설명에 의하면 "우리가 웹에서 입력한 name값이 MemberForm의 name 필드로 전달이 된다"라는 식으로 말씀을 하셨는데, 어떻게 Member 클래스가 아닌 MemberForm 클래스의 name을 찾아가게 되는 건가요?? 제가 워낙에 초보라서 그런지, 코드 상에서 "Member의 name이 아닌 MemberForm의 name을 찾아가도록 하는" 코드도 발견을 못하겠습니다.. 또한 다른 분들의 말씀에 의해서 질문을 드리고 싶은데, MemberForm 클래스에서 setName() 메서드가 사용이 안되는 것 같은데, 7분55초~ 8분 쯤의 설명으로는 setName() 메서드를 사용하시는 것처럼 말씀하시더라구요. 이 역시도 제가 잘 몰라서 그러는데 실제로 setName() 메서드가 사용되는 건가요?? 자세한 설명 부탁드리겠습니다. 감사합니다:-)

  • java
  • spring
  • mvc
  • spring-boot
김수환 댓글 1 좋아요 1 조회수 398

button과 checkbox 조건문과 함수

해결됨

5분빨리 퇴근하자! 파이썬 데이터 분석, 시각화, 웹 대시보드 제작하기

버튼과 체크박스 모두 조건문을 사용할 때는 바로 아래에 텍스트가 출력되는데, 함수를 사용하면 대시보드 맨 위에 텍스트가 호출되는 것은 왜 그런건가요?(맨 위에 텍스트가 호출되어 출력된 부분이 전부 다 한 칸 씩 밀리게 됨)

  • python
  • pandas
  • seaborn
  • plotly
  • matplotlib
  • data-visualization
  • streamlit
TEW_교육관리자 댓글 1 좋아요 0 조회수 329

scanner 두번째 문제(홀수짝수) 질문드립니다!

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 홀수 짝수 구하는 문제에서 선생님께서 말씀하신 삼항연산자로 구하는 거 기억 더듬으며 해봤는데 값은 나오거든요.. 혹시 잘못되거나 이상한 점이 없는지 질문드립니다!!

  • java
  • 객체지향
kangmh1021 댓글 2 좋아요 0 조회수 336

제가 이해한 것이 맞느지 확인 부탁드립니당

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

이번에 만든 조회하는 api는 리스트로 반환해야 하기 때문ㅇ JSON이어야 하고 그렇기에 함수 반환 값이 List<UserResponse>인건가요? 그리고 등록 api에서 만든 users리스트 수만큼 for문 돌려서 진정한 결과 리스트(id도 포함되어있는) reponses를 만들어낸건가요..?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
ghdtldus03a 댓글 1 좋아요 1 조회수 423

파이썬에서의 재귀

해결됨

코딩테스트 [ ALL IN ONE ]

글에 두서가 없어도 양해 바랍니다 이 수업 수강 이전에 코딩 문제를 풀 때 파이썬으로 재귀함수를 사용했던 적이 있습니다. 그때 알게 된것이 파이썬의 재귀함수에는 기본적으로 깊이의 제한이 있다는 것입니다. sys.recursionlimit()으로 확인해보니 재귀호출을 1000이상 못하도록 값이 제한되어 있고 이 값을 늘려서 사용하는것은 별로 추천되는 방법이 아닌걸로 알고 있습니다. C언어 사용할때에는 속도면에서 제한도 없고 파이썬보다 속도도 월등하다보니 재귀를 자주 사용했었는데 파이썬에서 재귀함수로 풀어야 하는 경우가 있을까요?

  • python
  • 코딩-테스트
  • 알고리즘
댓글 2 좋아요 1 조회수 361

annot 수치 표현

해결됨

5분빨리 퇴근하자! 파이썬 데이터 분석, 시각화, 웹 대시보드 제작하기

age_bin_list = np.arange(10, 80, 10) df['age_bin'] = pd.cut(df['age'], bins = age_bin_list) pivot_df = df.pivot_table( index = 'age_bin', columns = 'region', values = 'charges', aggfunc = 'median' # 각 구간에 해당하는 값을 중간값을 사용하겠다. ) pivot_df # 각각의 값들에 대해 크기를 가늠할 수 있게끔 시각화(주로 색상)하는 방법 # 2D 형식으로 준비된 데이터를 Seaborn heatmap으로 시각화 # annot 인자를 통해 각 셀의 값 표현 가능 fig, ax = plt.subplots() sns.heatmap(pivot_df, ax = ax, annot = True) 코드 똑같이 따라했는데 왜 저는 표에 수치가 다 표현이 안되는 건가요?

  • python
  • pandas
  • seaborn
  • plotly
  • matplotlib
  • data-visualization
  • streamlit
TEW_교육관리자 댓글 1 좋아요 0 조회수 362

파라미터로 받은 form을 어떻게 엔터티로 반환하는지 모르겠어요...

해결됨

실전! 스프링 데이터 JPA

현재 실전 데이터 JPA수강 중인데요.. 독학 중이라 토이프로젝트로 연습하는데 오늘까지 배운 JpaRepository 상속과 관련하여 회원가입 기능 구현하려 하려는데 어디 물어볼곳이 없고 뒤죽박죽이라 정리가 필요해서 장문의 질문을 남깁니다.. 일단 제가 머릿속에 정리가 안되는 것은 영한선생님께서 최대한 컨트롤러에 엔터티를 노출하지 말고 비지니스 로직을 서비스에서 최대한 구현하라고 해서 따라하는 중인데 Member를 기준으로 파라미터를 받을 MemberForm을 생성했습니다. 여기서 질문이.. MemberForm을 생성했으면 MemberDto는 따로 생성 안해도 될까요? 컨트롤러를 그림과 같이 작성하였고 서비스는 아래와같이 하였는데... 뭔가 서비스에서 엔터티를 직접 만지니까 찝찝한데 실무에서도 이렇게 하는지 궁금합니다..

  • java
  • spring
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 291

객체 질문

미해결

김영한의 실전 자바 - 기본편

수업 내용을 토대로 질문하겠습니다 Student student1 = new Student() 에서 객체는 student1 이 아닌거죠? student1 은 단순히 변수인거고 객체는 new Student() 라고 알면 될까요?

  • java
  • 객체지향
ghuhan18 댓글 1 좋아요 0 조회수 398

안녕하세요 재고 테이블에 대해서 질문 있습니다.!

해결됨

Practical Testing: 실용적인 테스트 가이드

안녕하세요 멘토님 강의 잘듣고 있습니다! 제가 테이블을 언제 만들어야 하고 합쳐야 되는지에 대해서 잘 모르겠습니다. 혹시 검색 키워드와 상품테이블에서 재고를 관리하지 않고 따로 테이블을 만든 이유가 있을까요 ?

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
qheogus55 댓글 2 좋아요 2 조회수 740

CBV, FormView(폼 뷰)에 대해 알아보기 질문

해결됨

실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍

안녕하세요 강사님 ㅎㅎ 현재 챕터도 이전과 같은 증상인데 어떻게 확인하면 좋을까요? Github snapshot: https://github.com/dimz119/learn-python-django/tree/form_view 에서 다운받아서 실행시켜도 제가 작성한 코드랑 똑같은 문제가 발생하는데 확인할수있는 방법이있을까요??

  • python
  • django
  • bootstrap
  • rest-api
  • drf
chicmania 댓글 1 좋아요 1 조회수 330

파이썬 이미지 크롤링이 안돼요..

미해결

url = " https://image.dcinside.com/viewimage.php?id=&no=24b0d769e1d32ca73de985fa11d02831f8aadc88aabcff47e8021605d37bf1436ebb78a575eb9e18042afbf9848bfd403905acb77b9ac250540b76e4781bf2 " # 헤더 추가 headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' , } # 이미지 다운로드 response = requests . get ( url , headers = headers ) print ( response . content ) img_data = BytesIO ( response . content ) # BytesIO 객체에서 이미지 열기 img = Image . open ( img_data ) # 이미지 저장 (optional) img . save ( "downloaded_image.jpg" ) response.content를 출력하면 b'' 이 값을 출력하게 되는데 원인을 잘 모르겠습니다.

  • python
  • 파이썬
  • 크롤링
  • crawling\
댓글 1 좋아요 1 조회수 674

PK를 외부로 노출하지 않고 게시물 수정/삭제?

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

는 어떻게 하는 것이 좋은 건가요? PK이자 글 번호인 boardSeq를 가지고 와서 수정과 삭제를 진행하고 있었는데, PK는 최대한 외부로 노출하지 않는 것이 좋다고 하여서 문득 생각이 들었습니다. PK Seq를 따로 두고 UniqueKey로 똑같이 AutoIncrement해서 생성하게 된다면 결국 무슨 차이인가 싶어서 아닌 거 같기도 하고... 어떤 식으로 처리 해야 되는지 궁금하여 질문 남기게 되었습니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 265

다대다 양방향관계를 풀어낼 때

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

회원 A테이블과 팀C 테이블의 다대다 양방향 관계를 풀기 위해 중간 테이블을 도입하여 A, B(중간테이블), C 와 같이 일대다/다대일 관계로 풀어낼 때 A와 C 양 쪽 모두 addTemMember와 같은 메소드를 만들어주고, 회원이 팀에 들어갈 때 A.addTeamMember와 C.addTeamMember()둘 다 호출해줘야 하는 게 맞나요? 다대다 양방향 관계를 풀 때 중간 테이블을 설정하는데 이것은 따로 외부에 노출할 필요 없이, 내부적으로 회원 A가 어떤 팀에 속해있는지, 팀C에 어떤 회원이 속해있는지 확인할 때만 사용하는 것이 맞나요?

  • java
  • jpa
댓글 1 좋아요 0 조회수 286

인기 태그

인프런 TOP Writers

주간 인기글