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-Typechecking is enforced. The response MUST have aContent-Typeheader ofapplication/vnd.ga4gh.rnaget.v1.0.0+jsonORapplication/jsonFor all cases,
Status Codechecking 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 theProjectjson 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 == 200AND response body is validProjectjsonFailure Criteria:
Status Code != 200OR response body is NOT validProjectjson
Project Not Found¶
Route:
/projects/<id>Description: Requests a project with an invalid
id, that is, anidthat does not correspond to anyProjecton the server. Expects a404 Not Foundstatus 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 arbitraryProjectobjects, and only returns aProjectwhen theidmatches.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 == 404AND response body is validErrorjsonFailure Criteria:
Status Code != 404OR response body is NOT validErrorjson
Project Filters¶
Route:
/projects/filtersDescription: Requests the filters that can be used to narrow search results for a list of
ProjectsRationale: Asserts that the endpoint returns an array of
FilterobjectsRequest:
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 == 200AND response body is array ofFiltersFailure Criteria:
Status Code != 200OR response body is NOT array ofFilters
Search Projects Without Filters¶
Route:
/projectsDescription: Searches for all projects, without specifying any filtering parameters. Expects an array of
Projectsin the response body.Rationale: Asserts that
/projectsreturns 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 == 200AND response body is array ofProjectjson ANDArray Length >= 1Failure Criteria:
Status Code != 200OR response body is NOT array ofProjectjson ORArray Length < 1
Search Projects With All Filters¶
Route:
/projectsDescription: Searches projects, using all filtering parameters associated with test project. Expects an array of
Projectsto be returned in the response body. Array must contain at least 1 object.Rationale: Asserts that
/projectsreturns an array ofProjectseven 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 == 200AND response body is array ofProjectjson ANDArray Length >= 1Failure Criteria:
Status Code != 200OR response body is NOT array ofProjectjson ORArray Length < 1
Search Projects With Single Filter, 1¶
Route:
/projectsDescription: 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
Projectin 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 == 200AND response body is array ofProjectjson ANDArray Length >= 1Failure Criteria:
Status Code != 200OR response body is NOT array ofProjectjson ORArray Length < 1
Search Projects With Single Filter, 2¶
Route:
/projectsDescription: 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
Projectin 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 == 200AND response body is array ofProjectjson ANDArray Length >= 1Failure Criteria:
Status Code != 200OR response body is NOT array ofProjectjson ORArray Length < 1
Project Search Filters Non-Matching Resources¶
Route:
/projectsDescription: Tests that the project search endpoint correctly filters out non-matching
Projectsbased on url parameters. Makes a request to the/projectsendpoint 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
Projectsthat 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 == 200AND response body is an empty arrayFailure Criteria:
Status Code != 200OR response body is NOT an empty array
Project API Non-Implemented Test Cases¶
Project Get Not Implemented¶
Route:
/projects/<id>Description: If the
Projectsendpoint is specified asNot Implementedin the config file, then this test will be run. Requests the/projects/<id>endpoint, expecting a501 Not Implementedstatus code responseRationale: Asserts that
Projectrelated 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 == 501Failure Criteria:
Status Code != 501
Project Search Not Implemented¶
Route:
/projectsDescription: If the
Projectsendpoint is specified asNot Implementedin the config file, then this test will be run. Requests the/projectsendpoint, expecting a501 Not Implementedstatus code responseRationale: Asserts that
Projectrelated 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 == 501Failure Criteria:
Status Code != 501
Project Filters Not Implemented¶
Route:
/projects/filtersDescription: If the
Projectsendpoint is specified asNot Implementedin the config file, then this test will be run. Requests the/projects/filtersendpoint, expecting a501 Not Implementedstatus code responseRationale: Asserts that
Projectrelated 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 == 501Failure Criteria:
Status Code != 501