Mudei para a versão 3.0.1 e funcionou com o seguinte código:
package br.com.caelum.leilao.teste;
import static io.restassured.RestAssured.given;
import static org.junit.Assert.assertEquals;
import io.restassured.path.json.JsonPath;
import io.restassured.path.xml.XmlPath;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import br.com.caelum.leilao.modelo.Leilao;
import br.com.caelum.leilao.modelo.Usuario;
public class LeilaoWSTest {
private Usuario mauricio;
private Usuario guilherme;
private Leilao geladeira;
private Leilao xbox;
private Leilao notebook;
@Before
public void setUp(){
mauricio = new Usuario(1L, "Mauricio Aniche", "mauricio.aniche@caelum.com.br");
geladeira = new Leilao(1l, "Geladeira", 800.0, mauricio, false);
guilherme = new Usuario(2L, "Guilherme Silveira", "guilherme.silveira@caelum.com.br");
xbox = new Leilao(2l, "XBox", 450.0, guilherme, false);
notebook = new Leilao(3L, "Notebook", 2000.0, mauricio, false);
}
@Test
public void deveRetornarListaDeLeiloes() {
XmlPath path = given().
header("Accept", "application/xml")
.get("/leiloes")
.andReturn().xmlPath();
List<Leilao> leiloes = path.getList("list.leilao", Leilao.class);
assertEquals(geladeira, leiloes.get(0));
assertEquals(xbox, leiloes.get(1));
}
@Test
public void deveRetornarListaDeLeiloesJson() {
JsonPath path = given()
.header("Accept", "application/json")
.get("/leiloes")
.andReturn().jsonPath();
List<Leilao> leiloes = path.getList("list", Leilao.class);
assertEquals(geladeira, leiloes.get(0));
assertEquals(xbox, leiloes.get(1));
}
@Test
public void deveRetornarLeilaoPorIdJson() {
JsonPath path = given()
.header("Accept", "application/json")
.param("leilao.id", 1)
.get("/leiloes/show")
.andReturn().jsonPath();
Leilao leilaoEsperado = path.getObject("leilao", Leilao.class);
assertEquals(geladeira, leilaoEsperado);
}
@Test
public void deveRetornarTotalDeLeiloes() {
XmlPath path = given().
header("Accept", "application/xml")
.get("/leiloes/total")
.andReturn().xmlPath();
int total = path.getInt("");
assertEquals(2, total);
}
@Test
public void deveAdicionarUmLeilao() {
XmlPath xpath =
given()
.header("Accept", "application/xml")
.contentType("application/xml")
.body(notebook)
.expect()
.statusCode(200)
.when()
.post("/leiloes")
.andReturn()
.xmlPath();
Leilao resposta = xpath.getObject("leilao", Leilao.class);
assertEquals(notebook.getNome(), resposta.getNome());
assertEquals(notebook.getValorInicial(), resposta.getValorInicial());
assertEquals(notebook.getUsuario(), resposta.getUsuario());
given()
.contentType("application/xml")
.body(resposta)
.expect()
.statusCode(200)
.when()
.delete("/leiloes/deletar")
.andReturn()
.asString();
}
}
Porém, percebi um outro problema no teste de Usuários. Aparentemente o serviço não deleta um usuário. O código que usei foi esse:
package br.com.caelum.leilao.teste;
import static io.restassured.RestAssured.given;
import static org.junit.Assert.assertEquals;
import io.restassured.path.json.JsonPath;
import io.restassured.path.xml.XmlPath;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import br.com.caelum.leilao.modelo.Usuario;
public class UsuariosWSTest {
private Usuario mauricio;
private Usuario guilherme;
private Usuario joao;
@Before
public void setUp(){
mauricio = new Usuario(1L, "Mauricio Aniche", "mauricio.aniche@caelum.com.br");
guilherme = new Usuario(2L, "Guilherme Silveira", "guilherme.silveira@caelum.com.br");
joao = new Usuario(3L, "Joao da Silva", "joao@dasilva.com");
}
@Test
public void deveRetornarListaDeUsuarios() {
XmlPath path = given().
header("Accept", "application/xml")
.get("/usuarios")
.andReturn().xmlPath();
List<Usuario> usuarios = path.getList("list.usuario", Usuario.class);
assertEquals(mauricio, usuarios.get(0));
assertEquals(guilherme, usuarios.get(1));
}
@Test
public void deveRetornarListaDeUsuariosJson() {
JsonPath path = given()
.header("Accept", "application/json")
.get("/usuarios")
.andReturn().jsonPath();
List<Usuario> usuarios = path.getList("list", Usuario.class);
assertEquals(mauricio, usuarios.get(0));
assertEquals(guilherme, usuarios.get(1));
}
@Test
public void deveRetornarUsuarioPorIdJson() {
JsonPath path = given()
.header("Accept", "application/json")
.param("usuario.id", 1)
.get("/usuarios/show")
.andReturn().jsonPath();
Usuario usuario = path.getObject("usuario", Usuario.class);
assertEquals(mauricio, usuario);
}
@Test
public void deveAdicionarUmUsuario() {
XmlPath xpath =
given()
.header("Accept", "application/xml")
.contentType("application/xml")
.body(joao)
.expect()
.statusCode(200)
.when()
.post("/usuarios")
.andReturn()
.xmlPath();
Usuario resposta = xpath.getObject("usuario", Usuario.class);
assertEquals(joao.getNome(), resposta.getNome());
assertEquals(joao.getEmail(), resposta.getEmail());
given()
.contentType("application/xml")
.body(resposta)
.expect()
.statusCode(200)
.when()
.delete("/usuarios/deleta")
.andReturn()
.asString();
}
}
A aplicação que provê os serviços tem algum bug?