From 4647acca8e452ef490eedad9a78e73202abc7c21 Mon Sep 17 00:00:00 2001 From: Chris Dent Date: Mon, 16 Mar 2015 14:50:51 +0000 Subject: [PATCH] Add gabbi tests for resources These test for appopriate HTTP behavior. Two different files are used: one without any resources established by fixture and one which uses the SampleDataFixture to make sure there is one resource. Future gabbi tests for resources should explore authorization handling (RBAC) and more complex query scenarios (with larger data sets). Change-Id: I95b4ed684f663912c29da3d48102631f4d0dd4df --- .../tests/gabbi/gabbits/resources-empty.yaml | 59 +++++++++++++++++++ .../gabbi/gabbits/resources-fixtured.yaml | 57 ++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 ceilometer/tests/gabbi/gabbits/resources-empty.yaml create mode 100644 ceilometer/tests/gabbi/gabbits/resources-fixtured.yaml diff --git a/ceilometer/tests/gabbi/gabbits/resources-empty.yaml b/ceilometer/tests/gabbi/gabbits/resources-empty.yaml new file mode 100644 index 000000000..44d407ceb --- /dev/null +++ b/ceilometer/tests/gabbi/gabbits/resources-empty.yaml @@ -0,0 +1,59 @@ +# +# Explore and cover resources API with gabbi tests when there are no +# resources. +# + +fixtures: + - ConfigFixture + +tests: + +# Check for a list of resources, modifying the request in various +# ways. + + - name: list resources no extra + desc: Provide no additional header guidelines + url: /v2/resources + response_headers: + content-type: /application/json/ + response_strings: + - "[]" + + - name: list resources but get url wrong + url: /v2/resrces + status: 404 + + - name: list resources explicit accept + url: /v2/resources + request_headers: + accept: application/json + response_strings: + - "[]" + + - name: list resources bad accept + url: /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 + status: 400 + response_strings: + - unrecognized field in query + + - name: list resources with query + url: /v2/resources?q.field=resource&q.value=cars + response_strings: + - "[]" + + - name: list resource bad type meter links + url: /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 + response_strings: + - "[]" diff --git a/ceilometer/tests/gabbi/gabbits/resources-fixtured.yaml b/ceilometer/tests/gabbi/gabbits/resources-fixtured.yaml new file mode 100644 index 000000000..55783c47f --- /dev/null +++ b/ceilometer/tests/gabbi/gabbits/resources-fixtured.yaml @@ -0,0 +1,57 @@ +# +# Explore and cover resources API with gabbi tests when there are a +# small number of pre-existing resources +# + +fixtures: + - ConfigFixture + - SampleDataFixture + +tests: + + - name: list all resources + url: /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'] + 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 + 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 + 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 + response_strings: + - "[]" + + - name: fail to get one resource + url: /v2/resources/nosirnothere + status: 404 + + - name: list resource meter links present + url: /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 + desc: there is only one links entry when meter_links is 0 + response_json_paths: + $[0].links[0].rel: self + $[0].links[-1].rel: self