Boa tarde pessoal,
Estou implementando um teste em uma api que criei, fiz um restteamplate para testar o banco(MongoDB), criei um método de teste com @Test, onde ele adicionaria um dado no banco e verificaria se ele está retornando o código 201, só que quando eu tento inserir um valor que já está no banco ele continua mandando o código 201 Criado, sendo que na verdade deveria mandar o código 400. Pelo postman ele retorna o 400 corretamente. Alguém saberia me informar por que acontece isso?
Esse código abaixo funciona corretamente fazendo o teste, mesmo se já tiver os dados de Teste no banco.
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class PedroApiStarWarsApplicationTests {
protected final String BASE_PATH = "http://localhost:";
protected static final Logger LOGGER = LoggerFactory.getLogger(PedroApiStarWarsApplicationTests.class);
@LocalServerPort
private int port;
RestTemplate rest;
@Before
public void setUp() {
rest = new RestTemplate();
System.out.println(port);
}
@Test
public void testaInsercaoPlaneta() {
Planeta planeta = new Planeta("Teste","Teste","Teste","Teste");
ResponseEntity<String> response = null;
response = rest.postForEntity(BASE_PATH + port +"/planetas/",planeta,String.class);
Assert.assertEquals(201, response.getStatusCodeValue());
rest.delete(BASE_PATH + port +"/planetas/"+ "Teste");
}
@Test
public void testaInsercaoComMesmoID() {
Planeta planeta = new Planeta("Teste","Teste","Teste", "Teste");
try {
ResponseEntity<String> response = rest.postForEntity(BASE_PATH + port +"/planetas/",planeta,String.class);
response = rest.postForEntity(BASE_PATH + port +"/planetas/",planeta,String.class);
LOGGER.info("Não deveria receber " + response.getStatusCodeValue());
Assert.fail();
}catch (Exception e) {
Assert.assertEquals("400 null", e.getMessage() );
}
rest.delete(BASE_PATH + port +"/planetas/"+ "Teste");
}