Professor, estou usando o mock com spring security, e sem sucesso, comecou com erro 403, depois 401 e depois de várias configurações agora estou tendo erro 400.
Minha classe
@RestController
@RequestMapping(value = "/api/clientes/pf")
public class PessoaFisicaResource {
private final PessoaFisicaService pessoaFisicaService;
@Autowired
public PessoaFisicaResource(PessoaFisicaService pessoaFisicaService) {
this.pessoaFisicaService = pessoaFisicaService;
}
@GetMapping(value = "/{id}")
public ResponseEntity<PessoaFisica> buscar(@PathVariable Long id) {
PessoaFisica pessoaFisica = pessoaFisicaService.buscar(id);
return ResponseEntity.ok().body(pessoaFisica);
}
@GetMapping
public ResponseEntity<List<PessoaFisicaDtoBuscar>> buscarTodos() {
List<PessoaFisica> pessoaFisica = pessoaFisicaService.buscarTodos();
List<PessoaFisicaDtoBuscar> pessoaFisicaDtoBuscar = pessoaFisica.stream().map(objeto -> new PessoaFisicaDtoBuscar(objeto))
.collect(Collectors.toList());
return ResponseEntity.ok().body(pessoaFisicaDtoBuscar);
}
@GetMapping(value = "/pagina")
public ResponseEntity<Page<PessoaFisicaDtoBuscar>> buscaPagina(
@RequestParam(value = "pagina", defaultValue = "0") Integer pagina,
@RequestParam(value = "linhasPorPagina", defaultValue = "24") Integer linhasPorPagina,
@RequestParam(value = "direcaoDeOrdenacao", defaultValue = "ASC") String direcaoDeOrdenacao,
@RequestParam(value = "ordenarPor", defaultValue = "nome") String ordenarPor) {
Page<PessoaFisica> pessoaFisicas = pessoaFisicaService.buscarPagina(pagina, linhasPorPagina, direcaoDeOrdenacao, ordenarPor);
Page<PessoaFisicaDtoBuscar> pessoaFisicaDtoBuscar = pessoaFisicas.map(objeto -> new PessoaFisicaDtoBuscar(objeto));
return ResponseEntity.ok().body(pessoaFisicaDtoBuscar);
}
@PostMapping
public ResponseEntity<Void> inserir(@Valid @RequestBody PessoaFisicaDto pessoaFisicaDto) {
PessoaFisica pessoaFisica = pessoaFisicaService.converteDeDto(pessoaFisicaDto);
pessoaFisica = pessoaFisicaService.inserir(pessoaFisica);
URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(pessoaFisica.getId())
.toUri();
return ResponseEntity.created(uri).build();
}
@PutMapping(value = "/{id}")
public ResponseEntity<Void> atualizar(@Valid @RequestBody PessoaFisicaDto pessoaFisicaDto, @PathVariable Long id) {
PessoaFisica pessoaFisica = pessoaFisicaService.converteDeDto(pessoaFisicaDto);
pessoaFisica.setId(id);
pessoaFisica = pessoaFisicaService.atualizar(pessoaFisica);
return ResponseEntity.noContent().build();
}
@DeleteMapping(value = "/{id}")
public ResponseEntity<Void> apagar(@PathVariable Long id) {
pessoaFisicaService.apagar(id);
return ResponseEntity.noContent().build();
}
}
Meu teste
@RunWith(SpringRunner.class)
@SpringBootTest(value = "SpringBootTest.WebEnvironment.MOCK")
@AutoConfigureMockMvc
public class PessoaFisicaResourceTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private PessoaFisicaService pessoaFisicaService;
@Test
@WithMockUser(username = "sa")
public void criarNovoClientePessoaFisica() throws Exception {
PessoaFisica mockPessoaFisica = new PessoaFisica(1L, (byte) 1L, 1L, "Rodrigo Batista", "012.668.833-80", "12346 SSPMA",
"rodrigo@bitis.com.br", new Date(), GeneroEnum.MASCULINO, EstadoCivilEnum.CASADO, new Date(), 1L, 1L);
EnderecoPessoaFisica enderecoPessoaFisica = new EnderecoPessoaFisica(1L, "a", "b", "12", "S/C", "0000-123", new Cidade(), mockPessoaFisica);
TelefonePessoaFisica telefonePessoaFisica = new TelefonePessoaFisica(1L, "123", TipoDeTelefoneEnum.CELULAR, mockPessoaFisica);
mockPessoaFisica.getEnderecos().add(enderecoPessoaFisica);
mockPessoaFisica.getTelefones().add(telefonePessoaFisica);
Mockito.when(pessoaFisicaService.inserir(Mockito.any(PessoaFisica.class))).thenReturn(mockPessoaFisica);
ObjectWriter objectWriter = new ObjectMapper().writer().withDefaultPrettyPrinter();
String mockPessoaFisicaJson = objectWriter.writeValueAsString(mockPessoaFisica);
this.mockMvc.perform(MockMvcRequestBuilders.post("/api/clientes/pf")
.with(SecurityMockMvcRequestPostProcessors.csrf())
.contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaType.APPLICATION_JSON_UTF8)
.content(mockPessoaFisicaJson))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().json(mockPessoaFisicaJson));
}
}