deckhand/deckhand/tests/functional/gabbits/revision-diff-success.yaml
Felipe Monteiro 779374ce9c Add expected length validation to gabbi functional tests
This PS adds expected length validations to gabbi functional tests
in order for there to be more robust response body validations
for theses tests.

This is done via

  $.`len`: 1

under the attribute "response_multidoc_jsonpaths", which validates
that the returned list of items (we coerce everything into a list
for these tests, such that a {} is coerced into [{}]) is of expected
length 1.

Also break up static query parameters into dynamically generated ones
[0] to make the code more readable.

[0] Search for "query_parameters" in http://gabbi.readthedocs.io/en/latest/example.html

Change-Id: I8b1efc9a3a0276d7b383d0960f45b485bf89a234
2017-11-24 21:05:21 +00:00

265 lines
7.2 KiB
YAML

# Test success path for rollback with a single bucket.
#
# 1. Purges existing data to ensure test isolation
# 2. Creates some initial documents (via 4 requests for different buckets)
# 3. Verify expected diffs for null revision
# - Each of the 4 initial document PUTs vs null
# - null vs itself
# 4. Modify bucket c
# 5. Verify diff between create_d and update_c
# 6. Delete bucket b
# 7. Create bucket "mistake"
# 8. Remove bucket "mistake"
# 9. Verify diff between creating and deleting bucket "mistake"
# 10. Create bucket e
# 11. Verify diff between create_d and create_e
# 12. Verify diff of final state with null
defaults:
request_headers:
content-type: application/x-yaml
response_headers:
content-type: application/x-yaml
tests:
- name: purge
desc: Begin testing from known state.
DELETE: /api/v1.0/revisions
status: 204
response_headers: null
- name: create_a
desc: Create documents in bucket a
PUT: /api/v1.0/buckets/bucket_a/documents
status: 200
data: |-
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-a
layeringDefinition:
abstract: false
layer: site
data:
value: 1
...
- name: create_b
desc: Create documents in bucket b
PUT: /api/v1.0/buckets/bucket_b/documents
status: 200
data: |-
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-b
layeringDefinition:
abstract: false
layer: site
data:
value: 2
...
- name: create_c
desc: Create documents in bucket c
PUT: /api/v1.0/buckets/bucket_c/documents
status: 200
data: |-
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-c
layeringDefinition:
abstract: false
layer: site
data:
value: 3
...
- name: create_d
desc: Create documents in bucket d
PUT: /api/v1.0/buckets/bucket_d/documents
status: 200
data: |-
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-d
layeringDefinition:
abstract: false
layer: site
data:
value: 4
...
- name: verify_null_first_revision
desc: Validates response for null diff for first revision
GET: /api/v1.0/revisions/0/diff/$HISTORY['create_a'].$RESPONSE['$.[0].status.revision']
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]:
bucket_a: created
- name: verify_null_second_revision
desc: Validates response for null diff for second revision
GET: /api/v1.0/revisions/0/diff/$HISTORY['create_b'].$RESPONSE['$.[0].status.revision']
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]:
bucket_a: created
bucket_b: created
- name: verify_null_third_revision
desc: Validates response for null diff for third revision
GET: /api/v1.0/revisions/0/diff/$HISTORY['create_c'].$RESPONSE['$.[0].status.revision']
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]:
bucket_a: created
bucket_b: created
bucket_c: created
- name: verify_null_fourth_revision
desc: Validates response for null diff for fourth revision
GET: /api/v1.0/revisions/0/diff/$HISTORY['create_d'].$RESPONSE['$.[0].status.revision']
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]:
bucket_a: created
bucket_b: created
bucket_c: created
bucket_d: created
- name: verify_null_self
desc: Validates response for null diff for fourth revision
GET: /api/v1.0/revisions/0/diff/0
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]: {}
- name: update_c
desc: Update document in bucket c
PUT: /api/v1.0/buckets/bucket_c/documents
status: 200
data: |-
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-c
layeringDefinition:
abstract: false
layer: site
data:
new_value: 7
...
- name: verify_diff_between_initial_4_buckets_and_single_update
desc: Validates response for null diff between the first 4 buckets and single update
GET: /api/v1.0/revisions/$HISTORY['create_d'].$RESPONSE['$.[0].status.revision']/diff/$HISTORY['update_c'].$RESPONSE['$.[0].status.revision']
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]:
bucket_a: unmodified
bucket_b: unmodified
bucket_c: modified
bucket_d: unmodified
- name: delete_b
desc: Delete documents from bucket b
PUT: /api/v1.0/buckets/bucket_b/documents
status: 200
data: ""
- name: create_mistake
desc: Create documents in bucket mistake
PUT: /api/v1.0/buckets/bucket_mistake/documents
status: 200
data: |-
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-m
layeringDefinition:
abstract: false
layer: site
data:
value: mistake
...
- name: delete_mistake
desc: Delete documents from bucket mistake
PUT: /api/v1.0/buckets/bucket_mistake/documents
status: 200
data: ""
# Verification for whether a bucket_name was returned even though all the
# documents for this bucket were deleted.
response_multidoc_jsonpaths:
$.`len`: 1
$.[*].status.bucket: bucket_mistake
- name: verify_diff_between_created_and_deleted_mistake
desc: Validates response for deletion between the last 2 revisions
GET: /api/v1.0/revisions/$HISTORY['create_mistake'].$RESPONSE['$.[0].status.revision']/diff/$HISTORY['delete_mistake'].$RESPONSE['$.[0].status.revision']
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]:
bucket_a: unmodified
bucket_c: unmodified
bucket_d: unmodified
bucket_mistake: deleted
- name: create_e
desc: Create documents in bucket e
PUT: /api/v1.0/buckets/bucket_e/documents
status: 200
data: |-
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-e
layeringDefinition:
abstract: false
layer: site
data:
value: 6
...
- name: verify_diff_between_initial_4_buckets_and_present
desc: Validates response for null diff between the first 4 buckets and now
GET: /api/v1.0/revisions/$HISTORY['create_d'].$RESPONSE['$.[0].status.revision']/diff/$HISTORY['create_e'].$RESPONSE['$.[0].status.revision']
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]:
bucket_a: unmodified
bucket_b: deleted
bucket_c: modified
bucket_d: unmodified
bucket_e: created
- name: verify_diff_between_null_and_present
desc: Validates response for null diff and now
GET: /api/v1.0/revisions/0/diff/$HISTORY['create_e'].$RESPONSE['$.[0].status.revision']
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]:
bucket_a: created
bucket_c: created
bucket_d: created
bucket_e: created