Troquei para o io Rest Assured a implementação está assim :
package Test;
import org.json.simple.JSONObject;
import org.junit.Assert;
import org.junit.Test;
import io.restassured.RestAssured;
import io.restassured.http.Method;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
public class ProdutoResourceTestAssured{
@Test
public void deveBuscarTodosOsProdutos() {
// Specify base URI
RestAssured.baseURI = "http://localhost:8080/ProjetoJersey/api/produto";
// Request Object
RequestSpecification httpRequest = RestAssured.given();
// Response Object
Response response = httpRequest.request(Method.GET, "/todos");
// Print response in console window
String responseBody = response.getBody().asString();
System.out.println("Response Body is: " + responseBody);
// Status code validation
int statusCode = response.getStatusCode();
System.out.println("Status code is: " + statusCode);
Assert.assertEquals(statusCode, 200);
// Status line verification
String statusLine = response.getStatusLine();
System.out.println("Status line is: " + statusLine);
Assert.assertEquals(statusLine, "HTTP/1.1 200 OK");
}
@SuppressWarnings("unchecked")
@Test
public void deveInserirUmProduto() {
// Specify base URI
RestAssured.baseURI = "http://localhost:8080/ProjetoJersey/api/produto";
// Request Object
RequestSpecification httpRequest = RestAssured.given();
//Request playload sending along with post request
JSONObject requestParams = new JSONObject();
requestParams.put("nome", "MacBook PRO");
requestParams.put("tipoProduto", "INFORMATICA");
requestParams.put("valor", 26000.00);
requestParams.put("cor", "Cinza Espacial");
requestParams.put("especificacoes", "Top de linha");
httpRequest.header("Content-type", "application/json");
httpRequest.body(requestParams.toJSONString());
// Response Object
Response response = httpRequest.request(Method.POST, "/");
// Print response in console window
String responseBody = response.getBody().asString();
System.out.println("Response Body is: " + responseBody);
// Status code validation
int statusCode = response.getStatusCode();
System.out.println("Status code is: " + statusCode);
Assert.assertEquals(statusCode, 201);
// Success code validation
String successCode = response.jsonPath().get("SuccessCode");
Assert.assertEquals(successCode, "OPERATION_SUCCESS");
}
}
Porém agora somente o post não funciona, diz que : Failed to Parse the JSON documente.
O campo onde está informatica é um enum na verdade, então se eu eu colocar :
requestParams.put("tipoProduto", TipoProduto.INFORMATICA);
E alterar o teste para esperar 400, eu recebo o seguinte: javax.ws.rs.ProcessingException: RESTEASY008200: JSON Binding deserialization error: Unexpected char 73 at (line no=1, column no=108, offset=107)