3
respostas

Erro 500 ao enviar uma requisicao POST com Json

Gostaria de saber como enviar uma resquicao POST com JSON Este código devolve erro 500, mas se alterar para XML ele funciona normalmente;

 @Test
     public void deveAdicionarUmUsuario() {
     Usuario joao = new Usuario("Joao da Silva", "joao@dasilva.com");
     JsonPath retorno = given()
     .header("Accept", "application/json")
     .contentType("application/json")
     .body(joao)
     .expect().statusCode(200)
     .when().post("/usuarios")
     .andReturn().jsonPath();

     Usuario resposta = retorno.getObject("usuario", Usuario.class);
     assertEquals("Joao da Silva", resposta.getNome());
     assertEquals("joao@dasilva.com", resposta.getEmail());
     // deletando aqui 
     given()
     .contentType("application/xml").body(resposta)
     .expect().statusCode(200)
     .when().delete("/usuarios/deleta").andReturn().asString();
     } 

ERROS:

java.lang.AssertionError: 1 expectation failed.
Expected status code <200> doesn't match actual status code <500>.

Quando tiro o .expect().statusCode(200) ele retorna um outro erro com a seguinte mensagem:

com.jayway.restassured.path.json.exception.JsonPathException: Failed to parse the JSON document

Caused by: groovy.json.JsonException: Lexing failed on line: 1, column: 1, while reading '<', no possible valid JSON value or punctuation could be recognized.

Sendo assim eu devo sempre passar um XML no método POST?

3 respostas

O retorno você manteve xml, por quê?

.contentType("application/xml").body(resposta)

acredito que deveria ser json também

.contentType("application/json")

Fiz o ajuste mas o erro permanece

 @Test
     public void deveAdicionarUmUsuario() {
     Usuario joao = new Usuario("Joao da Silva", "joao@dasilva.com");
     JsonPath retorno = given()
     .header("Accept", "application/json")
     .contentType("application/json")
     .body(joao)

     .when().post("/usuarios")
     .andReturn().jsonPath();

     Usuario resposta = retorno.getObject("usuario", Usuario.class);
     assertEquals("Joao da Silva", resposta.getNome());
     assertEquals("joao@dasilva.com", resposta.getEmail());
     // deletando aqui 
     given()
     .contentType("application/json").body(resposta)
     .expect().statusCode(200)
     .when().delete("/usuarios/deleta").andReturn().asString();
     } 
com.jayway.restassured.path.json.exception.JsonPathException: Failed to parse the JSON document

Caused by: groovy.json.JsonException: Lexing failed on line: 1, column: 1, while reading '<', no possible valid JSON value or punctuation could be recognized.

Um detalhe é que o .log().body() retorna um json válido.

´´´ Body: { "id": 0, "nome": "Joao da Silva", "email": "joao@dasilva.com" } ´´´