Exemplo de uso de Rest Assured para teste de API
De Basef
package br.com.caelum.leilao.teste; import br.com.caelum.leilao.modelo.Leilao; import br.com.caelum.leilao.modelo.Usuario; import com.jayway.restassured.path.json.JsonPath; import com.jayway.restassured.path.xml.XmlPath; import org.junit.Test; import java.util.List; import static com.jayway.restassured.RestAssured.expect; import static com.jayway.restassured.RestAssured.given; import static org.junit.Assert.assertEquals; public class MyTest { @Test public void deveRetornarListaDeUsuarios() { XmlPath path = given() .header("Accept", "application/xml") .get("/usuarios") .andReturn().xmlPath(); List<Usuario> usuarios = path.getList("list.usuario", Usuario.class); // Usuario usuario1 = path.getObject("list.usuario[0]", Usuario.class); // Usuario usuario2 = path.getObject("list.usuario[1]", Usuario.class); Usuario esperado1 = new Usuario(1L, "Mauricio Aniche", "mauricio.aniche@caelum.com.br"); Usuario esperado2 = new Usuario(2L, "Guilherme Silveira", "guilherme.silveira@caelum.com.br"); // assertEquals(esperado1, usuario1); // assertEquals(esperado2, usuario2); assertEquals(esperado1, usuarios.get(0)); assertEquals(esperado2, usuarios.get(1)); } @Test public void deveRetornarUsuarioPeloId() { JsonPath path = given() .queryParam("usuario.id", 1) .header("Accept", "application/json") .get("/usuarios/show") .andReturn().jsonPath(); Usuario usuario = path.getObject("usuario", Usuario.class); Usuario esperado = new Usuario(1L, "Mauricio Aniche", "mauricio.aniche@caelum.com.br"); assertEquals(esperado, usuario); } @Test public void deveRetornarLeilaoPorId() { JsonPath path = given() .queryParam("leilao.id", 1) .header("Accept", "application/json") .get("/leiloes/show") .andReturn().jsonPath(); Leilao leilao = path.getObject("leilao", Leilao.class); assertEquals("Geladeira", leilao.getNome()); } @Test public void deveRetornarTotalDeLeiloes() { JsonPath path = given() .header("Accept", "application/json") .get("/leiloes/total") .andReturn().jsonPath(); int total = path.getInt("int"); assertEquals(total, 2); } @Test public void deveAdicionarUmUsuario() { Usuario joao = new Usuario("Joao da Silva", "joao@dasilva.com"); XmlPath retorno = given() .header("Accept", "application/xml") .contentType("application/xml") .body(joao) .expect().statusCode(200) .when().post("/usuarios") .andReturn().xmlPath(); Usuario resposta = retorno.getObject("usuario", Usuario.class); assertEquals("Joao da Silva", resposta.getNome()); assertEquals("joao@dasilva.com", resposta.getEmail()); given() .contentType("application/xml").body(resposta) .expect().statusCode(200) .when().delete("/usuarios/deleta").andReturn().asString(); } @Test public void deveInserirLeiloes() { Usuario mauricio = new Usuario(1l, "Mauricio Aniche", "mauricio.aniche@caelum.com.br"); Leilao leiloes = new Leilao(1l, "Geladeira", 800.0, mauricio, false); XmlPath retorno = given() .header("Accept", "application/xml") .contentType("application/xml") .body(leiloes) .expect() .statusCode(200) .when() .post("/leiloes") .andReturn() .xmlPath(); Leilao resposta = retorno.getObject("leilao", Leilao.class); assertEquals("Geladeira", resposta.getNome()); // deletando aqui given() .contentType("application/xml") .body(resposta) .expect() .statusCode(200) .when() .delete("/leiloes/deleta") .andReturn().asString(); } @Test public void deveGerarUmCookie() { expect() .cookie("rest-assured", "funciona") .when() .get("/cookie/teste"); } @Test public void deveGerarUmHeader() { expect() .header("novo-header", "abc") .when() .get("/cookie/teste"); } }