header

Program Information

Name: Events API-get events
Domain: web service and application
Functionality: This service returns a collection of events according to different criteria. It is invoked as a GET on the url: http://HOST/api/eventos.
Input: id: An unique identifier of the event (Integer) id_creador: An unique identifier of the creator of the event (Integer) nombre: A short title for the event. (String) descripcion: A long description of the event. (String). nombre_creador: Name of the creator of the event. fecha_inicio: Starting date of the event. (String) fecha_fin: Ending date of the event. (String) tags: Comma separated list of tags for the event. (String) latitud: Latitude of the location where the event is taking place. (Double) longitud: Longitude of the location where the event is taking place. (Double)
Output: id: An unique identifier of the event (Integer) id_creador: An unique identifier of the creator of the event (Integer) nombre: A short title for the event. (String) descripcion: A long description of the event. (String). nombre_creador: Name of the creator of the event. fecha_inicio: Starting date of the event. (String) fecha_fin: Ending date of the event. (String) tags: Comma separated list of tags for the event. (String) latitud: Latitude of the location where the event is taking place. (Double) longitud: Longitude of the location where the event is taking place. (Double)

Reference


     Metamorphic Testing of RESTful Web APIs. https://dx.doi.org/10.1109/TSE.2017.2764464




MR Information

MR1------

Description:
Property: Get all the events. Then get the events tagged with a specific tag t. The output of the second invocation should be a subset of the output of the first invocation.
Source input: criterion$A$: get all the events
Source output: a set of events $M$
Follow-up input: criterion$A'$: get the events tagged with a specific tag $t$
Follow-up output: a set of events $N$
Input relation: $A' \subseteq A$     
Output relation: $N \subseteq M$
Pattern: MROP:subset, asysmetry

MR2------

Description:
Property: Get all the events tagged with a set of tags t1. Get all the events tagged with a set of tags t2 where t2 is a subset of t1. The output of the first invocation should be a subset of the output of the second invocation.
Source input: criterion$A$: get the events tagged with a set of tags $t1$
Source output: a set of events $M$
Follow-up input: criterion$A'$: get the events tagged with a set of tags $t2$
Follow-up output: a set of events $N$
Input relation: $t2 \subseteq t1$     
Output relation: $N \subseteq M$
Pattern: MROP:subset, asymmetry

MR3------

Description:
Property: Given a geographic position (latitude and longitude) P and two radii values in meters R1 , R2 where R1>R2. Get all the events in a radius R1 of P. Get all the events in a radius R2 of P. The output of the second invocation should be a subset of the output of the first invocation.
Source input: geographic position $P$ (latitude and longitude),a radii value in meters $R1$
Source output: a set of events $M$
Follow-up input: geographic position $P$ (latitude and longitude),a radii value in meters $R2$
Follow-up output: a set of events $N$
Input relation: $R1>R2$     
Output relation: $N \subseteq M$
Pattern: MROP:subset, asymmetry

MR4------

Description:
Property: Given a geographic position (latitude and longitude) P and a radius value in meters R. Get all the events. Get all the events in a radius R of P. The output of the second invocation should be a subset of the output of the first invocation.
Source input: geographic position $P$ (latitude and longitude),a radii value in meters $R$, criterion$A$: get the all events
Source output: a set of events $M$
Follow-up input: criterion$A'$: get all the events in a radius $R$ of $P$
Follow-up output: a set of events $N$
Input relation: $A'\subseteq A$
Output relation: $N \subseteq M$
Pattern: MROP:subset, asymmetry

MR5------

Description:
Property: For any dates D1, D2 such than D2 is prior to D1. Get all the events after D1. Get all the events after D2. The output of the second invocation should be a subset of output of the first invocation.
Source input: date $D1$
Source output: a set of events $M$ after $D1$
Follow-up input: date $D2$
Follow-up output: a set of events $N$ after $D2$
Input relation: $D2$ is prior to $D1$
Output relation: $N \subseteq M$
Pattern: MROP:subset, asymmetry

MR6------

Description:
Property: Given any date D and two integers I1,_I2_ such that I1>=I2. Get all the events after D and before I1 days (after D). Get all the events taking place between D and D+ I2 days. The output of the second invocation should be a subset of output of the first invocation.
Source input: date ($D$ + $I1$), $I1$ donates an integer
Source output: a set of events $M$ after $D$ and before $I1$
Follow-up input: date ($D$ + $I2$), $I2$ donates an integer
Follow-up output: a set of events $N$ after $D$ and before $I2$
Input relation: $I1 \geq I2$
Output relation: $N \subseteq M$
Pattern: MROP:subset, asymmetry

MR7------

Description:
Property: For any two non-empty sets of tags t1 and t2 present in any pair of events e1 and e2 of the API such that t1 - t2 != 0. Get all the events Get all the sets tagged with t1 - t2. The of the second invocation t1-t2 must be a subset strict of the output of the first invocation.
Source input: get all the events $A$
Source output: a set of events $M$
Follow-up input: two non-empty sets of tags $t1$ and $t2$ present in any pair of events $e1$ and $e2$ of the API such that $t1 - t2 != 0$, get all the sets of events $A'$ tagged with $t1 - t2$
Follow-up output: a set of events $N$
Input relation: $A' \subseteq A$     
Output relation: $N \subseteq M$
Pattern: MROP:subset, asymmetry

MR8------

Description:
Property: Get all the event. For any event e1 in the output, get the set of events after the finishing date of e1. The output of the second invocation should be a subset string of the output of the first invocation.
Source input: get all the events $A$
Source output: a set of events $M$
Follow-up input: for any event $e1$ in the output, get the set of events $A'$ after the finishing date of $e1$
Follow-up output: a set of events $N$
Input relation: $A' \subseteq A$     
Output relation: $N \subseteq M$
Pattern: MROP:subset, asysmetry

MR9------

Description:
Property: Get all the events. Given 2 events at different places E1 and E2 where d is the distance between such places. Get the events in a radius of d-1 from the position of E1. Then, get the events in a radius of d+1 from the position of E1. The output of the second invocations should be a strict subset of the output of the third invocation.
Source input: Given 2 events at different places $E1$ and $E2$ where $d$ is the distance between such places, input a radius of $d-1$ from the position of $E1$
Source output: a set of events $M$
Follow-up input: input a radius of $d+1$ from the position of $E1$
Follow-up output: a set of events $N$
Input relation: $(d+1)>(d-1)$     
Output relation: $M \subseteq N$
Pattern: MROP:subset, asymmetry

MR10------

Description:
Property: Get all the events by name using "" as parameter (returns all the events). Get the events by name using the name of any of the events present in the output of the first invocation. The output of the second invocation should be a subset of the output of the first invocation.
Source input: input "" as parameter
Source output: a set of events $M$
Follow-up input: input the name of any of the events present in the output of the first invocation as parameter
Follow-up output: a set of events $N$
Input relation:     
Output relation: $M \subseteq N$
Pattern: MROP:subset, asymmetry

MR11------

Description:
Property: Get all the events by creator name using "" as parameter (returns all the events). Get the events by creator name using the creator name of any of the events present in the output of the first invocation. The output of the second invocation should be a subset of the output of the first invocation.
Source input: input "" as parameter
Source output: a set of events $M$
Follow-up input: input the creator name of any of the events present in the output of the first invocation as parameter
Follow-up output: a set of events $N$
Input relation:     
Output relation: $M \subseteq N$
Pattern: MROP:subset, asymmetry
Insert title here