Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 295f3a8

Browse files
Security_part_11_3: add ClientControllerIT.java
1 parent 05f47ae commit 295f3a8

File tree

1 file changed

+143
-0
lines changed
  • Security_part_11_3/src/test/java/me/oldboy/integration/controllers/api_user_details_scenario

1 file changed

+143
-0
lines changed
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
package me.oldboy.integration.controllers.api_user_details_scenario;
2+
3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import lombok.SneakyThrows;
5+
import me.oldboy.config.test_data_source.TestContainerInit;
6+
import me.oldboy.dto.client_dto.ClientCreateDto;
7+
import me.oldboy.dto.client_dto.ClientReadDto;
8+
import me.oldboy.dto.details_dto.DetailsCreateDto;
9+
import me.oldboy.integration.annotation.IT;
10+
import me.oldboy.services.ClientService;
11+
import org.junit.jupiter.api.BeforeEach;
12+
import org.junit.jupiter.api.Test;
13+
import org.springframework.beans.factory.annotation.Autowired;
14+
import org.springframework.http.MediaType;
15+
import org.springframework.test.web.servlet.MockMvc;
16+
import org.springframework.test.web.servlet.MvcResult;
17+
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
18+
import org.springframework.web.context.WebApplicationContext;
19+
20+
import java.util.List;
21+
22+
import static me.oldboy.test_constant.TestConstantFields.*;
23+
import static org.assertj.core.api.Assertions.assertThat;
24+
import static org.junit.jupiter.api.Assertions.assertAll;
25+
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
26+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
27+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
28+
29+
@IT
30+
class ClientControllerIT extends TestContainerInit {
31+
32+
@Autowired
33+
private WebApplicationContext webApplicationContext;
34+
@Autowired
35+
private ClientService clientService;
36+
private MockMvc mockMvc;
37+
private ClientCreateDto testClientCreateDto, notValidClientCreateDto, existClientCreateDto;
38+
private DetailsCreateDto testDetailsCreateDto, notValidClientDetailsDto;
39+
private ObjectMapper objectMapper;
40+
41+
@BeforeEach
42+
void setUp(){
43+
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext)
44+
.apply(springSecurity())
45+
.build();
46+
47+
objectMapper = new ObjectMapper();
48+
49+
/* Валидные данные для сохранения при регистрации */
50+
testDetailsCreateDto = DetailsCreateDto.builder()
51+
.clientName(TEST_CLIENT_NAME)
52+
.clientSurName(TEST_CLIENT_SUR_NAME)
53+
.age(TEST_AGE)
54+
.build();
55+
testClientCreateDto = ClientCreateDto.builder()
56+
.email(TEST_EMAIL)
57+
.password(TEST_PASS)
58+
.details(testDetailsCreateDto)
59+
.build();
60+
existClientCreateDto = ClientCreateDto.builder()
61+
.email(EXIST_EMAIL)
62+
.password(TEST_PASS)
63+
.details(testDetailsCreateDto)
64+
.build();
65+
66+
/* НЕ валидные данные для проверки валидатора при регистрации */
67+
notValidClientDetailsDto = DetailsCreateDto.builder()
68+
.clientName("A")
69+
.clientSurName("A")
70+
.age(-5)
71+
.build();
72+
notValidClientCreateDto = ClientCreateDto.builder()
73+
.email("er")
74+
.password("1")
75+
.details(notValidClientDetailsDto)
76+
.build();
77+
}
78+
79+
@Test
80+
@SneakyThrows
81+
void registrationClient_ValidRegData_ShouldReturnOk_AndSavedClientDto_Test() {
82+
String requestBodyData = objectMapper.writeValueAsString(testClientCreateDto); // Подготовим данные для сохранения
83+
List<ClientReadDto> beforeSaveBase = clientService.findAll(); // Получим копию списка клиентов до сохранения
84+
85+
/* Имитируем запрос на сохранение клиента */
86+
MvcResult result = mockMvc.perform(post("/api/regClient")
87+
.contentType(MediaType.APPLICATION_JSON)
88+
.content(requestBodyData))
89+
.andExpect(status().isOk())
90+
.andReturn();
91+
92+
List<ClientReadDto> afterSaveBase = clientService.findAll(); // Получим копию списка клиентов после сохранения
93+
94+
/* Получим результат запроса, обработаем до нужного формата и сравним с исходным */
95+
String strReturn = result.getResponse().getContentAsString();
96+
ClientReadDto savedClientDto= objectMapper.readValue(strReturn, ClientReadDto.class);
97+
98+
assertAll(
99+
() -> assertThat(savedClientDto.getEmail()).isEqualTo(testClientCreateDto.getEmail()),
100+
() -> assertThat(savedClientDto.getClientName()).isEqualTo(testClientCreateDto.getDetails().clientName()),
101+
() -> assertThat(savedClientDto.getClientSurName()).isEqualTo(testClientCreateDto.getDetails().clientSurName()),
102+
() -> assertThat(savedClientDto.getAge()).isEqualTo(testClientCreateDto.getDetails().age())
103+
);
104+
105+
assertThat(afterSaveBase.size()).isGreaterThan(beforeSaveBase.size()); // Сравним размер списка клиентов до и после сохранения
106+
}
107+
108+
@Test
109+
@SneakyThrows
110+
void registrationClient_NotValidRegData_ShouldReturnBadRequest_AndErrorWarnings_Test() {
111+
String requestBodyData = objectMapper.writeValueAsString(notValidClientCreateDto);
112+
113+
MvcResult result = mockMvc.perform(post("/api/regClient")
114+
.contentType(MediaType.APPLICATION_JSON)
115+
.content(requestBodyData))
116+
.andExpect(status().isBadRequest())
117+
.andReturn();
118+
119+
String strReturn = result.getResponse().getContentAsString();
120+
121+
assertAll(
122+
() -> assertThat(strReturn.contains("Standard e-mail structure - email_name@email_domain.top_lavel_domain (for example: paul@tradsystem.ru)")).isTrue(),
123+
() -> assertThat(strReturn.contains("Age can't be lass then 0, unless you come from a counter-directional universe!")).isTrue(),
124+
() -> assertThat(strReturn.contains("Password size can be between 2 and 64")).isTrue()
125+
);
126+
}
127+
128+
@Test
129+
@SneakyThrows
130+
void registrationClient_TryToDuplicateReg_ShouldReturnBadRequest_AndErrorWarnings_Test() {
131+
String requestBodyData = objectMapper.writeValueAsString(existClientCreateDto);
132+
133+
MvcResult result = mockMvc.perform(post("/api/regClient")
134+
.contentType(MediaType.APPLICATION_JSON)
135+
.content(requestBodyData))
136+
.andExpect(status().isBadRequest())
137+
.andReturn();
138+
139+
String strReturn = result.getResponse().getContentAsString();
140+
141+
assertThat(strReturn.contains("Email: " + EXIST_EMAIL + " is exist, can not duplicate data.")).isTrue();
142+
}
143+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /