나는 얼마전 스프링 시큐리티를 설치하고, 유저를 만들어서 진행을 한적이 있었다,. 그리고 오늘 프로잭트를 실행시켰다. 하지만 결과는 참담했다. 모든 테스트가 틀렸다고 나온다는 것을 알 수 있었다. 이상했다. 나는 분명... 한적이 없는데.. 알고보니 스프링 시큐리티 자체에서 유저를 만들고, 그것을 모든 테스트 코드에 적용하기 때문이라고 했다. 그래서 나온 상태코드가 403 (권한이 없다)가 나온것도 그 때문인것 같다. 그러면 어떻게 이 문제를 해결해야 될까? @Configuration @EnableWebSecurity public class SpringConfig extends WebSecurityConfigurerAdapter{ } 이걸 추가하게 되면 스프링 시큐리티에서 적용되는 시큐리티는 더 이상 적..
원래는 스프링 시큐리티에 대해 공부하고 하려다가 너무 오래 걸릴 것 같아 생략하고 적용하는것부터 진행하려고 한다. 아무튼 스프링 시큐리티를 적용하는 이유는 게시글을 만든 유저만 수정이 가능하게 만들기 위해 적용하는걸로 알고 있다. 아무튼... 적용해보자. org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure 2.1.10.RELEASE 이것을 추가해줘야 스프링 시큐리티를 사용할 수 있게 된다. (이글은 백기선님 강의를 보고 작성한 글이기때문에 start.security를 사용하지 되지 않습니다.) 생각해보니 vo를 만들지 않았다. @Getter @Setter @Builder @NoArgsConstructor @AllArgs..
이번에는 강의를 듣기전에 먼저 작성하기로 해보자. 이벤트 수정의 경우는 1. 수정이 정상적으로 실행이 되었을때 : 200 2. 수정이 잘못된 경우 - 비어있는 객체가 들어있을 경우. - 잘못된 객체가 들어올 경우.. - 권한이 없는 사람이 접근했을 경우 - 페이지가 존재하지 않는 경우 이렇게 들 수 있는데... 솔직히 2-3은 지금당장은 하지 못할 것 같다. 왜냐하면 유저를 고려하지 않았기 때문이다. 테스트 코드를 작성해보자. @Test void update_event() throws Exception { Delivery delivery = generateEvent(100); DeliveryDto deliveryDto = modelMapper.map(delivery, DeliveryDto.class); ..
곧 회사일이 바빠진다고 한다. 바빠지기 전에 열심히 공부 하자! 간단하게 테스트 부터 작성해보자. @Test public void create_event() throws Exception { Delivery delivery = generateEvent(100); this.mockMvc.perform(get("/api/delivery/{id}",delivery.getId())) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("id").exists()) .andExpect(jsonPath("_links.self").exists()) .andExpect(jsonPath("_links.profile").exists()); } 이것을 실행하면 어..
먼저 테스트 코드부터 작성하자. @Test void eventQuery() { IntStream.range(0, 30) .forEach(this::generateEvent); } private void generateEvent(int index) { Delivery delivery = Delivery.builder() .item("Delivery" + index) .user("klom") .build(); deliveryRepository.save(delivery); } 이렇게 작성하면 나는 0번부터 30번까지의 이벤트를 생성하는 로직이다. 그러면 생각해야 될것이 이제 이것들을 테스트를 해야 된다. 최종 코드는 다음과 같다. @Test void eventQuery() throws Exception { I..
* 여기서 인덱스란? 메인 페이지를 뜻합니다. 메인페이지를 위한 테스트 코드를 작성하자. @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK) @AutoConfigureMockMvc @AutoConfigureRestDocs @Import(RestDocsConfiguration.class) @ActiveProfiles("test") public class IndexControllerTest { @Autowired private MockMvc mockMvc; @Test void index() throws Exception { mockMvc.perform(get("/delivery")) .andDo(print()) .andExpect(sta..
람다는 왜 만들어졌을까? 람다를 사용하게 되면 굉장히 코드가 단순해진다는 것을 느낄 수 있다. 런타임시에는 익명 함수로 사용하든 람다식으로 고쳐서 사용하든 상관없다는 뜻이 된다. 최대한 간결하게 만들어서 실수를 방지 하는것이 좋지 않을까? 예를 들어, Hello hello = new Hello() { @Override public void write(String writer) { System.out.println(writer); } }; 다음과 같은 익명 함수가 존재한다고 해보자. 이것을 람다로 사용하게 된다면, Hello hello = writer -> { System.out.println(writer); }; 단, 한줄로 코드가 변경되었다. 여기서 의문인것이 어노테이션, enum,제네릭과 달리 이전 ..