Project Tests¶
This page outlines the success and failure criteria for all tests of Project resources.
Project API Tests¶
Project API tests assert the correct configuration of project-related API routes. In order for a test case to succeed, the following conditions must be met when evaluating the response:
For all cases,
Content-Type
checking is enforced. The response MUST have aContent-Type
header ofapplication/vnd.ga4gh.rnaget.v1.0.0+json
ORapplication/json
For all cases,
Status Code
checking is enforced. The response MUST have the expected status codeFor all cases, schema checking is enforced. The json object in the response body MUST conform to a pre-defined schema of required fields and data types, which is specific to each API route
Project API Test Cases¶
Get Test Project¶
Route:
/projects/<id>
Description: Requests test project by its
id
. Expects the returned project to match theProject
json schema.Rationale: Asserts that the
/projects/<id>
endpoint returns one valid project object, with id matching the request.Request:
GET /projects/9c0eba51095d3939437e220db196e27b
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 200 OK
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
{
"id": "9c0eba51095d3939437e220db196e27b",
"version": "1.0",
"name": "RNAgetTestProject0",
"description": "Test project object used by RNAget compliance testing suite."
}
Success Criteria:
Status Code == 200
AND response body is validProject
jsonFailure Criteria:
Status Code != 200
OR response body is NOT validProject
json
Project Not Found¶
Route:
/projects/<id>
Description: Requests a project with an invalid
id
, that is, anid
that does not correspond to anyProject
on the server. Expects a404 Not Found
status code in the response, and a response body with a message explaining that the specified resource could not be found.Rationale: Asserts that the
/projects/<id>
endpoint does not return arbitraryProject
objects, and only returns aProject
when theid
matches.Request:
GET /projects/nonexistentid9999999999999999999
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 404 Not Found
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
{
"message": "Entry not found in database."
}
Success Criteria:
Status Code == 404
AND response body is validError
jsonFailure Criteria:
Status Code != 404
OR response body is NOT validError
json
Project Filters¶
Route:
/projects/filters
Description: Requests the filters that can be used to narrow search results for a list of
Projects
Rationale: Asserts that the endpoint returns an array of
Filter
objectsRequest:
GET /projects/filters
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 200 OK
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
[
{
"fieldType": "string",
"values": [
"1.0"
],
"filter": "version",
"description": "version to search for"
},
{
"fieldType": "string",
"values": [
"PCAWG",
"RNAgetTestProject0"
],
"filter": "name",
"description": "name of project"
}
]
Success Criteria:
Status Code == 200
AND response body is array ofFilters
Failure Criteria:
Status Code != 200
OR response body is NOT array ofFilters
Search Projects Without Filters¶
Route:
/projects
Description: Searches for all projects, without specifying any filtering parameters. Expects an array of
Projects
in the response body.Rationale: Asserts that
/projects
returns an array, and that each element in the array is aProject
.Request:
GET /projects
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 200 OK
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
[
{
"id": "9c0eba51095d3939437e220db196e27b",
"version": "1.0",
"name": "RNAgetTestProject0",
"description": "Test project object used by RNAget compliance testing suite."
},
{
"description": "Pan Cancer Analysis of Whole Genomes test data from Expression Atlas E-MTAB-5423",
"id": "43378a5d48364f9d8cf3c3d5104df560",
"name": "PCAWG",
"version": "1.0"
}
]
Success Criteria:
Status Code == 200
AND response body is array ofProject
json ANDArray Length >= 1
Failure Criteria:
Status Code != 200
OR response body is NOT array ofProject
json ORArray Length < 1
Search Projects With All Filters¶
Route:
/projects
Description: Searches projects, using all filtering parameters associated with test project. Expects an array of
Projects
to be returned in the response body. Array must contain at least 1 object.Rationale: Asserts that
/projects
returns an array ofProjects
even when specifying filters. The returned array MUST have at least 1 object, as the parameter filters must match the attributes of the test project.Request:
GET /projects?version=1.0&name=RNAgetTestProject0
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 200 OK
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
[
{
"id": "9c0eba51095d3939437e220db196e27b",
"version": "1.0",
"name": "RNAgetTestProject0",
"description": "Test project object used by RNAget compliance testing suite."
}
]
Success Criteria:
Status Code == 200
AND response body is array ofProject
json ANDArray Length >= 1
Failure Criteria:
Status Code != 200
OR response body is NOT array ofProject
json ORArray Length < 1
Search Projects With Single Filter, 1¶
Route:
/projects
Description: Searches projects using only 1 filtering parameter associated with test project. Expects an array of
Projects
, with length of 1 or greater.Rationale: Asserts filtering parameters can be used independently of one another, and that each filter yields the test
Project
in the search results.Requests:
GET /projects?version=1.0
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 200 OK
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
[
{
"id": "9c0eba51095d3939437e220db196e27b",
"version": "1.0",
"name": "RNAgetTestProject0",
"description": "Test project object used by RNAget compliance testing suite."
}
]
Success Criteria:
Status Code == 200
AND response body is array ofProject
json ANDArray Length >= 1
Failure Criteria:
Status Code != 200
OR response body is NOT array ofProject
json ORArray Length < 1
Search Projects With Single Filter, 2¶
Route:
/projects
Description: Searches projects using only 1 filtering parameter (a different filter than above) associated with test project. Expects an array of
Projects
, with length of 1 or greater.Rationale: Asserts filtering parameters can be used independently of one another, and that each filter yields the test
Project
in the search results.Requests:
GET /projects?name=RNAgetTestProject0
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 200 OK
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
[
{
"id": "9c0eba51095d3939437e220db196e27b",
"version": "1.0",
"name": "RNAgetTestProject0",
"description": "Test project object used by RNAget compliance testing suite."
}
]
Success Criteria:
Status Code == 200
AND response body is array ofProject
json ANDArray Length >= 1
Failure Criteria:
Status Code != 200
OR response body is NOT array ofProject
json ORArray Length < 1
Project Search Filters Non-Matching Resources¶
Route:
/projects
Description: Tests that the project search endpoint correctly filters out non-matching
Projects
based on url parameters. Makes a request to the/projects
endpoint with invalid filters (not matching anyProject
), and expects an empty array as a response.Rationale: Asserts that the endpoint correctly filters out non-matching entities, that the endpoint does not return an arbitrary list of
Projects
that differ from filters.Request:
GET /projects?version=nonexistentid9999999999999999999&name=nonexistentid9999999999999999999
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 200 OK
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
[]
Success Criteria:
Status Code == 200
AND response body is an empty arrayFailure Criteria:
Status Code != 200
OR response body is NOT an empty array
Project API Non-Implemented Test Cases¶
Project Get Not Implemented¶
Route:
/projects/<id>
Description: If the
Projects
endpoint is specified asNot Implemented
in the config file, then this test will be run. Requests the/projects/<id>
endpoint, expecting a501 Not Implemented
status code responseRationale: Asserts that
Project
related endpoints are correctly non-implemented according to the specRequest:
GET /projects/nonexistentid9999999999999999999
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 501 Not Implemented
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
Success Criteria:
Status Code == 501
Failure Criteria:
Status Code != 501
Project Search Not Implemented¶
Route:
/projects
Description: If the
Projects
endpoint is specified asNot Implemented
in the config file, then this test will be run. Requests the/projects
endpoint, expecting a501 Not Implemented
status code responseRationale: Asserts that
Project
related endpoints are correctly non-implemented according to the specRequest:
GET /projects
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 501 Not Implemented
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
Success Criteria:
Status Code == 501
Failure Criteria:
Status Code != 501
Project Filters Not Implemented¶
Route:
/projects/filters
Description: If the
Projects
endpoint is specified asNot Implemented
in the config file, then this test will be run. Requests the/projects/filters
endpoint, expecting a501 Not Implemented
status code responseRationale: Asserts that
Project
related endpoints are correctly non-implemented according to the specRequest:
GET /projects/filters
Accept: application/vnd.ga4gh.rnaget.v1.0.0+json, application/json
Successful Response:
HTTP/1.1 501 Not Implemented
Content-Type: application/vnd.ga4gh.rnaget.v1.0.0+json
Success Criteria:
Status Code == 501
Failure Criteria:
Status Code != 501