Commit 10d86e0e authored by Iria19's avatar Iria19

Añadidos los test de Pet

Contiene los test de Pet
parent d2648847
# DAAExample DAAExample
DAAExample ==========
Aplicación y arquitectura de ejemplo para la asignatura Desarrollo Ágil de
Aplicaciones del Grado en Ingeniería Informática de la Escuela Superior de
Ingeniería Informática de la Universidad de Vigo.
## Dependencias
Este proyecto está diseñado para ser desarrollado en un entorno con:
* Maven 3
* Java 8
* MySQL 5.7.6+ o 8+
Además, se recomienda emplear la última versión de Eclipse IDE for Enterprise
Java Developers.
## Ejecución con Maven
La configuración de Maven ha sido preparada para permitir varios tipos de
ejecución.
### Ejecución de la aplicación con Tomcat y MySQL
El proyecto está configurado para poder ejecutar la aplicación sin tener que
realizar ninguna configuración adicional salvo tener disponible un servidor
MySQL en local.
Los ficheros del proyecto `db/mysql.sql` y 'db/mysql-with-inserts.sql' contienen
todas las consultas necesarias para crear la base de datos y el usuario
requeridos, con o sin datos de ejemplo, respectivamente. Por lo tanto, podemos
configurar inicialmente la base de datos con cualquiera de los siguientes
comandos (desde la raíz el proyecto):
* Sin datos: `mysql -u root -p < db/mysql.sql`
* Con datos: `mysql -u root -p < db/mysql-with-inserts.sql`
Una vez configurada la base de datos podemos lanzar la ejecución con el comando:
`mvn -Prun -DskipTests=true package cargo:run`
La aplicación se servirá en la URL local: http://localhost:9080/DAAExample
Para detener la ejecución podemos utilizar `Ctrl+C`.
### Ejecución de la aplicación con Tomcat y MySQL con redespliegue automático
Durante el desarrollo es interesante que la apliación se redespliegue de forma
automática cada vez que se hace un cambio. Para ello podemos utilizar el
siguiente comand:
`mvn -Prun -DskipTests=true package cargo:start fizzed-watcher:run`
La aplicación se servirá en la URL local: http://localhost:9080/DAAExample
Para detener la ejecución podemos utilizar `Ctrl+C`.
### Construcción con tests de unidad e integración
En esta construcción se ejecutarán todos los tests relacionados con el backend:
* **Unidad**: se utilizan para testear las entidades y las capas DAO y REST de
forma aislada.
* **Integración**: se utilizan para testear las capas REST y DAO de forma
integrada. Para este tipo de pruebas se utiliza una base de datos HSQL en
memoria.
El comando para lanzar esta construcción es:
`mvn install`
...@@ -144,6 +144,7 @@ public class PetsDAO extends DAO { ...@@ -144,6 +144,7 @@ public class PetsDAO extends DAO {
throws DAOException, IllegalArgumentException { throws DAOException, IllegalArgumentException {
if (pet == null) { if (pet == null) {
throw new IllegalArgumentException("pet can't be null"); throw new IllegalArgumentException("pet can't be null");
} }
try (Connection conn = this.getConnection()) { try (Connection conn = this.getConnection()) {
...@@ -160,6 +161,7 @@ public class PetsDAO extends DAO { ...@@ -160,6 +161,7 @@ public class PetsDAO extends DAO {
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
LOG.log(Level.SEVERE, "Error modifying a pet", e); LOG.log(Level.SEVERE, "Error modifying a pet", e);
throw new DAOException(); throw new DAOException();
} }
......
...@@ -26,6 +26,7 @@ public class Pet { ...@@ -26,6 +26,7 @@ public class Pet {
* @param id_person id_person of the pet. * @param id_person id_person of the pet.
*/ */
public Pet(int id, String name, String food, int id_person) { public Pet(int id, String name, String food, int id_person) {
this.id = id; this.id = id;
this.setName(name); this.setName(name);
this.setFood(food); this.setFood(food);
...@@ -95,7 +96,7 @@ public class Pet { ...@@ -95,7 +96,7 @@ public class Pet {
* @throws NullPointerException if the {@code id_person} is {@code id_person}. * @throws NullPointerException if the {@code id_person} is {@code id_person}.
*/ */
public void setId_person(int id_person) { public void setId_person(int id_person) {
this.id_person = requireNonNull(id_person, "Id_person can't be null"); this.id_person = id_person;
} }
@Override @Override
......
...@@ -123,9 +123,12 @@ public class PetsResource { ...@@ -123,9 +123,12 @@ public class PetsResource {
@FormParam("name") String name, @FormParam("name") String name,
@FormParam("food") String food, @FormParam("food") String food,
@FormParam("id_person") int id_person @FormParam("id_person") int id_person
) { ) {
try { try {
if (id_person <= 0) {
throw new IllegalArgumentException("Invalid id_person");
}
final Pet newPet = this.dao.add(name, food, id_person); final Pet newPet = this.dao.add(name, food, id_person);
return Response.ok(newPet).build(); return Response.ok(newPet).build();
...@@ -167,13 +170,18 @@ public class PetsResource { ...@@ -167,13 +170,18 @@ public class PetsResource {
) { ) {
try { try {
System.out.println("El id:"+id);
System.out.println("El nombre"+name);
System.out.println("En food"+food);
System.out.println("En id_person"+id_person);
final Pet modifiedPet = new Pet(id, name, food, id_person); final Pet modifiedPet = new Pet(id, name, food, id_person);
this.dao.modify(modifiedPet); this.dao.modify(modifiedPet);
return Response.ok(modifiedPet).build(); return Response.ok(modifiedPet).build();
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
final String message = String.format("Invalid data for peet (name: %s, food: %s, id_person: %d)", name, food); final String message = String.format("Invalid data for peet (name: %s, food: %s, id_person: %d)", name, food, id_person);
LOG.log(Level.FINE, message); LOG.log(Level.FINE, message);
return Response.status(Response.Status.BAD_REQUEST) return Response.status(Response.Status.BAD_REQUEST)
......
...@@ -41,6 +41,7 @@ var PetsView = (function() {//creo clase ...@@ -41,6 +41,7 @@ var PetsView = (function() {//creo clase
dao.modifyPet(pet, dao.modifyPet(pet,
function(pet) { function(pet) {
$('#pet-' + pet.id + ' td.name').text(pet.name); $('#pet-' + pet.id + ' td.name').text(pet.name);
$('#pet-' + pet.id + ' td.id_person').text(pet.id_person);
$('#pet-' + pet.id + ' td.food').text(pet.food); $('#pet-' + pet.id + ' td.food').text(pet.food);
self.resetForm(); self.resetForm();
}, },
...@@ -70,8 +71,8 @@ var PetsView = (function() {//creo clase ...@@ -70,8 +71,8 @@ var PetsView = (function() {//creo clase
return { return {
'id': form.find('input[name="id"]').val(), 'id': form.find('input[name="id"]').val(),
'name': form.find('input[name="name"]').val(), 'name': form.find('input[name="name"]').val(),
'food': form.find('input[name="food"]').val(), 'id_person': form.find('input[name="id_person"]').val(),
'id_person': form.find('input[name="id_person"]').val() 'food': form.find('input[name="food"]').val()
}; };
}; };
...@@ -83,8 +84,8 @@ var PetsView = (function() {//creo clase ...@@ -83,8 +84,8 @@ var PetsView = (function() {//creo clase
return { return {
'id': id, 'id': id,
'name': row.find('td.name').text(), 'name': row.find('td.name').text(),
'food': row.find('td.food').text(), 'id_person': row.find('td.id_person').text(),
'id_person': row.find('td.id_person').text() 'food': row.find('td.food').text()
}; };
} else { } else {
...@@ -93,15 +94,15 @@ var PetsView = (function() {//creo clase ...@@ -93,15 +94,15 @@ var PetsView = (function() {//creo clase
}; };
this.editPet = function(id) { this.editPet = function(id) {
var row = $('#pet-' + id); var pet = self.getPetInRow(id);
if (row !== undefined) { if (pet !== undefined) {
var form = $(formQuery); var form = $(formQuery);
form.find('input[name="id"]').val(id); form.find('input[name="id"]').val(pet.id);
form.find('input[name="name"]').val(row.find('td.name').text()); form.find('input[name="name"]').val(pet.name);
form.find('input[name="food"]').val(row.find('td.food').text()); form.find('input[name="id_person"]').val(pet.id_person);
form.find('input[name="id_person"]').val(id_person); form.find('input[name="food"]').val(pet.food);
$('input#btnSubmit').val('Modificar'); $('input#btnSubmit').val('Modificar');
} }
...@@ -145,8 +146,9 @@ var PetsView = (function() {//creo clase ...@@ -145,8 +146,9 @@ var PetsView = (function() {//creo clase
'<table id="' + listId + '" class="table">\ '<table id="' + listId + '" class="table">\
<thead>\ <thead>\
<tr class="row">\ <tr class="row">\
<th class="col-sm-4">Nombre</th>\ <th class="col-sm-3">Nombre</th>\
<th class="col-sm-5">Comida</th>\ <th class="col-sm-3">Id_person</th>\
<th class="col-sm-3">Comida</th>\
<th class="col-sm-3">&nbsp;</th>\ <th class="col-sm-3">&nbsp;</th>\
</tr>\ </tr>\
</thead>\ </thead>\
...@@ -170,10 +172,10 @@ var PetsView = (function() {//creo clase ...@@ -170,10 +172,10 @@ var PetsView = (function() {//creo clase
<input name="name" type="text" value="" input-sm placeholder="Nombre" class="form-control" required/>\ <input name="name" type="text" value="" input-sm placeholder="Nombre" class="form-control" required/>\
</div>\ </div>\
<div class="col-sm-3">\ <div class="col-sm-3">\
<input name="food" type="text" value="" input-sm placeholder="Comida" class="form-control" required/>\ <input name="id_person" type="text" input-sm value="' + id_person + '" placeholder="Propietario" class="form-control" readonly />\
</div>\ </div>\
<div class="col-sm-3">\ <div class="col-sm-3">\
<input name="id_person" type="text" input-sm value="' + id_person + '" placeholder="Propietario" class="form-control" readonly />\ <input name="food" type="text" value="" input-sm placeholder="Comida" class="form-control" required/>\
</div>\ </div>\
<div class="col-sm-3">\ <div class="col-sm-3">\
<input id="btnSubmit" type="submit" value="Crear" class="btn btn-primary" />\ <input id="btnSubmit" type="submit" value="Crear" class="btn btn-primary" />\
...@@ -187,7 +189,7 @@ var PetsView = (function() {//creo clase ...@@ -187,7 +189,7 @@ var PetsView = (function() {//creo clase
var createPetsRow = function(pet) { var createPetsRow = function(pet) {
return '<tr id="pet-'+ pet.id +'" class="row">\ return '<tr id="pet-'+ pet.id +'" class="row">\
<td class="name col-sm-3">' + pet.name + '</td>\ <td class="name col-sm-3">' + pet.name + '</td>\
<td class="name col-sm-3">' + pet.id_person + '</td>\ <td class="id_person col-sm-3">' + pet.id_person + '</td>\
<td class="food col-sm-3">' + pet.food + '</td>\ <td class="food col-sm-3">' + pet.food + '</td>\
<td class="col-sm-3">\ <td class="col-sm-3">\
<a class="edit btn btn-primary" href="#">Editar</a>\ <a class="edit btn btn-primary" href="#">Editar</a>\
......
package es.uvigo.esei.daa.dataset;
import static java.util.Arrays.binarySearch;
import static java.util.Arrays.stream;
import java.util.Arrays;
import java.util.function.Predicate;
import es.uvigo.esei.daa.entities.Pet;
public final class PetsDataset {
private PetsDataset() {}
public static Pet[] pets() {
return new Pet[] {
new Pet(1, "Pepe", "Pienso",1),
new Pet(2, "Ali", "Pescado",2),
new Pet(3, "Nico", "Pienso",3),
new Pet(4, "Kiko", "Pienso",4),
new Pet(5, "Blanca", "Atún",7),
new Pet(6, "Copito", "Pienso",6),
new Pet(7, "Perico", "Pienso",7),
new Pet(8, "Shiro", "Carne",8),
new Pet(9, "Pancho", "Pollo",9),
new Pet(10, "Mimi", "Atun",10)
};
}
public static Pet[] petsOfOwner(int ownerId) {
return stream(pets())
.filter(pet -> pet.getId_person() == ownerId)
.toArray(Pet[]::new);
}
public static Pet[] petsWithout(int ... ids) {
Arrays.sort(ids);
final Predicate<Pet> hasValidId = pet ->
binarySearch(ids, pet.getId()) < 0;
return stream(pets())
.filter(hasValidId)
.toArray(Pet[]::new);
}
public static Pet pet(int id) {
return stream(pets())
.filter(pet -> pet.getId() == id)
.findAny()
.orElseThrow(IllegalArgumentException::new);
}
public static int existentId() {
return 5;
}
public static int nonExistentId() {
return 34;
}
public static Pet existentPet() {
return pet(existentId());
}
public static Pet nonExistentPet() {
return new Pet(nonExistentId(), "Jane", "palitos", 18);
}
public static String newName() {
return "John";
}
public static String newFood() {
return "Maiz";
}
public static int newIdPerson() {
return 7;
}
public static Pet newPet() {
return new Pet(pets().length + 1, newName(), newFood(),newIdPerson());
}
}
package es.uvigo.esei.daa.entities;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import nl.jqno.equalsverifier.EqualsVerifier;
import nl.jqno.equalsverifier.Warning;
public class PetUnitTest {
@Test
public void testPetIntStringString() {
final int id = 1;
final String name = "John";
final String food = "Maiz";
final int id_person = 7;
final Pet pet = new Pet(id, name, food,id_person);
assertThat(pet.getId(), is(equalTo(id)));
assertThat(pet.getName(), is(equalTo(name)));
assertThat(pet.getFood(), is(equalTo(food)));
assertThat(pet.getId_person(), is(equalTo(id_person)));
}
@Test(expected = NullPointerException.class)
public void testPetIntStringStringNullName() {
new Pet(1, null, "Maiz",7);
}
@Test(expected = NullPointerException.class)
public void testPetIntStringStringNullFood() {
new Pet(1, "John", null,7);
}
@Test
public void testSetName() {
final int id = 1;
final String food = "Maiz";
final int id_person = 7;
final Pet pet = new Pet(id, "John", food,id_person);
pet.setName("Juan");
assertThat(pet.getId(), is(equalTo(id)));
assertThat(pet.getName(), is(equalTo("Juan")));
assertThat(pet.getFood(), is(equalTo(food)));
assertThat(pet.getId_person(), is(equalTo(id_person)));
}
@Test(expected = NullPointerException.class)
public void testSetNullName() {
final Pet pet = new Pet(1, "John", "Maiz",7);
pet.setName(null);
}
@Test
public void testSetFood() {
final int id = 1;
final String name = "John";
final int id_person = 7;
final Pet pet = new Pet(id, name, "Maiz",id_person);
pet.setFood("Pizza");
assertThat(pet.getId(), is(equalTo(id)));
assertThat(pet.getName(), is(equalTo(name)));
assertThat(pet.getFood(), is(equalTo("Pizza")));
assertThat(pet.getId_person(), is(equalTo(id_person)));
}
@Test(expected = NullPointerException.class)
public void testSetNullFood() {
final Pet pet = new Pet(1, "John", "Maiz",7);
pet.setFood(null);
}
@Test
public void testEqualsObject() {
final Pet petA = new Pet(1, "Name A", "Food A",7);
final Pet petB = new Pet(1, "Name B", "Food B",7);
assertTrue(petA.equals(petB));
}
@Test
public void testEqualsHashcode() {
EqualsVerifier.forClass(Pet.class)
.withIgnoredFields("name", "food","id_person")
.suppress(Warning.STRICT_INHERITANCE)
.suppress(Warning.NONFINAL_FIELDS)
.verify();
}
}
...@@ -31,7 +31,7 @@ import es.uvigo.esei.daa.entities.User; ...@@ -31,7 +31,7 @@ import es.uvigo.esei.daa.entities.User;
@Priority(Priorities.AUTHENTICATION) @Priority(Priorities.AUTHENTICATION)
public class AuthorizationFilter implements ContainerRequestFilter { public class AuthorizationFilter implements ContainerRequestFilter {
// Add here the list of REST paths that an administrator can access. // Add here the list of REST paths that an administrator can access.
private final static List<String> ADMIN_PATHS = Arrays.asList("people"); private final static List<String> ADMIN_PATHS = Arrays.asList("people", "pets");
private final UsersDAO dao; private final UsersDAO dao;
......
package es.uvigo.esei.daa.matchers;
import org.hamcrest.Factory;
import org.hamcrest.Matcher;
import es.uvigo.esei.daa.entities.Person;
import es.uvigo.esei.daa.entities.Pet;
public class IsEqualToPet extends IsEqualToEntity<Pet> {
public IsEqualToPet(Pet entity) {
super(entity);
}
@Override
protected boolean matchesSafely(Pet actual) {
this.clearDescribeTo();
if (actual == null) {
this.addTemplatedDescription("actual", expected.toString());
return false;
} else {
return checkAttribute("id", Pet::getId, actual)
&& checkAttribute("name", Pet::getName, actual)
&& checkAttribute("food", Pet::getFood, actual)
&& checkAttribute("id_person", Pet::getId_person, actual);
}
}
/**
* Factory method that creates a new {@link IsEqualToEntity} matcher with
* the provided {@link Person} as the expected value.
*
* @param pet the expected pet.
* @return a new {@link IsEqualToEntity} matcher with the provided
* {@link Person} as the expected value.
*/
@Factory
public static IsEqualToPet equalsToPet(Pet pet) {
return new IsEqualToPet(pet);
}
/**
* Factory method that returns a new {@link Matcher} that includes several
* {@link IsEqualToPet} matchers, each one using an {@link Person} of the
* provided ones as the expected value.
*
* @param pets the pets to be used as the expected values.
* @return a new {@link Matcher} that includes several
* {@link IsEqualToPet} matchers, each one using an {@link Pet} of the
* provided ones as the expected value.
* @see IsEqualToEntity#containsEntityInAnyOrder(java.util.function.Function, Object...)
*/
@Factory
public static Matcher<Iterable<? extends Pet>> containsPetsInAnyOrder(Pet ... petos) {
return containsEntityInAnyOrder(IsEqualToPet::equalsToPet, petos);
}
}
This diff is collapsed.
...@@ -16,4 +16,16 @@ ...@@ -16,4 +16,16 @@
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/> <users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" /> <users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Pepe" food="Pienso" id_person="1"/>
<pets id="2" name="Ali" food="Pescado" id_person="2" />
<pets id="3" name="Nico" food="Pienso" id_person="3" />
<pets id="4" name="Kiko" food="Pienso" id_person="4" />
<pets id="5" name="Blanca" food="Atún" id_person="7" />
<pets id="6" name="Copito" food="Pienso" id_person="6" />
<pets id="7" name="Perico" food="Pienso" id_person="7" />
<pets id="8" name="Shiro" food="Carne" id_person="8" />
<pets id="9" name="Pancho" food="Pollo" id_person="9" />
<pets id="10" name="Mimi" food="Atun" id_person="10" />
</dataset> </dataset>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dataset SYSTEM "dataset.dtd">
<dataset>
<people id="1" name="Antón" surname="Álvarez" />
<people id="2" name="Ana" surname="Amargo" />
<people id="3" name="Manuel" surname="Martínez" />
<people id="4" name="María" surname="Márquez" />
<people id="5" name="Lorenzo" surname="López" />
<people id="6" name="Laura" surname="Laredo" />
<people id="7" name="Perico" surname="Palotes" />
<people id="8" name="Patricia" surname="Pérez" />
<people id="9" name="Julia" surname="Justa" />
<people id="10" name="Juan" surname="Jiménez" />
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Pepe" food="Pienso" id_person="1"/>
<pets id="2" name="Ali" food="Pescado" id_person="2" />
<pets id="3" name="Nico" food="Pienso" id_person="3" />
<pets id="4" name="Kiko" food="Pienso" id_person="4" />
<pets id="5" name="Blanca" food="Atún" id_person="7" />
<pets id="6" name="Copito" food="Pienso" id_person="6" />
<pets id="7" name="Perico" food="Pienso" id_person="7" />
<pets id="8" name="Shiro" food="Carne" id_person="8" />
<pets id="9" name="Pancho" food="Pollo" id_person="9" />
<pets id="10" name="Mimi" food="Atun" id_person="10" />
<pets id="11" name="John" food="Maiz" id_person="7" />
</dataset>
\ No newline at end of file
...@@ -14,4 +14,16 @@ ...@@ -14,4 +14,16 @@
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/> <users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" /> <users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Pepe" food="Pienso" id_person="1"/>
<pets id="2" name="Ali" food="Pescado" id_person="2" />
<pets id="3" name="Nico" food="Pienso" id_person="3" />
<pets id="4" name="Kiko" food="Pienso" id_person="4" />
<pets id="5" name="Blanca" food="Atún" id_person="7" />
<pets id="6" name="Copito" food="Pienso" id_person="6" />
<pets id="7" name="Perico" food="Pienso" id_person="7" />
<pets id="8" name="Shiro" food="Carne" id_person="8" />
<pets id="9" name="Pancho" food="Pollo" id_person="9" />
<pets id="10" name="Mimi" food="Atun" id_person="10" />
</dataset> </dataset>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dataset SYSTEM "dataset.dtd">
<dataset>
<people id="1" name="Antón" surname="Álvarez" />
<people id="2" name="Ana" surname="Amargo" />
<people id="3" name="Manuel" surname="Martínez" />
<people id="4" name="María" surname="Márquez" />
<people id="5" name="Lorenzo" surname="López" />
<people id="6" name="Laura" surname="Laredo" />
<people id="7" name="Perico" surname="Palotes" />
<people id="8" name="Patricia" surname="Pérez" />
<people id="9" name="Julia" surname="Justa" />
<people id="10" name="Juan" surname="Jiménez" />
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Pepe" food="Pienso" id_person="1"/>
<pets id="2" name="Ali" food="Pescado" id_person="2" />
<pets id="3" name="Nico" food="Pienso" id_person="3" />
<pets id="4" name="Kiko" food="Pienso" id_person="4" />
<pets id="6" name="Copito" food="Pienso" id_person="6" />
<pets id="7" name="Perico" food="Pienso" id_person="7" />
<pets id="8" name="Shiro" food="Carne" id_person="8" />
<pets id="9" name="Pancho" food="Pollo" id_person="9" />
<pets id="10" name="Mimi" food="Atun" id_person="10" />
</dataset>
\ No newline at end of file
...@@ -15,4 +15,15 @@ ...@@ -15,4 +15,15 @@
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/> <users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" /> <users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Pepe" food="Pienso" id_person="1"/>
<pets id="2" name="Ali" food="Pescado" id_person="2" />
<pets id="3" name="Nico" food="Pienso" id_person="3" />
<pets id="4" name="Kiko" food="Pienso" id_person="4" />
<pets id="5" name="Blanca" food="Atún" id_person="7" />
<pets id="6" name="Copito" food="Pienso" id_person="6" />
<pets id="7" name="Perico" food="Pienso" id_person="7" />
<pets id="8" name="Shiro" food="Carne" id_person="8" />
<pets id="9" name="Pancho" food="Pollo" id_person="9" />
<pets id="10" name="Mimi" food="Atun" id_person="10" />
</dataset> </dataset>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dataset SYSTEM "dataset.dtd">
<dataset>
<people id="1" name="Antón" surname="Álvarez" />
<people id="2" name="Ana" surname="Amargo" />
<people id="3" name="Manuel" surname="Martínez" />
<people id="4" name="María" surname="Márquez" />
<people id="5" name="Lorenzo" surname="López" />
<people id="6" name="Laura" surname="Laredo" />
<people id="7" name="Perico" surname="Palotes" />
<people id="8" name="Patricia" surname="Pérez" />
<people id="9" name="Julia" surname="Justa" />
<people id="10" name="Juan" surname="Jiménez" />
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Pepe" food="Pienso" id_person="1"/>
<pets id="2" name="Ali" food="Pescado" id_person="2" />
<pets id="3" name="Nico" food="Pienso" id_person="3" />
<pets id="4" name="Kiko" food="Pienso" id_person="4" />
<pets id="5" name="John" food="Maiz" id_person="7" />
<pets id="6" name="Copito" food="Pienso" id_person="6" />
<pets id="7" name="Perico" food="Pienso" id_person="7" />
<pets id="8" name="Shiro" food="Carne" id_person="8" />
<pets id="9" name="Pancho" food="Pollo" id_person="9" />
<pets id="10" name="Mimi" food="Atun" id_person="10" />
</dataset>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT dataset (people*, users*)> <!ELEMENT dataset (people*, users*, pets*)>
<!ELEMENT people EMPTY> <!ELEMENT people EMPTY>
<!ELEMENT users EMPTY> <!ELEMENT users EMPTY>
<!ELEMENT pets EMPTY>
<!ATTLIST people <!ATTLIST people
id CDATA #IMPLIED id CDATA #IMPLIED
name CDATA #IMPLIED name CDATA #IMPLIED
...@@ -12,3 +13,9 @@ ...@@ -12,3 +13,9 @@
password CDATA #IMPLIED password CDATA #IMPLIED
role CDATA #IMPLIED role CDATA #IMPLIED
> >
<!ATTLIST pets
id CDATA #IMPLIED
name CDATA #IMPLIED
food CDATA #IMPLIED
id_person CDATA #IMPLIED
>
...@@ -15,4 +15,16 @@ ...@@ -15,4 +15,16 @@
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/> <users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" /> <users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Pepe" food="Pienso" id_person="1"/>
<pets id="2" name="Ali" food="Pescado" id_person="2" />
<pets id="3" name="Nico" food="Pienso" id_person="3" />
<pets id="4" name="Kiko" food="Pienso" id_person="4" />
<pets id="5" name="Blanca" food="Atún" id_person="7" />
<pets id="6" name="Copito" food="Pienso" id_person="6" />
<pets id="7" name="Perico" food="Pienso" id_person="7" />
<pets id="8" name="Shiro" food="Carne" id_person="8" />
<pets id="9" name="Pancho" food="Pollo" id_person="9" />
<pets id="10" name="Mimi" food="Atun" id_person="10" />
</dataset> </dataset>
\ No newline at end of file
DROP TABLE People IF EXISTS; DROP TABLE pets IF EXISTS;
DROP TABLE Users IF EXISTS; DROP TABLE people IF EXISTS;
DROP TABLE users IF EXISTS;
...@@ -11,3 +11,13 @@ CREATE TABLE users ( ...@@ -11,3 +11,13 @@ CREATE TABLE users (
role VARCHAR(5) NOT NULL, role VARCHAR(5) NOT NULL,
PRIMARY KEY (login) PRIMARY KEY (login)
); );
CREATE TABLE pets (
id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL,
name VARCHAR(50) NOT NULL,
food VARCHAR(100) NOT NULL,
id_person int NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id_person) REFERENCES people(id)
);
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="chrome://restclient/content/restclient.html" />
<title>add</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">add</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Content-Type</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>application/x-www-form-urlencoded</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-body</td>
<td>name=Xián&amp;surname=Ximénez</td>
</tr>
<tr>
<td>click</td>
<td>link=POST</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>200 OK</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=#response-body-raw &gt; pre</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>css=#response-body-raw &gt; pre</td>
<td>responseBody</td>
</tr>
<tr>
<td>echo</td>
<td>${responseBody}</td>
<td></td>
</tr>
<tr>
<td>assertEval</td>
<td>JSON.parse(storedVars['responseBody']).name</td>
<td>Xián</td>
</tr>
<tr>
<td>assertEval</td>
<td>JSON.parse(storedVars['responseBody']).surname</td>
<td>Ximénez</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="chrome://restclient/content/restclient.html" />
<title>addNoFood</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">addNoFood</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Content-Type</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>application/x-www-form-urlencoded</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-body</td>
<td>name=Xián</td>
</tr>
<tr>
<td>click</td>
<td>link=POST</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>400 Bad Request</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="chrome://restclient/content/restclient.html" />
<title>addNoName</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">addNoName</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Content-Type</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>application/x-www-form-urlencoded</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-body</td>
<td>surname=Ximénez</td>
</tr>
<tr>
<td>click</td>
<td>link=POST</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>400 Bad Request</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="chrome://restclient/content/restclient.html" />
<title>delete</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">delete</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=DELETE</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people/11</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>200 OK</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="chrome://restclient/content/restclient.html" />
<title>deleteInvalidId</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">deleteInvalidId</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=DELETE</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people/100</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>400 Bad Request</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://localhost:9080/DAAExample/" />
<title>rest</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">rest</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=GET</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>200 OK</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=#response-body-raw &gt; pre</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>css=#response-body-raw &gt; pre</td>
<td>responseBody</td>
</tr>
<tr>
<td>echo</td>
<td>${responseBody}</td>
<td></td>
</tr>
<tr>
<td>assertEval</td>
<td>JSON.parse(storedVars['responseBody']).length</td>
<td>10</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://localhost:9080/DAAExample/" />
<title>rest</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">rest</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=GET</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>200 OK</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=#response-body-raw &gt; pre</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>css=#response-body-raw &gt; pre</td>
<td>responseBody</td>
</tr>
<tr>
<td>echo</td>
<td>${responseBody}</td>
<td></td>
</tr>
<tr>
<td>assertEval</td>
<td>JSON.parse(storedVars['responseBody']).length</td>
<td>10</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="chrome://restclient/content/restclient.html" />
<title>modify</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">modify</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Content-Type</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>application/x-www-form-urlencoded</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-body</td>
<td>name=Marta&amp;surname=Martínez</td>
</tr>
<tr>
<td>click</td>
<td>link=PUT</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people/4</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>200 OK</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=#response-body-raw &gt; pre</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>css=#response-body-raw &gt; pre</td>
<td>responseBody</td>
</tr>
<tr>
<td>echo</td>
<td>${responseBody}</td>
<td></td>
</tr>
<tr>
<td>assertEval</td>
<td>JSON.parse(storedVars['responseBody']).name</td>
<td>Marta</td>
</tr>
<tr>
<td>assertEval</td>
<td>JSON.parse(storedVars['responseBody']).surname</td>
<td>Martínez</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="chrome://restclient/content/restclient.html" />
<title>modifyInvalidId</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">modifyInvalidId</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Content-Type</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>application/x-www-form-urlencoded</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-body</td>
<td>name=Marta&amp;surname=Martínez</td>
</tr>
<tr>
<td>click</td>
<td>link=PUT</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people/100</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>400 Bad Request</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="chrome://restclient/content/restclient.html" />
<title>modifyNoFood</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">modifyNoFood</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Content-Type</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>application/x-www-form-urlencoded</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-body</td>
<td>name=Marta</td>
</tr>
<tr>
<td>click</td>
<td>link=PUT</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people/4</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>400 Bad Request</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="chrome://restclient/content/restclient.html" />
<title>modifyNoId</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">modifyNoId</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Content-Type</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>application/x-www-form-urlencoded</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-body</td>
<td>name=Marta&amp;surname=Martínez</td>
</tr>
<tr>
<td>click</td>
<td>link=PUT</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>405 Method Not Allowed</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="chrome://restclient/content/restclient.html" />
<title>modifyNoName</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">modifyNoName</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>chrome://restclient/content/restclient.html</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Cookie</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Headers</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Custom Header</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Content-Type</td>
</tr>
<tr>
<td>type</td>
<td>name=value</td>
<td>application/x-www-form-urlencoded</td>
</tr>
<tr>
<td>click</td>
<td>css=#modal-custom-header &gt; div.modal-footer &gt; input.btn.btn-inverse</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-body</td>
<td>surname=Martínez</td>
</tr>
<tr>
<td>click</td>
<td>link=PUT</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=request-url</td>
<td>http://localhost:9080/DAAExample/rest/people/4</td>
</tr>
<tr>
<td>click</td>
<td>id=request-button</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=×</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>css=span.header-value</td>
<td></td>
</tr>
<tr>
<td>assertText</td>
<td>css=span.header-value</td>
<td>400 Bad Request</td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
<title>Test Suite</title>
</head>
<body>
<table id="suiteTable" cellpadding="1" cellspacing="1" border="1" class="selenium"><tbody>
<tr><td><b>Test Suite</b></td></tr>
<tr><td><a href="list.html">list</a></td></tr>
<tr><td><a href="add.html">add</a></td></tr>
<tr><td><a href="addNoName.html">addNoName</a></td></tr>
<tr><td><a href="addNoSurname.html">addNoSurname</a></td></tr>
<tr><td><a href="modify.html">modify</a></td></tr>
<tr><td><a href="modifyInvalidId.html">modifyInvalidId</a></td></tr>
<tr><td><a href="modifyNoId.html">modifyNoId</a></td></tr>
<tr><td><a href="modifyNoName.html">modifyNoName</a></td></tr>
<tr><td><a href="modifyNoSurname.html">modifyNoSurname</a></td></tr>
<tr><td><a href="delete.html">delete</a></td></tr>
<tr><td><a href="deleteInvalidId.html">deleteInvalidId</a></td></tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://localhost:9080/DAAExample/" />
<title>example</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">example</td></tr>
</thead><tbody>
<tr>
<td>createCookie</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>main.html</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td></td>
<td></td>
</tr>
<tr>
<td>waitForCondition</td>
<td>selenium.browserbot.getCurrentWindow().jQuery.active == 0</td>
<td>1000</td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Hola</td>
</tr>
<tr>
<td>type</td>
<td>name=surname</td>
<td>Mundo</td>
</tr>
<tr>
<td>click</td>
<td>id=btnSubmit</td>
<td></td>
</tr>
<tr>
<td>waitForCondition</td>
<td>selenium.browserbot.getCurrentWindow().jQuery.active == 0</td>
<td>1000</td>
</tr>
<tr>
<td>verifyText</td>
<td>css=tr:last-child &gt; td.name</td>
<td>Hola</td>
</tr>
<tr>
<td>verifyText</td>
<td>css=tr:last-child &gt; td.surname</td>
<td>Mundo</td>
</tr>
<tr>
<td>deleteCookie</td>
<td>token</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://localhost:9080/DAAExample/" />
<title>delete</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">delete</td></tr>
</thead><tbody>
<tr>
<td>createCookie</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>main.html</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td></td>
<td></td>
</tr>
<tr>
<td>waitForCondition</td>
<td>selenium.browserbot.getCurrentWindow().jQuery.active == 0</td>
<td>1000</td>
</tr>
<tr>
<td>storeXpathCount</td>
<td>//tr</td>
<td>rows</td>
</tr>
<tr>
<td>click</td>
<td>xpath=(//a[contains(text(),'Delete')])[last()]</td>
<td></td>
</tr>
<tr>
<td>assertConfirmation</td>
<td>Está a punto de eliminar a una persona. ¿Está seguro de que desea continuar?</td>
<td></td>
</tr>
<tr>
<td>waitForCondition</td>
<td>selenium.browserbot.getCurrentWindow().jQuery.active == 0</td>
<td>1000</td>
</tr>
<tr>
<td>storeXpathCount</td>
<td>//tr</td>
<td>rowsAfterDeletion</td>
</tr>
<tr>
<td>storeEval</td>
<td>storedVars['rows']-storedVars['rowsAfterDeletion']</td>
<td>rowsDeleted</td>
</tr>
<tr>
<td>verifyExpression</td>
<td>${rowsDeleted}</td>
<td>1</td>
</tr>
<tr>
<td>deleteCookie</td>
<td>token</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://localhost:9080/DAAExample/" />
<title>edit</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">edit</td></tr>
</thead><tbody>
<tr>
<td>createCookie</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>main.html</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td></td>
<td></td>
</tr>
<tr>
<td>waitForCondition</td>
<td>selenium.browserbot.getCurrentWindow().jQuery.active == 0</td>
<td>1000</td>
</tr>
<tr>
<td>click</td>
<td>xpath=(//a[contains(text(),'Edit')])[last()]</td>
<td></td>
</tr>
<tr>
<td>storeAttribute</td>
<td>//tr[last()]/@id</td>
<td>personId</td>
</tr>
<tr>
<td>type</td>
<td>name=name</td>
<td>Ana</td>
</tr>
<tr>
<td>type</td>
<td>name=surname</td>
<td>María</td>
</tr>
<tr>
<td>click</td>
<td>id=btnSubmit</td>
<td></td>
</tr>
<tr>
<td>waitForCondition</td>
<td>selenium.browserbot.getCurrentWindow().jQuery.active == 0</td>
<td>1000</td>
</tr>
<tr>
<td>verifyText</td>
<td>//tr[@id='${personId}']/td[@class = 'name']</td>
<td>Ana</td>
</tr>
<tr>
<td>verifyText</td>
<td>//tr[@id='${personId}']/td[@class = 'surname']</td>
<td>María</td>
</tr>
<tr>
<td>deleteCookie</td>
<td>token</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
<title>Test Suite</title>
</head>
<body>
<table id="suiteTable" cellpadding="1" cellspacing="1" border="1" class="selenium"><tbody>
<tr><td><b>Test Suite</b></td></tr>
<tr><td><a href="list.html">list</a></td></tr>
<tr><td><a href="add.html">add</a></td></tr>
<tr><td><a href="edit.html">edit</a></td></tr>
<tr><td><a href="delete.html">delete</a></td></tr>
</tbody></table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://localhost:9080/DAAExample/" />
<title>list</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">list</td></tr>
</thead><tbody>
<tr>
<td>createCookie</td>
<td>token=bXJqYXRvOm1yamF0bw==</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>main.html</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td></td>
<td></td>
</tr>
<tr>
<td>waitForCondition</td>
<td>selenium.browserbot.getCurrentWindow().jQuery.active == 0</td>
<td>1000</td>
</tr>
<tr>
<td>verifyXpathCount</td>
<td>//tr</td>
<td>11</td>
</tr>
<tr>
<td>deleteCookie</td>
<td>token</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment