PageRenderTime 45ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/src/test/java/com/conexa/desafio/unit/PacienteControllerTestes.java

https://gitlab.com/lfelipelizeu/desafio-tecnico-backend-conexa
Java | 202 lines | 168 code | 34 blank | 0 comment | 0 complexity | e1097a0be896e9f22991e922ebe2d27b MD5 | raw file
  1. package com.conexa.desafio.unit;
  2. import static org.mockito.ArgumentMatchers.any;
  3. import static org.mockito.Mockito.when;
  4. import com.conexa.desafio.controllers.PacienteController;
  5. import com.conexa.desafio.data.MedicoDetails;
  6. import com.conexa.desafio.models.Medico;
  7. import com.conexa.desafio.models.Paciente;
  8. import com.conexa.desafio.services.MedicoDetailsService;
  9. import com.conexa.desafio.services.PacienteService;
  10. import com.conexa.desafio.services.SessaoService;
  11. import com.conexa.desafio.utils.JWTUtil;
  12. import com.conexa.desafio.utils.JsonUtil;
  13. import org.junit.Before;
  14. import org.junit.Test;
  15. import org.junit.runner.RunWith;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
  18. import org.springframework.boot.test.mock.mockito.MockBean;
  19. import org.springframework.http.MediaType;
  20. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  21. import org.springframework.test.context.junit4.SpringRunner;
  22. import org.springframework.test.web.servlet.MockMvc;
  23. import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
  24. import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
  25. @RunWith(SpringRunner.class)
  26. @WebMvcTest(PacienteController.class)
  27. public class PacienteControllerTestes {
  28. @Autowired
  29. private MockMvc mockMvc;
  30. @MockBean
  31. private MedicoDetailsService medicoDetailsService;
  32. @MockBean
  33. private PacienteService pacienteService;
  34. @MockBean
  35. private SessaoService sessaoService;
  36. private String token;
  37. @Before
  38. public void setup() {
  39. Medico medico = new Medico();
  40. medico.setEmail("luis@email.com");
  41. BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
  42. medico.setSenha(encoder.encode("12345"));
  43. MedicoDetails medicoDetails = new MedicoDetails(medico);
  44. String JWTToken = JWTUtil.createToken(medicoDetails);
  45. this.token = JWTToken;
  46. }
  47. @Test
  48. public void criarPacienteSemNomeDeveRetornar400() throws Exception {
  49. Paciente pacienteSemNome = new Paciente();
  50. pacienteSemNome.setCpf("41477311041");
  51. mockMvc.perform(MockMvcRequestBuilders.post("/pacientes")
  52. .contentType(MediaType.APPLICATION_JSON)
  53. .accept(MediaType.APPLICATION_JSON)
  54. .content(JsonUtil.toJson(pacienteSemNome))
  55. .header("Authorization", "Bearer " + this.token))
  56. .andExpect(MockMvcResultMatchers.status().is(400));
  57. }
  58. @Test
  59. public void criarPacienteSemCpfDeveRetornar400() throws Exception {
  60. Paciente pacienteSemCpf = new Paciente();
  61. pacienteSemCpf.setNome("Luis");
  62. mockMvc.perform(MockMvcRequestBuilders.post("/pacientes")
  63. .contentType(MediaType.APPLICATION_JSON)
  64. .accept(MediaType.APPLICATION_JSON)
  65. .content(JsonUtil.toJson(pacienteSemCpf))
  66. .header("Authorization", "Bearer " + this.token))
  67. .andExpect(MockMvcResultMatchers.status().is(400));
  68. }
  69. @Test
  70. public void criarPacienteComCpfDiferenteDe11CaracteresDeveRetornar400() throws Exception {
  71. Paciente pacienteComCpfDiferenteDe11Caracteres = new Paciente();
  72. pacienteComCpfDiferenteDe11Caracteres.setNome("Luis");
  73. pacienteComCpfDiferenteDe11Caracteres.setCpf("4147");
  74. mockMvc.perform(MockMvcRequestBuilders.post("/pacientes")
  75. .contentType(MediaType.APPLICATION_JSON)
  76. .accept(MediaType.APPLICATION_JSON)
  77. .content(JsonUtil.toJson(pacienteComCpfDiferenteDe11Caracteres))
  78. .header("Authorization", "Bearer " + this.token))
  79. .andExpect(MockMvcResultMatchers.status().is(400));
  80. }
  81. @Test
  82. public void criarPacienteComCpfDiferenteDeNumeroDeveRetornar400() throws Exception {
  83. Paciente pacienteComCpfDiferenteDeNumero = new Paciente();
  84. pacienteComCpfDiferenteDeNumero.setNome("Luis");
  85. pacienteComCpfDiferenteDeNumero.setCpf("4147731104a");
  86. mockMvc.perform(MockMvcRequestBuilders.post("/pacientes")
  87. .contentType(MediaType.APPLICATION_JSON)
  88. .accept(MediaType.APPLICATION_JSON)
  89. .content(JsonUtil.toJson(pacienteComCpfDiferenteDeNumero))
  90. .header("Authorization", "Bearer " + this.token))
  91. .andExpect(MockMvcResultMatchers.status().is(400));
  92. }
  93. @Test
  94. public void criarPacienteComCpfInvalidoDeveRetornar400() throws Exception {
  95. when(sessaoService.verificarSeTokenValido(any(String.class))).thenReturn(true);
  96. Paciente pacienteComCpfInvalido = new Paciente();
  97. pacienteComCpfInvalido.setNome("Luis");
  98. pacienteComCpfInvalido.setCpf("41477311077");
  99. mockMvc.perform(MockMvcRequestBuilders.post("/pacientes")
  100. .contentType(MediaType.APPLICATION_JSON)
  101. .accept(MediaType.APPLICATION_JSON)
  102. .content(JsonUtil.toJson(pacienteComCpfInvalido))
  103. .header("Authorization", "Bearer " + this.token))
  104. .andExpect(MockMvcResultMatchers.status().is(400));
  105. }
  106. @Test
  107. public void criarPacienteCpfComJaCadastradoDeveRetornar409() throws Exception {
  108. when(sessaoService.verificarSeTokenValido(any(String.class))).thenReturn(true);
  109. when(pacienteService.verificarSeJaExistePaciente(any(String.class))).thenReturn(true);
  110. Paciente pacienteCpfComJaCadastrado = new Paciente();
  111. pacienteCpfComJaCadastrado.setNome("Luis");
  112. pacienteCpfComJaCadastrado.setCpf("41477311041");
  113. mockMvc.perform(MockMvcRequestBuilders.post("/pacientes")
  114. .contentType(MediaType.APPLICATION_JSON)
  115. .accept(MediaType.APPLICATION_JSON)
  116. .content(JsonUtil.toJson(pacienteCpfComJaCadastrado))
  117. .header("Authorization", "Bearer " + this.token))
  118. .andExpect(MockMvcResultMatchers.status().is(409));
  119. }
  120. @Test
  121. public void criarPacienteSemEnviarTokenDeveRetornar403() throws Exception {
  122. when(sessaoService.verificarSeTokenValido(any(String.class))).thenReturn(true);
  123. when(pacienteService.verificarSeJaExistePaciente(any(String.class))).thenReturn(false);
  124. Paciente paciente = new Paciente();
  125. paciente.setNome("Luis");
  126. paciente.setCpf("41477311041");
  127. mockMvc.perform(MockMvcRequestBuilders.post("/pacientes")
  128. .contentType(MediaType.APPLICATION_JSON)
  129. .accept(MediaType.APPLICATION_JSON)
  130. .content(JsonUtil.toJson(paciente)))
  131. .andExpect(MockMvcResultMatchers.status().is(403));
  132. }
  133. @Test
  134. public void criarPacienteComTokenNaBlacklistDeveRetornar401() throws Exception {
  135. when(sessaoService.verificarSeTokenValido(any(String.class))).thenReturn(false);
  136. when(pacienteService.verificarSeJaExistePaciente(any(String.class))).thenReturn(false);
  137. Paciente paciente = new Paciente();
  138. paciente.setNome("Luis");
  139. paciente.setCpf("41477311041");
  140. mockMvc.perform(MockMvcRequestBuilders.post("/pacientes")
  141. .contentType(MediaType.APPLICATION_JSON)
  142. .accept(MediaType.APPLICATION_JSON)
  143. .content(JsonUtil.toJson(paciente))
  144. .header("Authorization", "Bearer " + this.token))
  145. .andExpect(MockMvcResultMatchers.status().is(401));
  146. }
  147. @Test
  148. public void criarPacienteDeveRetornar201() throws Exception {
  149. when(sessaoService.verificarSeTokenValido(any(String.class))).thenReturn(true);
  150. when(pacienteService.verificarSeJaExistePaciente(any(String.class))).thenReturn(false);
  151. Paciente paciente = new Paciente();
  152. paciente.setNome("Luis");
  153. paciente.setCpf("41477311041");
  154. mockMvc.perform(MockMvcRequestBuilders.post("/pacientes")
  155. .contentType(MediaType.APPLICATION_JSON)
  156. .accept(MediaType.APPLICATION_JSON)
  157. .content(JsonUtil.toJson(paciente))
  158. .header("Authorization", "Bearer " + this.token))
  159. .andExpect(MockMvcResultMatchers.status().is(201));
  160. }
  161. @Test
  162. public void listarPacientesDeveRetornar200() throws Exception {
  163. when(sessaoService.verificarSeTokenValido(any(String.class))).thenReturn(true);
  164. mockMvc.perform(MockMvcRequestBuilders.get("/pacientes")
  165. .header("Authorization", "Bearer " + this.token))
  166. .andExpect(MockMvcResultMatchers.status().is(200));
  167. }
  168. }