Commit dfbb5e3a authored by michada's avatar michada

Tests for people management functionality added.

DAO class modified to support and alternative JNDI for the data source
through the "db.jndi" system property. A new testing database resource
was added to the Context.xml file.

DAO tests use the "spring-test" library to create a JNDI context, as
JUnit doesn't create any context. Additionaly, a custom DataSource is
created using the "commons-dbcp" library and injected into the context.
Testing database creation scripts are provided in the mysql-tests.sql
file.

REST API is tested in the server side using the
"jersey-test-framework-provider-grizzly2" library. These tests also use
the "spring-test" and "commons-dbcp" libraries to create a context and
inject a custom data source.

REST API is tested in the client side using the "Selenium IDE" and
"RESTClient" plugins for Firefox. Manual database reset is required
before launching the test suite.

Web interface is tested using the "Selenium IDE" plugin for Firefox and
using the "Selenium WebDrive" in JUnit tests. Same tests are implemented
in both cases. Selenium IDE tests require a manual database reset before
launching the test suite. JUnit test require the server to be started
using the testing database.
parent bf0490de
...@@ -28,6 +28,34 @@ ...@@ -28,6 +28,34 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.39.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.0.0.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-grizzly2</artifactId>
<version>2.5.1</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.glassfish.jersey.containers</groupId> <groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId> <artifactId>jersey-container-servlet</artifactId>
......
...@@ -17,8 +17,11 @@ public abstract class DAO { ...@@ -17,8 +17,11 @@ public abstract class DAO {
Context initContext; Context initContext;
try { try {
initContext = new InitialContext(); initContext = new InitialContext();
this.dataSource = (DataSource) initContext.lookup(JNDI_NAME); this.dataSource = (DataSource) initContext.lookup(
System.getProperty("db.jndi", JNDI_NAME)
);
} catch (NamingException e) { } catch (NamingException e) {
e.printStackTrace();
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
......
...@@ -19,7 +19,21 @@ ...@@ -19,7 +19,21 @@
<!-- url: The JDBC connection url for connecting to your MySQL database. --> <!-- url: The JDBC connection url for connecting to your MySQL database. -->
<Resource name="jdbc/daaexample" auth="Container" type="javax.sql.DataSource" <Resource name="jdbc/daaexample"
maxActive="100" maxIdle="30" maxWait="10000" username="daa" password="daa" auth="Container"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/daaexample" /> type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="daa" password="daa"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/daaexample"
/>
<Resource name="jdbc/daaexampletest"
auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="daa" password="daa"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/daaexampletest"
/>
</Context> </Context>
\ No newline at end of file
package es.uvigo.esei.daa;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
import es.uvigo.esei.daa.dao.PeopleDAOTest;
import es.uvigo.esei.daa.rest.PeopleTest;
import es.uvigo.esei.daa.web.PeopleWebTest;
@SuiteClasses({ PeopleDAOTest.class, PeopleTest.class, PeopleWebTest.class })
@RunWith(Suite.class)
public class PeopleTestSuite {
}
package es.uvigo.esei.daa;
import static org.junit.Assert.assertEquals;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.NamingException;
import javax.sql.DataSource;
import javax.ws.rs.core.Response;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.mock.jndi.SimpleNamingContextBuilder;
public final class TestUtils {
private TestUtils() {}
public static void createFakeContext() throws NamingException {
final SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
builder.bind("java:/comp/env/jdbc/daaexample", createTestingDataSource());
builder.activate();
}
private static BasicDataSource createTestingDataSource() {
final BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/daaexampletest?allowMultiQueries=true");
ds.setUsername("daa");
ds.setPassword("daa");
ds.setMaxActive(100);
ds.setMaxIdle(30);
ds.setMaxWait(10000);
return ds;
}
public static void clearTestDatabase() throws SQLException {
final String queries = new StringBuilder()
.append("DELETE FROM `people`;")
.append("DELETE FROM `users`;")
.toString();
final DataSource ds = createTestingDataSource();
try (Connection connection = ds.getConnection()) {
try (Statement statement = connection.createStatement()) {
statement.execute(queries);
}
}
}
public static void initTestDatabase() throws SQLException {
final String queries = new StringBuilder()
.append("ALTER TABLE `people` AUTO_INCREMENT = 1;")
.append("ALTER TABLE `users` AUTO_INCREMENT = 1;")
.append("INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0, 'Antón', 'Álvarez');")
.append("INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0, 'Ana', 'Amargo');")
.append("INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0, 'Manuel', 'Martínez');")
.append("INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0, 'María', 'Márquez');")
.append("INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0, 'Lorenzo', 'López');")
.append("INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0, 'Laura', 'Laredo');")
.append("INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0, 'Perico', 'Palotes');")
.append("INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0, 'Patricia', 'Pérez');")
.append("INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0, 'Juan', 'Jiménez');")
.append("INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0, 'Julia', 'Justa');")
.append("INSERT INTO `users` (`login`,`password`) VALUES ('mrjato', '59189332a4abf8ddf66fde068cad09eb563b4bd974f7663d97ff6852a7910a73');")
.toString();
final DataSource ds = createTestingDataSource();
try (Connection connection = ds.getConnection()) {
try (Statement statement = connection.createStatement()) {
statement.execute(queries);
}
}
}
public static void assertOkStatus(final Response response) {
assertEquals("Unexpected status code", Response.Status.OK.getStatusCode(), response.getStatus());
}
public static void assertBadRequestStatus(final Response response) {
assertEquals("Unexpected status code", Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
}
}
package es.uvigo.esei.daa.dao;
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import es.uvigo.esei.daa.TestUtils;
import es.uvigo.esei.daa.entities.Person;
public class PeopleDAOTest {
private PeopleDAO dao;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
TestUtils.createFakeContext();
}
@Before
public void setUp() throws Exception {
TestUtils.initTestDatabase();
this.dao = new PeopleDAO();
}
@After
public void tearDown() throws Exception {
TestUtils.clearTestDatabase();
this.dao = null;
}
@Test
public void testGet() throws DAOException {
final Person person = this.dao.get(4);
assertEquals(4, person.getId());
assertEquals("María", person.getName());
assertEquals("Márquez", person.getSurname());
}
@Test(expected = IllegalArgumentException.class)
public void testGetInvalidId() throws DAOException {
this.dao.get(100);
}
@Test
public void testList() throws DAOException {
assertEquals(10, this.dao.list().size());
}
@Test
public void testDelete() throws DAOException {
this.dao.delete(4);
assertEquals(9, this.dao.list().size());
}
@Test(expected = IllegalArgumentException.class)
public void testDeleteInvalidId() throws DAOException {
this.dao.delete(100);
}
@Test
public void testModify() throws DAOException {
this.dao.modify(5, "John", "Doe");
final Person person = this.dao.get(5);
assertEquals(5, person.getId());
assertEquals("John", person.getName());
assertEquals("Doe", person.getSurname());
}
@Test(expected = IllegalArgumentException.class)
public void testModifyInvalidId() throws DAOException {
this.dao.modify(100, "John", "Doe");
}
@Test(expected = IllegalArgumentException.class)
public void testModifyNullName() throws DAOException {
this.dao.modify(5, null, "Doe");
}
@Test(expected = IllegalArgumentException.class)
public void testModifyNullSurname() throws DAOException {
this.dao.modify(5, "John", null);
}
@Test
public void testAdd() throws DAOException {
final Person person = this.dao.add("John", "Doe");
assertEquals("John", person.getName());
assertEquals("Doe", person.getSurname());
final Person personGet = this.dao.get(person.getId());
assertEquals(person.getId(), personGet.getId());
assertEquals("John", personGet.getName());
assertEquals("Doe", personGet.getSurname());
}
@Test(expected = IllegalArgumentException.class)
public void testAddNullName() throws DAOException {
this.dao.add(null, "Doe");
}
@Test(expected = IllegalArgumentException.class)
public void testAddNullSurname() throws DAOException {
this.dao.add("John", null);
}
}
DELETE FROM `people`;
DELETE FROM `users`;
ALTER TABLE `people` AUTO_INCREMENT = 1;
ALTER TABLE `users` AUTO_INCREMENT = 1;
\ No newline at end of file
DROP TABLE IF EXISTS `people`;
CREATE TABLE `people` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`surname` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
);
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`login` varchar(100) NOT NULL,
`password` varbinary(64) DEFAULT NULL,
PRIMARY KEY (`login`)
);
INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0,'Antón','Álvarez');
INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0,'Ana','Amargo');
INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0,'Manuel','Martínez');
INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0,'María','Márquez');
INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0,'Lorenzo','López');
INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0,'Laura','Laredo');
INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0,'Perico','Palotes');
INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0,'Patricia','Pérez');
INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0,'Juan','Jiménez');
INSERT INTO `people` (`id`,`name`,`surname`) VALUES (0,'Julia','Justa');
-- login: mrjato, password: mrjato
INSERT INTO `users` (`login`,`password`) VALUES ('mrjato', '59189332a4abf8ddf66fde068cad09eb563b4bd974f7663d97ff6852a7910a73');
package es.uvigo.esei.daa.rest;
import static es.uvigo.esei.daa.TestUtils.assertOkStatus;
import static es.uvigo.esei.daa.TestUtils.assertBadRequestStatus;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.util.List;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import es.uvigo.esei.daa.TestUtils;
import es.uvigo.esei.daa.entities.Person;
public class PeopleTest extends JerseyTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
TestUtils.createFakeContext();
}
@Before
public void setUp() throws Exception {
super.setUp();
TestUtils.initTestDatabase();
}
@After
public void tearDown() throws Exception {
super.tearDown();
TestUtils.clearTestDatabase();
}
@Override
protected Application configure() {
return new ResourceConfig(People.class)
.register(JacksonJsonProvider.class)
.property("com.sun.jersey.api.json.POJOMappingFeature", Boolean.TRUE);
}
@Override
protected void configureClient(ClientConfig config) {
super.configureClient(config);
config.register(JacksonJsonProvider.class);
config.property("com.sun.jersey.api.json.POJOMappingFeature", Boolean.TRUE);
}
@Test
public void testList() throws IOException {
final Response response = target("people").request().get();
assertOkStatus(response);
final List<Person> people = response.readEntity(new GenericType<List<Person>>(){});
assertEquals(10, people.size());
}
@Test
public void testGet() throws IOException {
final Response response = target("people/4").request().get();
assertOkStatus(response);
final Person person = response.readEntity(Person.class);
assertEquals(4, person.getId());
assertEquals("María", person.getName());
assertEquals("Márquez", person.getSurname());
}
@Test
public void testGetInvalidId() throws IOException {
assertBadRequestStatus(target("people/100").request().get());
}
@Test
public void testAdd() throws IOException {
final Form form = new Form();
form.param("name", "Xoel");
form.param("surname", "Ximénez");
final Response response = target("people")
.request(MediaType.APPLICATION_JSON_TYPE)
.post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));
assertOkStatus(response);
final Person person = response.readEntity(Person.class);
assertEquals(11, person.getId());
assertEquals("Xoel", person.getName());
assertEquals("Ximénez", person.getSurname());
}
@Test
public void testAddMissingName() throws IOException {
final Form form = new Form();
form.param("surname", "Ximénez");
final Response response = target("people")
.request(MediaType.APPLICATION_JSON_TYPE)
.post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));
assertBadRequestStatus(response);
}
@Test
public void testAddMissingSurname() throws IOException {
final Form form = new Form();
form.param("name", "Xoel");
final Response response = target("people")
.request(MediaType.APPLICATION_JSON_TYPE)
.post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));
assertBadRequestStatus(response);
}
@Test
public void testModify() throws IOException {
final Form form = new Form();
form.param("name", "Marta");
form.param("surname", "Méndez");
final Response response = target("people/4")
.request(MediaType.APPLICATION_JSON_TYPE)
.put(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));
assertOkStatus(response);
final Person person = response.readEntity(Person.class);
assertEquals(4, person.getId());
assertEquals("Marta", person.getName());
assertEquals("Méndez", person.getSurname());
}
@Test
public void testModifyName() throws IOException {
final Form form = new Form();
form.param("name", "Marta");
final Response response = target("people/4")
.request(MediaType.APPLICATION_JSON_TYPE)
.put(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));
assertBadRequestStatus(response);
}
@Test
public void testModifySurname() throws IOException {
final Form form = new Form();
form.param("surname", "Méndez");
final Response response = target("people/4")
.request(MediaType.APPLICATION_JSON_TYPE)
.put(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));
assertBadRequestStatus(response);
}
@Test
public void testModifyInvalidId() throws IOException {
final Form form = new Form();
form.param("name", "Marta");
form.param("surname", "Méndez");
final Response response = target("people/100")
.request(MediaType.APPLICATION_JSON_TYPE)
.put(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE));
assertBadRequestStatus(response);
}
@Test
public void testDelete() throws IOException {
final Response response = target("people/4").request().delete();
assertOkStatus(response);
assertEquals(4, (int) response.readEntity(Integer.class));
}
@Test
public void testDeleteInvalidId() throws IOException {
assertBadRequestStatus(target("people/100").request().delete());
}
}
package es.uvigo.esei.daa.web;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import es.uvigo.esei.daa.TestUtils;
public class PeopleWebTest {
private static final int DEFAULT_WAIT_TIME = 1;
private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();
@BeforeClass
public static void setUpBeforeClass() throws Exception {
TestUtils.createFakeContext();
}
@Before
public void setUp() throws Exception {
TestUtils.initTestDatabase();
driver = new FirefoxDriver();
baseUrl = "http://localhost:9080/DAAExample/";
driver.get(baseUrl);
driver.manage().addCookie(
new Cookie(
"token",
"25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666"
)
);
// Driver will wait DEFAULT_WAIT_TIME if it doesn't find and element.
driver.manage().timeouts().implicitlyWait(DEFAULT_WAIT_TIME, TimeUnit.SECONDS);
driver.get(baseUrl + "main.html");
driver.findElement(By.id("people-list"));
}
@After
public void tearDown() throws Exception {
TestUtils.clearTestDatabase();
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
@Test
public void testList() throws Exception {
verifyXpathCount("//tr", 11);
}
@Test
public void testAdd() throws Exception {
final String name = "Hola";
final String surname = "Mundo";
driver.findElement(By.name("name")).clear();
driver.findElement(By.name("name")).sendKeys(name);
driver.findElement(By.name("surname")).clear();
driver.findElement(By.name("surname")).sendKeys(surname);
driver.findElement(By.id("btnSubmit")).click();
driver.findElement(By.xpath("//td[text()='Hola']"));
assertEquals(name,
driver.findElement(By.cssSelector("tr:last-child > td.name")).getText()
);
assertEquals(surname,
driver.findElement(By.cssSelector("tr:last-child > td.surname")).getText()
);
}
@Test
public void testEdit() throws Exception {
final String name = "Xián";
final String surname = "Ximénez";
final String trId = driver.findElement(By.xpath("//tr[last()]")).getAttribute("id");
driver.findElement(By.xpath("//tr[@id='" + trId + "']//a[text()='Edit']")).click();
driver.findElement(By.name("name")).clear();
driver.findElement(By.name("name")).sendKeys(name);
driver.findElement(By.name("surname")).clear();
driver.findElement(By.name("surname")).sendKeys(surname);
driver.findElement(By.id("btnSubmit")).click();
waitForTextInElement(By.name("name"), "");
waitForTextInElement(By.name("surname"), "");
assertEquals(name,
driver.findElement(By.xpath("//tr[@id='" + trId + "']/td[@class='name']")).getText()
);
assertEquals(surname,
driver.findElement(By.xpath("//tr[@id='" + trId + "']/td[@class='surname']")).getText()
);
}
@Test
public void testDelete() throws Exception {
final String trId = driver.findElement(By.xpath("//tr[last()]")).getAttribute("id");
driver.findElement(By.xpath("(//a[contains(text(),'Delete')])[last()]")).click();
driver.switchTo().alert().accept();
waitUntilNotFindElement(By.id(trId));
}
private boolean waitUntilNotFindElement(By by) {
return new WebDriverWait(driver, DEFAULT_WAIT_TIME)
.until(ExpectedConditions.invisibilityOfElementLocated(by));
}
private boolean waitForTextInElement(By by, String text) {
return new WebDriverWait(driver, DEFAULT_WAIT_TIME)
.until(ExpectedConditions.textToBePresentInElementLocated(by, text));
}
private void verifyXpathCount(String xpath, int count) {
try {
assertEquals(count, driver.findElements(By.xpath(xpath)).size());
} catch (Error e) {
verificationErrors.append(e.toString());
}
}
}
<?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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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>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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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>addNoSurname</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">addNoSurname</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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>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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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>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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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 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>modifyNoSurname</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">modifyNoSurname</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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>
<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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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=25d35467c91f0f8bbcc9a4f22bb359170643ccfdf38851599a03a8ffc0756666</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