Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
daaexample
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Iria Martínez Álvarez
daaexample
Commits
10d86e0e
Commit
10d86e0e
authored
Apr 02, 2021
by
Iria19
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Añadidos los test de Pet
Contiene los test de Pet
parent
d2648847
Changes
38
Hide whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
2392 additions
and
26 deletions
+2392
-26
README.md
README.md
+69
-2
PetsDAO.java
src/main/java/es/uvigo/esei/daa/dao/PetsDAO.java
+3
-1
Pet.java
src/main/java/es/uvigo/esei/daa/entities/Pet.java
+2
-1
PetsResource.java
src/main/java/es/uvigo/esei/daa/rest/PetsResource.java
+11
-3
pets.js
src/main/webapp/js/view/pets.js
+17
-15
PetsDataset.java
src/test/java/es/uvigo/esei/daa/dataset/PetsDataset.java
+83
-0
PetUnitTest.java
src/test/java/es/uvigo/esei/daa/entities/PetUnitTest.java
+103
-0
AuthorizationFilter.java
...t/java/es/uvigo/esei/daa/filters/AuthorizationFilter.java
+1
-1
IsEqualToPet.java
src/test/java/es/uvigo/esei/daa/matchers/IsEqualToPet.java
+59
-0
PetsResourceTest.java
src/test/java/es/uvigo/esei/daa/rest/PetsResourceTest.java
+319
-0
dataset-add.xml
src/test/resources/datasets/dataset-add.xml
+12
-0
dataset-addPet.xml
src/test/resources/datasets/dataset-addPet.xml
+31
-0
dataset-delete.xml
src/test/resources/datasets/dataset-delete.xml
+12
-0
dataset-deletePet.xml
src/test/resources/datasets/dataset-deletePet.xml
+29
-0
dataset-modify.xml
src/test/resources/datasets/dataset-modify.xml
+11
-0
dataset-modifyPet.xml
src/test/resources/datasets/dataset-modifyPet.xml
+29
-0
dataset.dtd
src/test/resources/datasets/dataset.dtd
+8
-1
dataset.xml
src/test/resources/datasets/dataset.xml
+12
-0
hsqldb-drop.sql
src/test/resources/db/hsqldb-drop.sql
+3
-2
hsqldb.sql
src/test/resources/db/hsqldb.sql
+10
-0
add.html
src/test/webapp/rest/pets/add.html
+132
-0
addNoFood.html
src/test/webapp/rest/pets/addNoFood.html
+107
-0
addNoName.html
src/test/webapp/rest/pets/addNoName.html
+107
-0
delete.html
src/test/webapp/rest/pets/delete.html
+77
-0
deleteInvalidId.html
src/test/webapp/rest/pets/deleteInvalidId.html
+77
-0
get.html
src/test/webapp/rest/pets/get.html
+96
-0
list.html
src/test/webapp/rest/pets/list.html
+96
-0
modify.html
src/test/webapp/rest/pets/modify.html
+132
-0
modifyInvalidId.html
src/test/webapp/rest/pets/modifyInvalidId.html
+107
-0
modifyNoFood.html
src/test/webapp/rest/pets/modifyNoFood.html
+107
-0
modifyNoId.html
src/test/webapp/rest/pets/modifyNoId.html
+107
-0
modifyNoName.html
src/test/webapp/rest/pets/modifyNoName.html
+107
-0
rest.html
src/test/webapp/rest/pets/rest.html
+24
-0
add.html
src/test/webapp/web/pets/add.html
+71
-0
delete.html
src/test/webapp/web/pets/delete.html
+76
-0
edit.html
src/test/webapp/web/pets/edit.html
+82
-0
example.html
src/test/webapp/web/pets/example.html
+17
-0
list.html
src/test/webapp/web/pets/list.html
+46
-0
No files found.
README.md
View file @
10d86e0e
# 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`
src/main/java/es/uvigo/esei/daa/dao/PetsDAO.java
View file @
10d86e0e
...
@@ -144,11 +144,12 @@ public class PetsDAO extends DAO {
...
@@ -144,11 +144,12 @@ 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
())
{
final
String
query
=
"UPDATE pets SET name=?, food=?, id_person=? WHERE id=?"
;
final
String
query
=
"UPDATE pets SET name=?, food=?, id_person=? WHERE id=?"
;
try
(
PreparedStatement
statement
=
conn
.
prepareStatement
(
query
))
{
try
(
PreparedStatement
statement
=
conn
.
prepareStatement
(
query
))
{
statement
.
setString
(
1
,
pet
.
getName
());
statement
.
setString
(
1
,
pet
.
getName
());
statement
.
setString
(
2
,
pet
.
getFood
());
statement
.
setString
(
2
,
pet
.
getFood
());
...
@@ -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
();
}
}
...
...
src/main/java/es/uvigo/esei/daa/entities/Pet.java
View file @
10d86e0e
...
@@ -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
...
...
src/main/java/es/uvigo/esei/daa/rest/PetsResource.java
View file @
10d86e0e
...
@@ -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
)
...
...
src/main/webapp/js/view/pets.js
View file @
10d86e0e
...
@@ -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"> </th>
\
<th class="col-sm-3"> </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>
\
...
...
src/test/java/es/uvigo/esei/daa/dataset/PetsDataset.java
0 → 100644
View file @
10d86e0e
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
());
}
}
src/test/java/es/uvigo/esei/daa/entities/PetUnitTest.java
0 → 100644
View file @
10d86e0e
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
();
}
}
src/test/java/es/uvigo/esei/daa/filters/AuthorizationFilter.java
View file @
10d86e0e
...
@@ -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
;
...
...
src/test/java/es/uvigo/esei/daa/matchers/IsEqualToPet.java
0 → 100644
View file @
10d86e0e
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
);
}
}
src/test/java/es/uvigo/esei/daa/rest/PetsResourceTest.java
0 → 100644
View file @
10d86e0e
package
es
.
uvigo
.
esei
.
daa
.
rest
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
PeopleDataset
.
nonExistentId
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
PetsDataset
.
existentId
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
PetsDataset
.
existentPet
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
PetsDataset
.
newFood
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
PetsDataset
.
newIdPerson
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
PetsDataset
.
newName
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
PetsDataset
.
newPet
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
PetsDataset
.
petsOfOwner
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
UsersDataset
.
adminLogin
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
UsersDataset
.
normalLogin
;
import
static
es
.
uvigo
.
esei
.
daa
.
dataset
.
UsersDataset
.
userToken
;
import
static
es
.
uvigo
.
esei
.
daa
.
matchers
.
HasHttpStatus
.
hasBadRequestStatus
;
import
static
es
.
uvigo
.
esei
.
daa
.
matchers
.
HasHttpStatus
.
hasOkStatus
;
import
static
es
.
uvigo
.
esei
.
daa
.
matchers
.
HasHttpStatus
.
hasUnauthorized
;
import
static
es
.
uvigo
.
esei
.
daa
.
matchers
.
IsEqualToPet
.
containsPetsInAnyOrder
;
import
static
es
.
uvigo
.
esei
.
daa
.
matchers
.
IsEqualToPet
.
equalsToPet
;
import
static
javax
.
ws
.
rs
.
client
.
Entity
.
entity
;
import
static
org
.
hamcrest
.
CoreMatchers
.
equalTo
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
hamcrest
.
MatcherAssert
.
assertThat
;
import
java.io.IOException
;
import
java.util.List
;
import
javax.sql.DataSource
;
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.glassfish.jersey.client.ClientConfig
;
import
org.glassfish.jersey.test.JerseyTest
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.test.context.ContextConfiguration
;
import
org.springframework.test.context.TestExecutionListeners
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
;
import
com.github.springtestdbunit.DbUnitTestExecutionListener
;
import
com.github.springtestdbunit.annotation.DatabaseSetup
;
import
com.github.springtestdbunit.annotation.ExpectedDatabase
;
import
es.uvigo.esei.daa.DAAExampleTestApplication
;
import
es.uvigo.esei.daa.entities.Pet
;
import
es.uvigo.esei.daa.listeners.ApplicationContextBinding
;
import
es.uvigo.esei.daa.listeners.ApplicationContextJndiBindingTestExecutionListener
;
import
es.uvigo.esei.daa.listeners.DbManagement
;
import
es.uvigo.esei.daa.listeners.DbManagementTestExecutionListener
;
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@ContextConfiguration
(
"classpath:contexts/mem-context.xml"
)
@TestExecutionListeners
({
DbUnitTestExecutionListener
.
class
,
DbManagementTestExecutionListener
.
class
,
ApplicationContextJndiBindingTestExecutionListener
.
class
})
@ApplicationContextBinding
(
jndiUrl
=
"java:/comp/env/jdbc/daaexample"
,
type
=
DataSource
.
class
)
@DbManagement
(
create
=
"classpath:db/hsqldb.sql"
,
drop
=
"classpath:db/hsqldb-drop.sql"
)
@DatabaseSetup
(
"/datasets/dataset.xml"
)
@ExpectedDatabase
(
"/datasets/dataset.xml"
)
public
class
PetsResourceTest
extends
JerseyTest
{
@Override
protected
Application
configure
()
{
return
new
DAAExampleTestApplication
();
}
@Override
protected
void
configureClient
(
ClientConfig
config
)
{
super
.
configureClient
(
config
);
// Enables JSON transformation in client
config
.
register
(
JacksonJsonProvider
.
class
);
config
.
property
(
"com.sun.jersey.api.json.POJOMappingFeature"
,
Boolean
.
TRUE
);
}
@Test
public
void
testList
()
throws
IOException
{
int
ownerId
=
1
;
final
Response
response
=
target
(
"pets"
)
.
queryParam
(
"id_person"
,
ownerId
)
.
request
()
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
get
();
assertThat
(
response
,
hasOkStatus
());
final
List
<
Pet
>
pets
=
response
.
readEntity
(
new
GenericType
<
List
<
Pet
>>(){});
assertThat
(
pets
,
containsPetsInAnyOrder
(
petsOfOwner
(
ownerId
)));
}
@Test
public
void
testListUnauthorized
()
throws
IOException
{
final
Response
response
=
target
(
"pets"
).
request
()
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
normalLogin
()))
.
get
();
assertThat
(
response
,
hasUnauthorized
());
}
@Test
public
void
testGet
()
throws
IOException
{
final
Response
response
=
target
(
"pets/"
+
existentId
()).
request
()
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
get
();
assertThat
(
response
,
hasOkStatus
());
final
Pet
pet
=
response
.
readEntity
(
Pet
.
class
);
assertThat
(
pet
,
is
(
equalsToPet
(
existentPet
())));
}
@Test
public
void
testGetUnauthorized
()
throws
IOException
{
final
Response
response
=
target
(
"pets/"
+
existentId
()).
request
()
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
normalLogin
()))
.
get
();
assertThat
(
response
,
hasUnauthorized
());
}
@Test
public
void
testGetInvalidId
()
throws
IOException
{
final
Response
response
=
target
(
"pets/"
+
nonExistentId
()).
request
()
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
get
();
assertThat
(
response
,
hasBadRequestStatus
());
}
@Test
@ExpectedDatabase
(
"/datasets/dataset-addPet.xml"
)
public
void
testAdd
()
throws
IOException
{
final
Form
form
=
new
Form
();
form
.
param
(
"name"
,
newName
());
form
.
param
(
"food"
,
newFood
());
form
.
param
(
"id_person"
,
Integer
.
toString
(
newIdPerson
()));
final
Response
response
=
target
(
"pets"
).
request
(
MediaType
.
APPLICATION_JSON_TYPE
)
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
post
(
entity
(
form
,
MediaType
.
APPLICATION_FORM_URLENCODED_TYPE
));
assertThat
(
response
,
hasOkStatus
());
final
Pet
pet
=
response
.
readEntity
(
Pet
.
class
);
assertThat
(
pet
,
is
(
equalsToPet
(
newPet
())));
}
@Test
public
void
testAddUnauthorized
()
throws
IOException
{
final
Form
form
=
new
Form
();
form
.
param
(
"name"
,
newName
());
form
.
param
(
"food"
,
newFood
());
form
.
param
(
"id_person"
,
newIdPerson
()+
""
);
final
Response
response
=
target
(
"pets"
).
request
(
MediaType
.
APPLICATION_JSON_TYPE
)
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
normalLogin
()))
.
post
(
entity
(
form
,
MediaType
.
APPLICATION_FORM_URLENCODED_TYPE
));
assertThat
(
response
,
hasUnauthorized
());
}
@Test
public
void
testAddMissingName
()
throws
IOException
{
final
Form
form
=
new
Form
();
form
.
param
(
"food"
,
newFood
());
form
.
param
(
"id_person"
,
newIdPerson
()+
""
);
final
Response
response
=
target
(
"pets"
).
request
(
MediaType
.
APPLICATION_JSON_TYPE
)
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
post
(
entity
(
form
,
MediaType
.
APPLICATION_FORM_URLENCODED_TYPE
));
assertThat
(
response
,
hasBadRequestStatus
());
}
@Test
public
void
testAddMissingFood
()
throws
IOException
{
final
Form
form
=
new
Form
();
form
.
param
(
"name"
,
newName
());
form
.
param
(
"id_person"
,
newIdPerson
()+
""
);
final
Response
response
=
target
(
"pets"
).
request
(
MediaType
.
APPLICATION_JSON_TYPE
)
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
post
(
entity
(
form
,
MediaType
.
APPLICATION_FORM_URLENCODED_TYPE
));
assertThat
(
response
,
hasBadRequestStatus
());
}
@Test
public
void
testAddMissingIdPerson
()
throws
IOException
{
final
Form
form
=
new
Form
();
form
.
param
(
"name"
,
newName
());
form
.
param
(
"food"
,
newFood
());
final
Response
response
=
target
(
"pets"
).
request
(
MediaType
.
APPLICATION_JSON_TYPE
)
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
post
(
entity
(
form
,
MediaType
.
APPLICATION_FORM_URLENCODED_TYPE
));
assertThat
(
response
,
hasBadRequestStatus
());
}
@Test
@ExpectedDatabase
(
"/datasets/dataset-modifyPet.xml"
)
public
void
testModify
()
throws
IOException
{
final
Form
form
=
new
Form
();
form
.
param
(
"name"
,
newName
());
form
.
param
(
"food"
,
newFood
());
form
.
param
(
"id_person"
,
newIdPerson
()+
""
);
final
Response
response
=
target
(
"pets/"
+
existentId
()).
request
(
MediaType
.
APPLICATION_JSON_TYPE
)
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
put
(
entity
(
form
,
MediaType
.
APPLICATION_FORM_URLENCODED_TYPE
));
assertThat
(
response
,
hasOkStatus
());
final
Pet
modifiedPet
=
response
.
readEntity
(
Pet
.
class
);
final
Pet
pet
=
existentPet
();
pet
.
setName
(
newName
());
pet
.
setFood
(
newFood
());
assertThat
(
modifiedPet
,
is
(
equalsToPet
(
pet
)));
}
@Test
public
void
testModifyUnauthorized
()
throws
IOException
{
final
Form
form
=
new
Form
();
form
.
param
(
"name"
,
newName
());
form
.
param
(
"food"
,
newFood
());
final
Response
response
=
target
(
"pets/"
+
existentId
()).
request
(
MediaType
.
APPLICATION_JSON_TYPE
)
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
normalLogin
()))
.
put
(
entity
(
form
,
MediaType
.
APPLICATION_FORM_URLENCODED_TYPE
));
assertThat
(
response
,
hasUnauthorized
());
}
@Test
public
void
testModifyName
()
throws
IOException
{
final
Form
form
=
new
Form
();
form
.
param
(
"name"
,
newName
());
final
Response
response
=
target
(
"pets/"
+
existentId
()).
request
(
MediaType
.
APPLICATION_JSON_TYPE
)
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
put
(
entity
(
form
,
MediaType
.
APPLICATION_FORM_URLENCODED_TYPE
));
assertThat
(
response
,
hasBadRequestStatus
());
}
@Test
public
void
testModifyFood
()
throws
IOException
{
final
Form
form
=
new
Form
();
form
.
param
(
"food"
,
newFood
());
final
Response
response
=
target
(
"pets/"
+
existentId
()).
request
(
MediaType
.
APPLICATION_JSON_TYPE
)
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
put
(
entity
(
form
,
MediaType
.
APPLICATION_FORM_URLENCODED_TYPE
));
assertThat
(
response
,
hasBadRequestStatus
());
}
@Test
public
void
testModifyInvalidId
()
throws
IOException
{
final
Form
form
=
new
Form
();
form
.
param
(
"name"
,
newName
());
form
.
param
(
"food"
,
newFood
());
form
.
param
(
"id_person"
,
newIdPerson
()+
""
);
final
Response
response
=
target
(
"pets/"
+
nonExistentId
()).
request
(
MediaType
.
APPLICATION_JSON_TYPE
)
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
put
(
Entity
.
entity
(
form
,
MediaType
.
APPLICATION_FORM_URLENCODED_TYPE
));
assertThat
(
response
,
hasBadRequestStatus
());
}
@Test
@ExpectedDatabase
(
"/datasets/dataset-deletePet.xml"
)
public
void
testDelete
()
throws
IOException
{
final
Response
response
=
target
(
"pets/"
+
existentId
()).
request
()
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
delete
();
assertThat
(
response
,
hasOkStatus
());
final
Integer
deletedId
=
response
.
readEntity
(
Integer
.
class
);
assertThat
(
deletedId
,
is
(
equalTo
(
existentId
())));
}
@Test
public
void
testDeleteUnauthorized
()
throws
IOException
{
final
Response
response
=
target
(
"pets/"
+
existentId
()).
request
()
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
normalLogin
()))
.
delete
();
assertThat
(
response
,
hasUnauthorized
());
}
@Test
public
void
testDeleteInvalidId
()
throws
IOException
{
final
Response
response
=
target
(
"pets/"
+
nonExistentId
()).
request
()
.
header
(
"Authorization"
,
"Basic "
+
userToken
(
adminLogin
()))
.
delete
();
assertThat
(
response
,
hasBadRequestStatus
());
}
}
src/test/resources/datasets/dataset-add.xml
View file @
10d86e0e
...
@@ -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
src/test/resources/datasets/dataset-addPet.xml
0 → 100644
View file @
10d86e0e
<?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
src/test/resources/datasets/dataset-delete.xml
View file @
10d86e0e
...
@@ -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
src/test/resources/datasets/dataset-deletePet.xml
0 → 100644
View file @
10d86e0e
<?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
src/test/resources/datasets/dataset-modify.xml
View file @
10d86e0e
...
@@ -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
src/test/resources/datasets/dataset-modifyPet.xml
0 → 100644
View file @
10d86e0e
<?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
src/test/resources/datasets/dataset.dtd
View file @
10d86e0e
<?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
>
src/test/resources/datasets/dataset.xml
View file @
10d86e0e
...
@@ -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
src/test/resources/db/hsqldb-drop.sql
View file @
10d86e0e
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
;
src/test/resources/db/hsqldb.sql
View file @
10d86e0e
...
@@ -10,4 +10,14 @@ CREATE TABLE users (
...
@@ -10,4 +10,14 @@ CREATE TABLE users (
password
VARCHAR
(
64
)
NOT
NULL
,
password
VARCHAR
(
64
)
NOT
NULL
,
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
src/test/webapp/rest/pets/add.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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
>
div.modal-footer
>
input.btn.btn-inverse
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
id=request-body
</td>
<td>
name=Xián
&
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
>
pre
</td>
<td></td>
</tr>
<tr>
<td>
storeText
</td>
<td>
css=#response-body-raw
>
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>
src/test/webapp/rest/pets/addNoFood.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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
>
div.modal-footer
>
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>
src/test/webapp/rest/pets/addNoName.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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
>
div.modal-footer
>
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>
src/test/webapp/rest/pets/delete.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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>
src/test/webapp/rest/pets/deleteInvalidId.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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>
src/test/webapp/rest/pets/get.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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
>
pre
</td>
<td></td>
</tr>
<tr>
<td>
storeText
</td>
<td>
css=#response-body-raw
>
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>
src/test/webapp/rest/pets/list.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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
>
pre
</td>
<td></td>
</tr>
<tr>
<td>
storeText
</td>
<td>
css=#response-body-raw
>
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>
src/test/webapp/rest/pets/modify.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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
>
div.modal-footer
>
input.btn.btn-inverse
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
id=request-body
</td>
<td>
name=Marta
&
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
>
pre
</td>
<td></td>
</tr>
<tr>
<td>
storeText
</td>
<td>
css=#response-body-raw
>
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>
src/test/webapp/rest/pets/modifyInvalidId.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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
>
div.modal-footer
>
input.btn.btn-inverse
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
id=request-body
</td>
<td>
name=Marta
&
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>
src/test/webapp/rest/pets/modifyNoFood.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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
>
div.modal-footer
>
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>
src/test/webapp/rest/pets/modifyNoId.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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
>
div.modal-footer
>
input.btn.btn-inverse
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
id=request-body
</td>
<td>
name=Marta
&
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>
src/test/webapp/rest/pets/modifyNoName.html
0 → 100644
View file @
10d86e0e
<?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
>
div.modal-footer
>
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
>
div.modal-footer
>
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>
src/test/webapp/rest/pets/rest.html
0 → 100644
View file @
10d86e0e
<?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>
src/test/webapp/web/pets/add.html
0 → 100644
View file @
10d86e0e
<?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
>
td.name
</td>
<td>
Hola
</td>
</tr>
<tr>
<td>
verifyText
</td>
<td>
css=tr:last-child
>
td.surname
</td>
<td>
Mundo
</td>
</tr>
<tr>
<td>
deleteCookie
</td>
<td>
token
</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
src/test/webapp/web/pets/delete.html
0 → 100644
View file @
10d86e0e
<?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>
src/test/webapp/web/pets/edit.html
0 → 100644
View file @
10d86e0e
<?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>
src/test/webapp/web/pets/example.html
0 → 100644
View file @
10d86e0e
<?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>
src/test/webapp/web/pets/list.html
0 → 100644
View file @
10d86e0e
<?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>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment