Skip to content

Commit

Permalink
test code
Browse files Browse the repository at this point in the history
  • Loading branch information
chs98412 committed Sep 29, 2023
1 parent 24e81a3 commit f413fcf
Show file tree
Hide file tree
Showing 13 changed files with 381 additions and 105 deletions.
5 changes: 3 additions & 2 deletions src/main/java/com/HappyScrolls/config/JwtRequestFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
String token;
try {
token = ((HttpServletRequest) request).getHeader("Authorization").split(" ")[1];

System.out.println(token);
} catch (Exception e) {
throw new UserNotFoundException("user not found");
}
Expand All @@ -51,9 +51,10 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse

System.out.println(email);
Member member = memberService.memberFind(email);

System.out.println(member);

Authentication auth = getAuthentication(member);
System.out.println("@#"+auth);
SecurityContextHolder.getContext().setAuthentication(auth);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public WebSecurityCustomizer webSecurityCustomizer(){
return web -> {
web.ignoring()
.antMatchers(
"/article/**","/actuator/**"
"/actuator/**"

);

Expand Down
20 changes: 4 additions & 16 deletions src/main/java/com/HappyScrolls/controller/ArticleController.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,6 @@ public ResponseEntity testAPI() {
return ResponseEntity.ok(null);
}

// @GetMapping("/all")
// public ResponseEntity retrieveAllArticle() {
// List<ArticleDTO.ListResponse> response = articleService.articleRetrieveAll();
// return new ResponseEntity(response, HttpStatus.ACCEPTED);
// }

@ApiOperation(value = "모든 게시글 페이징 조회")
@GetMapping("/paging")
Expand All @@ -60,19 +55,11 @@ public ResponseEntity<List<ArticleDTO.ListResponse>> retrieveAllArticlePagewithZ
return ResponseEntity.ok(toResponseDtoList(response));
}

// @ApiOperation(value = "모든 게시글 커버링 인덱스")
// @GetMapping("/coveringaging")
// public ResponseEntity retrieveAllArticlePagewithCoveringIndex(@RequestParam Integer page, @RequestParam Integer limit) {
// List<Article> response = articleService.articleRetrievePagingWithCoveringIndex(page,limit);
//
//
// return new ResponseEntity(toResponseDtoList(response), HttpStatus.ACCEPTED);
//
// }

@ApiOperation(value = "게시글 id로 단건 조회")
@GetMapping("")
public ResponseEntity<ArticleDTO.DetailResponse> retrieveArticle(@RequestParam Long id) {
public ResponseEntity<ArticleDTO.DetailResponse> retrieveArticle(@AuthenticationPrincipal Member member, @RequestParam Long id) {

System.out.println("!!!!!!!!!@@@@"+member);
Article response = articleService.articleRetrieve(id);
viewCountService.viewCountIncrease(id);
return ResponseEntity.ok(toResponseDto(response));
Expand Down Expand Up @@ -101,6 +88,7 @@ public ResponseEntity<List<ArticleDTO.ListResponse>> retrieveUserArticle(@Reques
@ApiOperation(value = "게시글 작성")
@PostMapping("")
public ResponseEntity<Long> createArticle(@AuthenticationPrincipal Member member, @RequestBody ArticleDTO.Request request) {
System.out.println("!!!!"+member+member.getEmail());
Long response = articleService.articleCreate(member,request);
return ResponseEntity.ok(response);
}
Expand Down

This file was deleted.

1 change: 1 addition & 0 deletions src/main/java/com/HappyScrolls/service/ArticleService.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ public Long articleCreate(Member member, ArticleDTO.Request request) {



@Transactional()
public Article articleRetrieve(Long id) {
Article article = articleRepository.findById(id).orElseThrow(()-> new NoSuchElementException(String.format("article[%s] 게시글을 찾을 수 없습니다", id))); //%s?
List<TagDTO.Response> tags = tagService.tagsRetrieve(article);
Expand Down
155 changes: 92 additions & 63 deletions src/test/java/com/HappyScrolls/acceptance/ArticleTest.java
Original file line number Diff line number Diff line change
@@ -1,41 +1,25 @@
package com.HappyScrolls.acceptance;

import com.HappyScrolls.config.JwtRequestFilter;
import com.HappyScrolls.config.JwtTokenUtil;
import com.HappyScrolls.controller.ControllerTest;
import com.HappyScrolls.dto.ArticleDTO;
import com.HappyScrolls.dto.TagDTO;
import com.HappyScrolls.entity.Article;
import com.HappyScrolls.entity.Member;
import com.HappyScrolls.repository.ArticleRepository;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.http.MediaType;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.WebApplicationContext;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.springframework.security.test.web.reactive.server.SecurityMockServerConfigurers.csrf;
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

public class ArticleTest extends BaseIntegrationTest {
Expand All @@ -50,78 +34,123 @@ public class ArticleTest extends BaseIntegrationTest {
private Setup setup;
@BeforeEach
public void setup() {
this.id=setup.saveArticle();
setup.setdata();
this.tk = setup.tk();
}

@Autowired
private ArticleRepository articleRepository;


// @BeforeEach
// void setup() {
// tk= jwtTokenUtil.generateToken("asd","1","qwe","awdwad");
// System.out.println(tk);
//
// Member member = Member.builder().nickname("ㅁㅈㅇㅁㅈㅇ").email("gmail").thumbnail("Awd").point(123).build();
// when(jwtRequestFilter.getAuthentication(any())).thenReturn(new UsernamePasswordAuthenticationToken(member, "",
// Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"))));
// }


// @Test
// void retrieveAllArticlePagewithZeroOffset() throws Exception{
//
// List<Article> res = new ArrayList<>();
//
//
// when(articleService.articleRetrievePagingWithZeroOffset(10l,10)).thenReturn(res);
// ResultActions resultActions = mockMvc.perform(get("/article/zeropaging?lastindex=10&limit=10") .header("Authorization","Bearer "+tk));
//
// verify(articleService).articleRetrievePagingWithZeroOffset( 10l,10);
//
// resultActions.andExpect(status().isOk())
// .andDo(print());
// }
//태그랑 페이징 아직 안함!

@Test
public void 유저생성() throws Exception {

@Transactional
public void 게시글생성() throws Exception {
List<TagDTO.Request> tags = new ArrayList<>();
tags.add(new TagDTO.Request("awd"));
ArticleDTO.Request request = ArticleDTO.Request.builder().body("awd").tags(tags).build();

//when
ResultActions resultActions = mockMvc.perform(get("/article?id="+id.toString())
.header("Authorization","Bearer "+"Awd")
.accept(MediaType.APPLICATION_JSON))
.andDo(print());
ResultActions resultActions = mockMvc.perform(post("/article")
.header("Authorization", "Bearer " + tk)
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)));


//then
resultActions
.andExpect(status().isOk());


mockMvc.perform(get("/article?id=2")
.header("Authorization","Bearer "+tk)
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(2))
.andExpect(jsonPath("$.body").value("awd"));
}

// .contentType(MediaType.APPLICATION_JSON)
// .content(objectMapper.writeValueAsString(request)))

@Test
public void test() throws Exception {

ArticleDTO.Request request = ArticleDTO.Request.builder().title("qwer").body("!@3").build();
//when
ResultActions resultActions = mockMvc.perform(get("/notification")
ResultActions resultActions = mockMvc.perform(get("/article?id=1")
.header("Authorization","Bearer "+tk)
.accept(MediaType.APPLICATION_JSON))
.andDo(print());


//then
resultActions
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(1));

}


@Test
public void 특정_유저가_작성한_모든_게시글_조회() throws Exception {

ResultActions resultActions = mockMvc.perform(get("/article/[email protected]")
.header("Authorization","Bearer "+tk)
.accept(MediaType.APPLICATION_JSON))
.andDo(print());


//then
resultActions
.andExpect(status().isOk())
.andExpect(jsonPath("$[0].id").value(1));

}




@Test
@Transactional
public void 게시글수정() throws Exception {

ArticleDTO.Edit request = ArticleDTO.Edit.builder().id(1l).body("change").build();

//when
ResultActions resultActions = mockMvc.perform(put("/article")
.header("Authorization", "Bearer " + tk)
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andDo(print());


//then
resultActions
.andExpect(status().isOk());


List<Article> articles = articleRepository.findAll();
for (Article article : articles) {
System.out.println(article);
System.out.println(article.getMember());
}
mockMvc.perform(get("/article?id=1")
.header("Authorization","Bearer "+tk)
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(jsonPath("$.body").value("change")).andDo(print());
}

@Test
@Transactional
public void 게시글삭제() throws Exception {


//when
ResultActions resultActions = mockMvc.perform(delete("/article?id=1")
.header("Authorization", "Bearer " + tk));


//then
resultActions
.andExpect(status().isOk());

//??
// mockMvc.perform(get("/article?id=1")
// .header("Authorization","Bearer "+tk)
// .accept(MediaType.APPLICATION_JSON))
// .andExpect(status().isNotFound())
// .andDo(print());
}
}
93 changes: 93 additions & 0 deletions src/test/java/com/HappyScrolls/acceptance/BuyTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package com.HappyScrolls.acceptance;

import com.HappyScrolls.dto.ArticleDTO;
import com.HappyScrolls.dto.BuyDTO;
import com.HappyScrolls.dto.TagDTO;
import com.HappyScrolls.entity.Article;
import com.HappyScrolls.repository.ArticleRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

public class BuyTest extends BaseIntegrationTest {


private Long id;
private String tk="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ0ZXN0IiwiaWF0IjoxNjkzMTE0MDc3LCJleHAiOjE2OTMxNTAwNzcsInN1YiI6ImNoczk4NDEyQG5hdmVyLmNvbSIsIm5pY2tuYW1lIjoi7LWc7ZiB7IicIiwidWlkIjoiY2hzOTg0MTJAbmF2ZXIuY29tIiwicGxhdGZvcm0iOiJrYWthbyJ9.QdxfLJfNc4ueJ4oIkUB95Cuki8qTP4jV7AKlCqJRxRk";

@Autowired
private Setup setup;
@BeforeEach
public void setup() {
setup.setdata();
this.tk = setup.tk();
}

//태그랑 페이징 아직 안함!

@Test
@Transactional
public void 게시글생성() throws Exception {
List<Long> cartList = new ArrayList<>();
cartList.add(1L);
cartList.add(2L);
BuyDTO.RequestCart request = BuyDTO.RequestCart.builder().cart(cartList).build();
//when
ResultActions resultActions = mockMvc.perform(post("/buy")
.header("Authorization", "Bearer " + tk)
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)));


//then
resultActions
.andExpect(status().isOk());


mockMvc.perform(get("/buy/user")
.header("Authorization", "Bearer " + tk)
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(print());
// .andExpect(jsonPath("$.body").value("awd"));
}




@Test
public void 특정_유저가_작성한_모든_게시글_조회() throws Exception {

ResultActions resultActions = mockMvc.perform(get("/buy/user")
.header("Authorization","Bearer "+tk)
.accept(MediaType.APPLICATION_JSON))
.andDo(print());


//then
resultActions
.andExpect(status().isOk())
.andExpect(jsonPath("$[0].id").value(1))
.andDo(print());

}





}
Loading

0 comments on commit f413fcf

Please sign in to comment.