Merge "modernise gabbi tests"
This commit is contained in:
@@ -8,7 +8,7 @@ tests:
|
||||
|
||||
# Root gives us some information on where to go from here.
|
||||
- name: quick root check
|
||||
url: /
|
||||
GET: /
|
||||
response_headers:
|
||||
content-type: application/json
|
||||
response_strings:
|
||||
@@ -20,5 +20,5 @@ tests:
|
||||
# NOTE(chdent): Ideally since / has a links ref to /v2, /v2 ought not 404!
|
||||
- name: v2 visit
|
||||
desc: this demonstrates a bug in the info in /
|
||||
url: $RESPONSE['versions.values.[0].links.[0].href']
|
||||
GET: $RESPONSE['versions.values.[0].links.[0].href']
|
||||
status: 404
|
||||
|
||||
@@ -8,6 +8,6 @@ tests:
|
||||
|
||||
- name: get capabilities
|
||||
desc: retrieve capabilities for the mongo store
|
||||
url: /v2/capabilities
|
||||
GET: /v2/capabilities
|
||||
response_json_paths:
|
||||
$.storage.['storage:production_ready']: true
|
||||
|
||||
@@ -8,8 +8,7 @@ tests:
|
||||
|
||||
- name: post sample for meter
|
||||
desc: post a single sample
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data: |
|
||||
@@ -41,8 +40,7 @@ tests:
|
||||
- name: post a sample expect location
|
||||
desc: https://bugs.launchpad.net/ceilometer/+bug/1426426
|
||||
xfail: true
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data:
|
||||
@@ -63,7 +61,7 @@ tests:
|
||||
|
||||
- name: get samples for meter
|
||||
desc: get all the samples at that meter
|
||||
url: /v2/meters/apples
|
||||
GET: /v2/meters/apples
|
||||
response_json_paths:
|
||||
$.[0].counter_name: apples
|
||||
$.[0].counter_volume: 1
|
||||
@@ -73,7 +71,7 @@ tests:
|
||||
|
||||
- name: get resources
|
||||
desc: get the resources that exist because of the sample
|
||||
url: /v2/resources
|
||||
GET: /v2/resources
|
||||
response_json_paths:
|
||||
$.[0].metadata.name2: value2
|
||||
|
||||
@@ -83,7 +81,7 @@ tests:
|
||||
|
||||
- name: get resource
|
||||
desc: get just one of those resources via self
|
||||
url: $RESPONSE['$[0].links[0].href']
|
||||
GET: $RESPONSE['$[0].links[0].href']
|
||||
response_json_paths:
|
||||
$.metadata.name2: value2
|
||||
|
||||
@@ -91,14 +89,14 @@ tests:
|
||||
|
||||
- name: get samples
|
||||
desc: get all the created samples
|
||||
url: /v2/samples
|
||||
GET: /v2/samples
|
||||
response_json_paths:
|
||||
$.[0].metadata.name2: value2
|
||||
$.[0].meter: apples
|
||||
|
||||
- name: get one sample
|
||||
desc: get the one sample that exists
|
||||
url: /v2/samples/$RESPONSE['$[0].id']
|
||||
GET: /v2/samples/$RESPONSE['$[0].id']
|
||||
response_json_paths:
|
||||
$.metadata.name2: value2
|
||||
$.meter: apples
|
||||
|
||||
@@ -8,7 +8,7 @@ fixtures:
|
||||
tests:
|
||||
- name: get fixture samples
|
||||
desc: get all the samples at livestock
|
||||
url: /v2/meters/livestock
|
||||
GET: /v2/meters/livestock
|
||||
response_json_paths:
|
||||
$.[0].counter_name: livestock
|
||||
$.[1].counter_name: livestock
|
||||
|
||||
@@ -11,28 +11,26 @@ tests:
|
||||
# Generic HTTP health explorations of all meters.
|
||||
|
||||
- name: empty meters list
|
||||
url: /v2/meters
|
||||
GET: /v2/meters
|
||||
response_headers:
|
||||
content-type: /application/json/
|
||||
response_strings:
|
||||
- "[]"
|
||||
|
||||
- name: meters list bad accept
|
||||
url: /v2/meters
|
||||
GET: /v2/meters
|
||||
request_headers:
|
||||
accept: text/plain
|
||||
status: 406
|
||||
|
||||
- name: meters list bad method
|
||||
url: /v2/meters
|
||||
method: POST
|
||||
POST: /v2/meters
|
||||
status: 405
|
||||
response_headers:
|
||||
allow: GET
|
||||
|
||||
- name: try to delete meters
|
||||
url: /v2/meters
|
||||
method: DELETE
|
||||
DELETE: /v2/meters
|
||||
status: 405
|
||||
response_headers:
|
||||
allow: GET
|
||||
@@ -40,32 +38,29 @@ tests:
|
||||
# Generic HTTP health explorations of single meter.
|
||||
|
||||
- name: get non exist meter
|
||||
url: /v2/meters/noexist
|
||||
GET: /v2/meters/noexist
|
||||
response_strings:
|
||||
- "[]"
|
||||
|
||||
- name: meter bad accept
|
||||
url: /v2/meters/noexist?direct=True
|
||||
GET: /v2/meters/noexist?direct=True
|
||||
request_headers:
|
||||
accept: text/plain
|
||||
status: 406
|
||||
|
||||
- name: meter delete noexist
|
||||
url: /v2/meters/noexist
|
||||
method: DELETE
|
||||
DELETE: /v2/meters/noexist
|
||||
status: "404 || 405"
|
||||
|
||||
- name: post meter no data
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data: ""
|
||||
status: 400
|
||||
|
||||
- name: post meter error is JSON
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data: ""
|
||||
@@ -76,16 +71,14 @@ tests:
|
||||
$.error_message.faultstring: "Samples should be included in request body"
|
||||
|
||||
- name: post meter bad content-type
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: text/plain
|
||||
data: hello
|
||||
status: 415
|
||||
|
||||
- name: post bad samples to meter
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data:
|
||||
@@ -98,8 +91,7 @@ tests:
|
||||
# POST variations on a malformed sample
|
||||
|
||||
- name: post limited counter to meter
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data:
|
||||
@@ -111,8 +103,7 @@ tests:
|
||||
- "Invalid input for field/attribute counter_name"
|
||||
|
||||
- name: post mismatched counter name to meter
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data:
|
||||
@@ -127,8 +118,7 @@ tests:
|
||||
- "should be apples"
|
||||
|
||||
- name: post counter no resource to meter
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data:
|
||||
@@ -142,8 +132,7 @@ tests:
|
||||
- "Mandatory field missing."
|
||||
|
||||
- name: post counter bad type to meter
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data:
|
||||
@@ -160,8 +149,7 @@ tests:
|
||||
# Manipulate samples
|
||||
|
||||
- name: post counter to meter
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data:
|
||||
@@ -173,14 +161,14 @@ tests:
|
||||
status: 201
|
||||
|
||||
- name: list apple samples
|
||||
url: /v2/meters/apples
|
||||
GET: /v2/meters/apples
|
||||
response_json_paths:
|
||||
$[0].counter_volume: 1.0
|
||||
$[0].counter_name: apples
|
||||
$[0].resource_id: bd9431c1-8d69-4ad3-803a-8d4a6b89fd36
|
||||
|
||||
- name: list meters
|
||||
url: /v2/meters
|
||||
GET: /v2/meters
|
||||
response_json_paths:
|
||||
$[0].name: apples
|
||||
$[0].resource_id: bd9431c1-8d69-4ad3-803a-8d4a6b89fd36
|
||||
@@ -188,20 +176,19 @@ tests:
|
||||
$[-1].name: apples
|
||||
|
||||
- name: negative limit on meter list
|
||||
url: /v2/meters/apples?limit=-5
|
||||
GET: /v2/meters/apples?limit=-5
|
||||
status: 400
|
||||
response_strings:
|
||||
- Limit must be positive
|
||||
|
||||
- name: nan limit on meter list
|
||||
url: /v2/meters/apples?limit=NaN
|
||||
GET: /v2/meters/apples?limit=NaN
|
||||
status: 400
|
||||
response_strings:
|
||||
- unable to convert to int
|
||||
|
||||
- name: post counter to meter different resource
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
status: 201
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
@@ -213,7 +200,7 @@ tests:
|
||||
resource_id: aa9431c1-8d69-4ad3-803a-8d4a6b89fdaa
|
||||
|
||||
- name: query for resource
|
||||
url: /v2/meters/apples?q.field=resource_id&q.value=aa9431c1-8d69-4ad3-803a-8d4a6b89fdaa&q.op=eq
|
||||
GET: /v2/meters/apples?q.field=resource_id&q.value=aa9431c1-8d69-4ad3-803a-8d4a6b89fdaa&q.op=eq
|
||||
response_json_paths:
|
||||
$[0].resource_id: aa9431c1-8d69-4ad3-803a-8d4a6b89fdaa
|
||||
$[-1].resource_id: aa9431c1-8d69-4ad3-803a-8d4a6b89fdaa
|
||||
@@ -221,8 +208,7 @@ tests:
|
||||
# Explore posting samples with less than perfect data.
|
||||
|
||||
- name: post counter with bad timestamp
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data:
|
||||
@@ -237,8 +223,7 @@ tests:
|
||||
- 'Invalid input for field/attribute samples'
|
||||
|
||||
- name: post counter with good timestamp
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
status: 201
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
@@ -251,8 +236,7 @@ tests:
|
||||
timestamp: "2013-01-01 23:23:20"
|
||||
|
||||
- name: post counter with wrong metadata
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data:
|
||||
@@ -268,8 +252,7 @@ tests:
|
||||
- "Invalid input for field/attribute samples"
|
||||
|
||||
- name: post counter with empty metadata
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
status: 201
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
@@ -285,7 +268,7 @@ tests:
|
||||
# Statistics
|
||||
|
||||
- name: get sample statistics
|
||||
url: /v2/meters/apples/statistics
|
||||
GET: /v2/meters/apples/statistics
|
||||
response_json_paths:
|
||||
$[0].groupby: null
|
||||
$[0].unit: instance
|
||||
@@ -295,78 +278,78 @@ tests:
|
||||
$[0].count: 4
|
||||
|
||||
- name: get incorrectly grouped sample statistics
|
||||
url: /v2/meters/apples/statistics?groupby=house_id
|
||||
GET: /v2/meters/apples/statistics?groupby=house_id
|
||||
status: 400
|
||||
response_strings:
|
||||
- Invalid groupby fields
|
||||
|
||||
- name: get grouped sample statistics
|
||||
url: /v2/meters/apples/statistics?groupby=resource_id
|
||||
GET: /v2/meters/apples/statistics?groupby=resource_id
|
||||
response_json_paths:
|
||||
$[1].max: 3.0
|
||||
$[0].max: 1.0
|
||||
|
||||
- name: get sample statistics bad period
|
||||
url: /v2/meters/apples/statistics?period=seven
|
||||
GET: /v2/meters/apples/statistics?period=seven
|
||||
status: 400
|
||||
response_strings:
|
||||
- unable to convert to int
|
||||
|
||||
- name: get sample statistics negative period
|
||||
url: /v2/meters/apples/statistics?period=-7
|
||||
GET: /v2/meters/apples/statistics?period=-7
|
||||
status: 400
|
||||
response_strings:
|
||||
- Period must be positive.
|
||||
|
||||
- name: get sample statistics 600 period
|
||||
url: /v2/meters/apples/statistics?period=600
|
||||
GET: /v2/meters/apples/statistics?period=600
|
||||
response_json_paths:
|
||||
$[0].period: 600
|
||||
|
||||
- name: get sample statistics time limit not time
|
||||
url: /v2/meters/apples/statistics?q.field=timestamp&q.op=gt&q.value=Remember%20Remember
|
||||
GET: /v2/meters/apples/statistics?q.field=timestamp&q.op=gt&q.value=Remember%20Remember
|
||||
status: 400
|
||||
response_strings:
|
||||
- invalid timestamp format
|
||||
|
||||
- name: get sample statistics time limit gt
|
||||
url: /v2/meters/apples/statistics?q.field=timestamp&q.op=gt&q.value=2014-01-01
|
||||
GET: /v2/meters/apples/statistics?q.field=timestamp&q.op=gt&q.value=2014-01-01
|
||||
response_json_paths:
|
||||
$[0].count: 2
|
||||
|
||||
- name: get sample statistics time limit lt
|
||||
url: /v2/meters/apples/statistics?q.field=timestamp&q.op=lt&q.value=2014-01-01
|
||||
GET: /v2/meters/apples/statistics?q.field=timestamp&q.op=lt&q.value=2014-01-01
|
||||
response_json_paths:
|
||||
$[0].count: 2
|
||||
|
||||
- name: get sample statistics time limit bounded
|
||||
url: /v2/meters/apples/statistics?q.field=timestamp&q.op=gt&q.value=2013-06-01&q.field=timestamp&q.op=lt&q.value=2014-01-01
|
||||
GET: /v2/meters/apples/statistics?q.field=timestamp&q.op=gt&q.value=2013-06-01&q.field=timestamp&q.op=lt&q.value=2014-01-01
|
||||
response_strings:
|
||||
- "[]"
|
||||
|
||||
- name: get sample statistics select aggregate bad format
|
||||
url: /v2/meters/apples/statistics?aggregate=max
|
||||
GET: /v2/meters/apples/statistics?aggregate=max
|
||||
status: 400
|
||||
|
||||
- name: get sample statistics select aggregate
|
||||
url: /v2/meters/apples/statistics?aggregate.func=max
|
||||
GET: /v2/meters/apples/statistics?aggregate.func=max
|
||||
response_json_paths:
|
||||
$[0].aggregate.max: 3.0
|
||||
|
||||
- name: get sample statistics select aggregate multiple
|
||||
url: /v2/meters/apples/statistics?aggregate.func=max&aggregate.func=count
|
||||
GET: /v2/meters/apples/statistics?aggregate.func=max&aggregate.func=count
|
||||
response_json_paths:
|
||||
$[0].aggregate.max: 3.0
|
||||
$[0].aggregate.count: 4
|
||||
|
||||
- name: get sample statistics select aggregate bad function
|
||||
url: /v2/meters/apples/statistics?aggregate.func=mmm
|
||||
GET: /v2/meters/apples/statistics?aggregate.func=mmm
|
||||
status: 400
|
||||
response_strings:
|
||||
- 'Invalid aggregation function: mmm'
|
||||
|
||||
- name: get sample statistics select aggregate good function and bad function
|
||||
url: /v2/meters/apples/statistics?aggregate.func=max&aggregate.func=mmm
|
||||
GET: /v2/meters/apples/statistics?aggregate.func=max&aggregate.func=mmm
|
||||
status: 400
|
||||
response_strings:
|
||||
- 'Invalid aggregation function: mmm'
|
||||
@@ -374,28 +357,28 @@ tests:
|
||||
# limit meters results
|
||||
|
||||
- name: get meters ulimited
|
||||
url: /v2/meters
|
||||
GET: /v2/meters
|
||||
response_json_paths:
|
||||
$.`len`: 2
|
||||
|
||||
- name: get meters limited
|
||||
url: /v2/meters?limit=1
|
||||
GET: /v2/meters?limit=1
|
||||
response_json_paths:
|
||||
$.`len`: 1
|
||||
|
||||
- name: get meters double limit
|
||||
url: /v2/meters?limit=1&limit=1
|
||||
GET: /v2/meters?limit=1&limit=1
|
||||
status: 400
|
||||
|
||||
- name: get meters filter limit
|
||||
desc: expressing limit this way is now disallowed
|
||||
url: /v2/meters?q.field=limit&q.op=eq&q.type=&q.value=1
|
||||
GET: /v2/meters?q.field=limit&q.op=eq&q.type=&q.value=1
|
||||
status: 400
|
||||
response_strings:
|
||||
- 'Unknown argument: \"limit\": unrecognized field in query'
|
||||
|
||||
- name: get meters filter limit and limit
|
||||
url: /v2/meters?q.field=limit&q.op=eq&q.type=&q.value=1&limit=1
|
||||
GET: /v2/meters?q.field=limit&q.op=eq&q.type=&q.value=1&limit=1
|
||||
status: 400
|
||||
response_strings:
|
||||
- 'Unknown argument: \"limit\": unrecognized field in query'
|
||||
|
||||
@@ -13,47 +13,47 @@ tests:
|
||||
|
||||
- name: list resources no extra
|
||||
desc: Provide no additional header guidelines
|
||||
url: /v2/resources
|
||||
GET: /v2/resources
|
||||
response_headers:
|
||||
content-type: /application/json/
|
||||
response_strings:
|
||||
- "[]"
|
||||
|
||||
- name: list resources but get url wrong
|
||||
url: /v2/resrces
|
||||
GET: /v2/resrces
|
||||
status: 404
|
||||
|
||||
- name: list resources explicit accept
|
||||
url: /v2/resources
|
||||
GET: /v2/resources
|
||||
request_headers:
|
||||
accept: application/json
|
||||
response_strings:
|
||||
- "[]"
|
||||
|
||||
- name: list resources bad accept
|
||||
url: /v2/resources
|
||||
GET: /v2/resources
|
||||
request_headers:
|
||||
accept: text/plain
|
||||
status: 406
|
||||
|
||||
- name: list resources with bad query field
|
||||
url: /v2/resources?q.field=id&q.value=cars
|
||||
GET: /v2/resources?q.field=id&q.value=cars
|
||||
status: 400
|
||||
response_strings:
|
||||
- unrecognized field in query
|
||||
|
||||
- name: list resources with query
|
||||
url: /v2/resources?q.field=resource&q.value=cars
|
||||
GET: /v2/resources?q.field=resource&q.value=cars
|
||||
response_strings:
|
||||
- "[]"
|
||||
|
||||
- name: list resource bad type meter links
|
||||
url: /v2/resources?meter_links=yes%20please
|
||||
GET: /v2/resources?meter_links=yes%20please
|
||||
status: 400
|
||||
response_strings:
|
||||
- unable to convert to int
|
||||
|
||||
- name: list resource meter links int
|
||||
url: /v2/resources?meter_links=0
|
||||
GET: /v2/resources?meter_links=0
|
||||
response_strings:
|
||||
- "[]"
|
||||
|
||||
@@ -10,47 +10,47 @@ fixtures:
|
||||
tests:
|
||||
|
||||
- name: list all resources
|
||||
url: /v2/resources
|
||||
GET: /v2/resources
|
||||
response_json_paths:
|
||||
$[0].user_id: farmerjon
|
||||
$[0].links[1].rel: livestock
|
||||
|
||||
- name: get one resource
|
||||
desc: get a resource via the links in the first resource listed above
|
||||
url: $RESPONSE['$[0].links[0].href']
|
||||
GET: $RESPONSE['$[0].links[0].href']
|
||||
response_json_paths:
|
||||
$.resource_id: $RESPONSE['$[0].resource_id']
|
||||
|
||||
- name: list resources limit user_id
|
||||
url: /v2/resources?q.field=user_id&q.value=farmerjon
|
||||
GET: /v2/resources?q.field=user_id&q.value=farmerjon
|
||||
response_json_paths:
|
||||
$[0].user_id: farmerjon
|
||||
$[0].links[1].rel: livestock
|
||||
|
||||
- name: list resources limit metadata
|
||||
url: /v2/resources?q.field=metadata.breed&q.value=sheep
|
||||
GET: /v2/resources?q.field=metadata.breed&q.value=sheep
|
||||
response_json_paths:
|
||||
$[0].user_id: farmerjon
|
||||
$[0].links[1].rel: livestock
|
||||
|
||||
- name: list resources limit metadata no match
|
||||
url: /v2/resources?q.field=metadata.breed&q.value=llamma
|
||||
GET: /v2/resources?q.field=metadata.breed&q.value=llamma
|
||||
response_strings:
|
||||
- "[]"
|
||||
|
||||
- name: fail to get one resource
|
||||
url: /v2/resources/nosirnothere
|
||||
GET: /v2/resources/nosirnothere
|
||||
status: 404
|
||||
|
||||
- name: list resource meter links present
|
||||
url: /v2/resources?meter_links=1
|
||||
GET: /v2/resources?meter_links=1
|
||||
response_json_paths:
|
||||
$[0].links[0].rel: self
|
||||
$[0].links[1].rel: livestock
|
||||
$[0].links[-1].rel: livestock
|
||||
|
||||
- name: list resource meter links not present
|
||||
url: /v2/resources?meter_links=0
|
||||
GET: /v2/resources?meter_links=0
|
||||
desc: there is only one links entry when meter_links is 0
|
||||
response_json_paths:
|
||||
$[0].links[0].rel: self
|
||||
@@ -59,28 +59,28 @@ tests:
|
||||
# limit resource results
|
||||
|
||||
- name: get resources ulimited
|
||||
url: /v2/resources
|
||||
GET: /v2/resources
|
||||
response_json_paths:
|
||||
$.`len`: 1
|
||||
|
||||
- name: get resources limited
|
||||
url: /v2/resources?limit=1
|
||||
GET: /v2/resources?limit=1
|
||||
response_json_paths:
|
||||
$.`len`: 1
|
||||
|
||||
- name: get resources double limit
|
||||
url: /v2/resources?limit=1&limit=1
|
||||
GET: /v2/resources?limit=1&limit=1
|
||||
status: 400
|
||||
|
||||
- name: get resources filter limit
|
||||
desc: expressing limit this way is now disallowed
|
||||
url: /v2/resources?q.field=limit&q.op=eq&q.type=&q.value=1
|
||||
GET: /v2/resources?q.field=limit&q.op=eq&q.type=&q.value=1
|
||||
status: 400
|
||||
response_strings:
|
||||
- 'Unknown argument: \"limit\": unrecognized field in query'
|
||||
|
||||
- name: get resources filter limit and limit
|
||||
url: /v2/resources?q.field=limit&q.op=eq&q.type=&q.value=1&limit=1
|
||||
GET: /v2/resources?q.field=limit&q.op=eq&q.type=&q.value=1&limit=1
|
||||
status: 400
|
||||
response_strings:
|
||||
- 'Unknown argument: \"limit\": unrecognized field in query'
|
||||
|
||||
@@ -14,7 +14,7 @@ tests:
|
||||
# samples will not be consistent.
|
||||
|
||||
- name: lists samples
|
||||
url: /v2/samples
|
||||
GET: /v2/samples
|
||||
response_headers:
|
||||
content-type: /application/json/
|
||||
response_json_paths:
|
||||
@@ -24,53 +24,53 @@ tests:
|
||||
$[2].metadata.breed: sheep
|
||||
|
||||
- name: get just one
|
||||
url: /v2/samples/$RESPONSE['$[0].id']
|
||||
GET: /v2/samples/$RESPONSE['$[0].id']
|
||||
response_json_paths:
|
||||
$.meter: livestock
|
||||
$.metadata.breed: cow
|
||||
|
||||
- name: list samples with limit
|
||||
url: /v2/samples?limit=1
|
||||
GET: /v2/samples?limit=1
|
||||
response_json_paths:
|
||||
$[0].meter: livestock
|
||||
$[0].metadata.breed: cow
|
||||
$[-1].metadata.breed: cow
|
||||
|
||||
- name: list zero samples with zero limit
|
||||
url: /v2/samples?limit=0
|
||||
GET: /v2/samples?limit=0
|
||||
status: 400
|
||||
|
||||
- name: list samples with query
|
||||
url: /v2/samples?q.field=resource_metadata.breed&q.value=cow&q.op=eq
|
||||
GET: /v2/samples?q.field=resource_metadata.breed&q.value=cow&q.op=eq
|
||||
response_json_paths:
|
||||
$[0].meter: livestock
|
||||
$[0].metadata.breed: cow
|
||||
$[-1].metadata.breed: cow
|
||||
|
||||
- name: query by user
|
||||
url: /v2/samples?q.field=user&q.value=$RESPONSE['$[0].user_id']&q.op=eq
|
||||
GET: /v2/samples?q.field=user&q.value=$RESPONSE['$[0].user_id']&q.op=eq
|
||||
response_json_paths:
|
||||
$[0].user_id: $RESPONSE['$[0].user_id']
|
||||
|
||||
- name: query by user_id
|
||||
url: /v2/samples?q.field=user_id&q.value=$RESPONSE['$[0].user_id']&q.op=eq
|
||||
GET: /v2/samples?q.field=user_id&q.value=$RESPONSE['$[0].user_id']&q.op=eq
|
||||
response_json_paths:
|
||||
$[0].user_id: $RESPONSE['$[0].user_id']
|
||||
|
||||
- name: query by project
|
||||
url: /v2/samples?q.field=project&q.value=$RESPONSE['$[0].project_id']&q.op=eq
|
||||
GET: /v2/samples?q.field=project&q.value=$RESPONSE['$[0].project_id']&q.op=eq
|
||||
response_json_paths:
|
||||
$[0].project_id: $RESPONSE['$[0].project_id']
|
||||
|
||||
- name: query by project_id
|
||||
url: /v2/samples?q.field=project_id&q.value=$RESPONSE['$[0].project_id']&q.op=eq
|
||||
GET: /v2/samples?q.field=project_id&q.value=$RESPONSE['$[0].project_id']&q.op=eq
|
||||
response_json_paths:
|
||||
$[0].project_id: $RESPONSE['$[0].project_id']
|
||||
|
||||
# Explore failure modes for listing samples
|
||||
|
||||
- name: list samples with bad field
|
||||
url: /v2/samples?q.field=harpoon&q.value=cow&q.op=eq
|
||||
GET: /v2/samples?q.field=harpoon&q.value=cow&q.op=eq
|
||||
status: 400
|
||||
response_strings:
|
||||
- timestamp
|
||||
@@ -78,23 +78,23 @@ tests:
|
||||
- unrecognized field in query
|
||||
|
||||
- name: list samples with bad metaquery field
|
||||
url: /v2/samples?q.field=metaquery&q.value=cow&q.op=eq
|
||||
GET: /v2/samples?q.field=metaquery&q.value=cow&q.op=eq
|
||||
status: 400
|
||||
response_strings:
|
||||
- unrecognized field in query
|
||||
|
||||
- name: bad limit value
|
||||
url: /v2/samples?limit=happiness
|
||||
GET: /v2/samples?limit=happiness
|
||||
status: 400
|
||||
response_strings:
|
||||
- Invalid input for field/attribute limit
|
||||
|
||||
- name: negative limit value 400
|
||||
url: /v2/samples?limit=-99
|
||||
GET: /v2/samples?limit=-99
|
||||
status: 400
|
||||
|
||||
- name: negative limit value error message
|
||||
url: /v2/samples?limit=-99
|
||||
GET: /v2/samples?limit=-99
|
||||
status: 400
|
||||
response_headers:
|
||||
content-type: /application/json/
|
||||
@@ -103,27 +103,26 @@ tests:
|
||||
|
||||
- name: bad accept
|
||||
desc: try an unexpected content type
|
||||
url: /v2/samples
|
||||
GET: /v2/samples
|
||||
request_headers:
|
||||
accept: text/plain
|
||||
status: 406
|
||||
|
||||
- name: complex good accept
|
||||
desc: client sends complex accept do we adapt
|
||||
url: /v2/samples
|
||||
GET: /v2/samples
|
||||
request_headers:
|
||||
accept: text/plain, application/json; q=0.8
|
||||
|
||||
- name: complex bad accept
|
||||
desc: client sends complex accept do we adapt
|
||||
url: /v2/samples
|
||||
GET: /v2/samples
|
||||
request_headers:
|
||||
accept: text/plain, application/binary; q=0.8
|
||||
status: 406
|
||||
|
||||
- name: bad method
|
||||
url: /v2/samples
|
||||
method: POST
|
||||
POST: /v2/samples
|
||||
status: 405
|
||||
response_headers:
|
||||
allow: GET
|
||||
@@ -131,23 +130,23 @@ tests:
|
||||
# Work with just one sample.
|
||||
|
||||
- name: list one of the samples
|
||||
url: /v2/samples?limit=1
|
||||
GET: /v2/samples?limit=1
|
||||
|
||||
- name: retrieve one sample
|
||||
url: /v2/samples/$RESPONSE['$[0].id']
|
||||
GET: /v2/samples/$RESPONSE['$[0].id']
|
||||
response_headers:
|
||||
content-type: /application/json/
|
||||
response_json_paths:
|
||||
$.meter: livestock
|
||||
|
||||
- name: retrieve sample with useless query
|
||||
url: /v2/samples/$RESPONSE['$.id']?limit=5
|
||||
GET: /v2/samples/$RESPONSE['$.id']?limit=5
|
||||
status: 400
|
||||
response_strings:
|
||||
- "Unknown argument:"
|
||||
|
||||
- name: attempt missing sample
|
||||
url: /v2/samples/davesnothere
|
||||
GET: /v2/samples/davesnothere
|
||||
status: 404
|
||||
response_headers:
|
||||
content-type: /application/json/
|
||||
|
||||
@@ -8,7 +8,7 @@ tests:
|
||||
|
||||
# Root gives us some information on where to go from here.
|
||||
- name: quick root check
|
||||
url: /
|
||||
GET: /
|
||||
response_headers:
|
||||
content-type: application/json
|
||||
response_strings:
|
||||
|
||||
@@ -9,8 +9,7 @@ tests:
|
||||
|
||||
- name: post sample for meter
|
||||
desc: post a single sample
|
||||
url: /v2/meters/apples?direct=True
|
||||
method: POST
|
||||
POST: /v2/meters/apples?direct=True
|
||||
request_headers:
|
||||
content-type: application/json
|
||||
data: |
|
||||
@@ -38,13 +37,13 @@ tests:
|
||||
|
||||
- name: get resources
|
||||
desc: get the resources that exist because of the sample
|
||||
url: /v2/resources
|
||||
GET: /v2/resources
|
||||
response_json_paths:
|
||||
$.[0].metadata.name2: value2
|
||||
|
||||
- name: get resource
|
||||
desc: get just one of those resources via self
|
||||
url: $RESPONSE['$[0].links[0].href']
|
||||
GET: $RESPONSE['$[0].links[0].href']
|
||||
response_json_paths:
|
||||
$.metadata.name2: value2
|
||||
response_strings:
|
||||
|
||||
@@ -10,7 +10,7 @@ fixtures:
|
||||
tests:
|
||||
|
||||
- name: list all resources
|
||||
url: /v2/resources
|
||||
GET: /v2/resources
|
||||
response_json_paths:
|
||||
$[0].user_id: farmerjon
|
||||
$[0].links[1].rel: livestock
|
||||
@@ -19,6 +19,6 @@ tests:
|
||||
|
||||
- name: get one resource
|
||||
desc: get a resource via the links in the first resource listed above
|
||||
url: $RESPONSE['$[0].links[0].href']
|
||||
GET: $RESPONSE['$[0].links[0].href']
|
||||
response_json_paths:
|
||||
$.resource_id: $RESPONSE['$[0].resource_id']
|
||||
|
||||
Reference in New Issue
Block a user