This page outlines the success and failure criteria for all tests of Project resources.
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 code- For 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
- Get Test Project
- Project Not Found
- Project Filters
- Search Projects Without Filters
- Search Projects With All Filters
- Search Projects With Single Filter, 1
- Search Projects With Single Filter, 2
- Project Search Filters Non-Matching Resources
- 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
json - Failure Criteria:
Status Code != 200
OR response body is NOT validProject
json
- 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
json - Failure Criteria:
Status Code != 404
OR response body is NOT validError
json
- 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
objects - Request:
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
- 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
- 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
- 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
- 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
- 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 array - Failure Criteria:
Status Code != 200
OR response body is NOT an empty array
- 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 response - Rationale: Asserts that
Project
related endpoints are correctly non-implemented according to the spec - Request:
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
- 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 response - Rationale: Asserts that
Project
related endpoints are correctly non-implemented according to the spec - Request:
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
- 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 response - Rationale: Asserts that
Project
related endpoints are correctly non-implemented according to the spec - Request:
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