PageRenderTime 71ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 0ms

/tm-web/src/test/java/ru/tsc/kirillov/tm/integration/rest/ProjectRestEndpointTest.java

https://gitlab.com/TSK-Java/task-manager-78
Java | 187 lines | 163 code | 24 blank | 0 comment | 4 complexity | 0f2f80a2fbf66d353d41a251b95c10a2 MD5 | raw file
  1. package ru.tsc.kirillov.tm.integration.rest;
  2. import org.jetbrains.annotations.NotNull;
  3. import org.jetbrains.annotations.Nullable;
  4. import org.junit.*;
  5. import org.junit.experimental.categories.Category;
  6. import org.springframework.http.*;
  7. import org.springframework.web.client.RestTemplate;
  8. import ru.tsc.kirillov.tm.dto.model.ProjectDto;
  9. import ru.tsc.kirillov.tm.dto.model.Result;
  10. import ru.tsc.kirillov.tm.marker.IntegrationCategory;
  11. import java.net.HttpCookie;
  12. import java.util.Arrays;
  13. import java.util.Collections;
  14. import java.util.List;
  15. import java.util.UUID;
  16. @Category(IntegrationCategory.class)
  17. public class ProjectRestEndpointTest {
  18. @Nullable
  19. private static String sessionId;
  20. @NotNull
  21. private static final String PROJECT_URL = "http://localhost:8080/api/project/";
  22. @NotNull
  23. private static final HttpHeaders header = new HttpHeaders();
  24. @NotNull
  25. private final ProjectDto project = new ProjectDto("id", "Name");
  26. @BeforeClass
  27. public static void beforeClass() {
  28. @NotNull final RestTemplate restTemplate = new RestTemplate();
  29. @NotNull final String url = "http://localhost:8080/api/auth/login?login=test&password=test";
  30. header.setContentType(MediaType.APPLICATION_JSON);
  31. @NotNull final ResponseEntity<Result> response =
  32. restTemplate.postForEntity(url, new HttpEntity<>(""), Result.class);
  33. Assert.assertEquals(200, response.getStatusCodeValue());
  34. Assert.assertNotNull(response.getBody());
  35. Assert.assertTrue(response.getBody().getSuccess());
  36. @NotNull final HttpHeaders headersResponse = response.getHeaders();
  37. @NotNull final List<HttpCookie> cookies = HttpCookie.parse(
  38. headersResponse.getFirst(HttpHeaders.SET_COOKIE)
  39. );
  40. sessionId = cookies.stream()
  41. .filter(item -> "JSESSIONID".equals(item.getName()))
  42. .findFirst().get().getValue();
  43. Assert.assertNotNull(sessionId);
  44. header.put(HttpHeaders.COOKIE, Arrays.asList("JSESSIONID=" + sessionId));
  45. }
  46. private static <T> ResponseEntity<T> sendRequest(
  47. @NotNull final String url,
  48. @NotNull final HttpMethod method,
  49. @NotNull final HttpEntity httpEntity,
  50. @NotNull final Class<T> responseType
  51. ) {
  52. @NotNull final RestTemplate restTemplate = new RestTemplate();
  53. return restTemplate.exchange(url, method, httpEntity, responseType);
  54. }
  55. @Before
  56. public void initTest() {
  57. @NotNull final String url = PROJECT_URL + "save/";
  58. sendRequest(url, HttpMethod.POST, new HttpEntity<>(project, header), ProjectDto.class);
  59. }
  60. @After
  61. public void clean() {
  62. @NotNull final String url = PROJECT_URL + "clear";
  63. sendRequest(url, HttpMethod.DELETE, new HttpEntity<>(header), ProjectDto.class);
  64. }
  65. @AfterClass
  66. public static void logout() {
  67. @NotNull final String logoutUrl = "http://localhost:8080/api/auth/logout";
  68. sendRequest(logoutUrl, HttpMethod.POST, new HttpEntity<>(header), Result.class);
  69. }
  70. private long count() {
  71. @NotNull final String logoutUrl = PROJECT_URL + "count";
  72. @NotNull final ResponseEntity<Long> response =
  73. sendRequest(logoutUrl, HttpMethod.GET, new HttpEntity<>(header), Long.class);
  74. if (response.getStatusCode() != HttpStatus.OK) return 0;
  75. @Nullable Long result = response.getBody();
  76. if (result == null) return 0;
  77. return result;
  78. }
  79. @Test
  80. public void findAllTest() {
  81. @NotNull final String url = PROJECT_URL + "findAll/";
  82. @NotNull final ResponseEntity<List> response =
  83. sendRequest(url, HttpMethod.GET, new HttpEntity<>(header), List.class);
  84. Assert.assertEquals(response.getStatusCode(), HttpStatus.OK);
  85. @Nullable final List projectList = response.getBody();
  86. Assert.assertNotNull(projectList);
  87. Assert.assertEquals(1, projectList.size());
  88. }
  89. @Test
  90. public void findById() {
  91. @NotNull final String url = PROJECT_URL + "findById/" + project.getId();
  92. @NotNull final ResponseEntity<ProjectDto> response =
  93. sendRequest(url, HttpMethod.GET, new HttpEntity<>(header), ProjectDto.class);
  94. Assert.assertEquals(response.getStatusCode(), HttpStatus.OK);
  95. @Nullable final ProjectDto projectFind = response.getBody();
  96. Assert.assertNotNull(projectFind);
  97. Assert.assertEquals(project.getId(), projectFind.getId());
  98. }
  99. @Test
  100. public void existsById() {
  101. @NotNull String url = PROJECT_URL + "existsById/" + project.getId();
  102. @NotNull ResponseEntity<Boolean> response =
  103. sendRequest(url, HttpMethod.GET, new HttpEntity<>(header), Boolean.class);
  104. Assert.assertEquals(response.getStatusCode(), HttpStatus.OK);
  105. @Nullable Boolean result = response.getBody();
  106. Assert.assertNotNull(result);
  107. Assert.assertTrue(result);
  108. url = PROJECT_URL + "existsById/" + UUID.randomUUID();
  109. response = sendRequest(url, HttpMethod.GET, new HttpEntity<>(header), Boolean.class);
  110. Assert.assertEquals(response.getStatusCode(), HttpStatus.OK);
  111. result = response.getBody();
  112. Assert.assertNotNull(result);
  113. Assert.assertFalse(result);
  114. }
  115. @Test
  116. public void save() {
  117. @NotNull final String url = PROJECT_URL + "save/";
  118. @NotNull final ProjectDto projectSave = new ProjectDto("id", "Name");
  119. @NotNull final ResponseEntity<ProjectDto> response =
  120. sendRequest(url, HttpMethod.POST, new HttpEntity<>(projectSave, header), ProjectDto.class);
  121. Assert.assertEquals(response.getStatusCode(), HttpStatus.OK);
  122. @Nullable final ProjectDto projectResult = response.getBody();
  123. Assert.assertNotNull(projectResult);
  124. Assert.assertEquals(projectResult.getId(), projectSave.getId());
  125. }
  126. @Test
  127. public void delete() {
  128. Assert.assertEquals(1, count());
  129. @NotNull final String url = PROJECT_URL + "delete/";
  130. sendRequest(url, HttpMethod.DELETE, new HttpEntity<>(project, header), ProjectDto.class);
  131. Assert.assertEquals(0, count());
  132. }
  133. @Test
  134. public void deleteAll() {
  135. Assert.assertEquals(1, count());
  136. @NotNull final String url = PROJECT_URL + "deleteAll/";
  137. sendRequest(
  138. url,
  139. HttpMethod.DELETE,
  140. new HttpEntity<>(Collections.singletonList(project), header),
  141. ProjectDto.class
  142. );
  143. Assert.assertEquals(0, count());
  144. }
  145. @Test
  146. public void clear() {
  147. Assert.assertEquals(1, count());
  148. @NotNull final String url = PROJECT_URL + "clear";
  149. sendRequest(url, HttpMethod.DELETE, new HttpEntity<>(header), ProjectDto.class);
  150. Assert.assertEquals(0, count());
  151. }
  152. @Test
  153. public void deleteById() {
  154. Assert.assertEquals(1, count());
  155. @NotNull final String url = PROJECT_URL + "deleteById/" + project.getId();
  156. sendRequest(url, HttpMethod.DELETE, new HttpEntity<>(header), ProjectDto.class);
  157. Assert.assertEquals(0, count());
  158. }
  159. @Test
  160. public void countTest() {
  161. Assert.assertEquals(1, count());
  162. }
  163. }