deckhand/deckhand/tests/functional/gabbits/revision-deepdiff/revision-deepdiff-success.yaml

290 lines
7.9 KiB
YAML

# Tests deepdiff functionality
#
# 1. Purges existing data to ensure test isolation
# 2. Verify deepdiff of modified data value
# - Create documents in bucket_a
# - Modify data value of doc-a document in bucket_a
# - Verify deepdiff of modified data value of doc-a
# 3. Verify deepdiff when revision=0 comparision_revision=0
# 4. Verify deepdiff when revision=0
# 5. Verify deepdiff when comparision_revision=0
# 6. Verify deepdiff of newly added document
# - Add new document doc-b in bucket_a
# - Verify deepdiff of newly added doc-b document
# 7. Verify deepdiff of deleted document
# - Delete document doc-b in bucket_a
# - Verify deepdiff of deleted doc-b document
# 8. Verify deepdiff of the same revisions
# 9. Verify deepdiff of different revisions of same document
# 10. Verify deepdiff of addition of new key in a document
# - Adding a new key in doc-a
# - Verify deepdiff of addition of a new key in doc-a
# 11. Verify removal of a key in a document
# - Removing a key in doc-a
# - Verify removal of a key in doc-a
# 12. Verify deepdiff when invalid revision id pass in input
# 13. Verify deepdiff when input revision id is not found
defaults:
request_headers:
content-type: application/x-yaml
response_headers:
content-type: application/x-yaml
verbose: true
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: deckhand/LayeringPolicy/v1
metadata:
schema: metadata/Control/v1
name: layering-policy
data:
layerOrder:
- site
...
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-a
storagePolicy: cleartext
layeringDefinition:
abstract: false
layer: site
data:
value: 1
...
- name: modify_data_value_doc-a
desc: Modify data value of doc-a document 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
storagePolicy: cleartext
layeringDefinition:
abstract: false
layer: site
data:
value: 2
...
- name: verify_doc-a_modified_value
desc: Verify deepdiff of modified data value of doc-a document
GET: /api/v1.0/revisions/1/deepdiff/2
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0].'bucket_a': modified
$.[0].'bucket_a diff'.document_changed.count: 1
$.[0].'bucket_a diff'.document_changed.details:
('example/Kind/v1', 'doc-a'):
data_changed:
values_changed:
root['value']:
old_value: 1
new_value: 2
metadata_changed: {}
- name: verify_both_rev_0
desc: Verify deepdiff when revision=0 comparision_revision=0
GET: /api/v1.0/revisions/0/deepdiff/0
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]: {}
- name: verify_rev_0
desc: Verify deepdiff when revision=0
GET: /api/v1.0/revisions/0/deepdiff/2
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]:
bucket_a: created
- name: verify_comp_rev_0
desc: Verify deepdiff when comparision_revision=0
GET: /api/v1.0/revisions/2/deepdiff/0
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0]:
bucket_a: created
- name: add_new_doc-b
desc: Add new document doc-b 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
storagePolicy: cleartext
layeringDefinition:
abstract: false
layer: site
data:
value: 2
...
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-b
storagePolicy: cleartext
layeringDefinition:
abstract: false
layer: site
data:
foo: val1
...
- name: verify_added_doc-b
desc: Verify deepdiff of newly added doc-b document
GET: /api/v1.0/revisions/2/deepdiff/3
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0].'bucket_a': modified
$.[0].'bucket_a diff'.document_added.count: 1
$.[0].'bucket_a diff'.document_added.details[0]: ['example/Kind/v1', 'doc-b']
- name: delete_doc-b
desc: Delete document doc-b 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
storagePolicy: cleartext
layeringDefinition:
abstract: false
layer: site
data:
value: 2
...
- name: verify_deleted_doc-b
desc: Verify deepdiff of deleted doc-b document
GET: /api/v1.0/revisions/3/deepdiff/4
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0].'bucket_a': modified
$.[0].'bucket_a diff'.document_deleted.count: 1
$.[0].'bucket_a diff'.document_deleted.details[0]: ['example/Kind/v1', 'doc-b']
- name: verify_revision_equality
desc: Verify deepdiff of the same revisions
GET: /api/v1.0/revisions/3/deepdiff/3
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0].'bucket_a': unmodified
- name: verify_docs_equality
desc: Verify deepdiff of different revisions of same document
GET: /api/v1.0/revisions/2/deepdiff/4
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0].'bucket_a': unmodified
- name: adding_new_key_in_doc-a
desc: Adding a new key in doc-a
PUT: /api/v1.0/buckets/bucket_a/documents
status: 200
data: |-
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-a
storagePolicy: cleartext
layeringDefinition:
abstract: false
layer: site
data:
value: 2
foo: 100
...
- name: verify_doc-a_data_new_key
desc: Verify deepdiff of addition of a new key in doc-a
GET: /api/v1.0/revisions/4/deepdiff/5
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0].'bucket_a': modified
$.[0].'bucket_a diff'.document_changed.count: 1
$.[0].'bucket_a diff'.document_changed.details:
('example/Kind/v1', 'doc-a'):
data_changed:
dictionary_item_added:
["root['foo']"]
metadata_changed: {}
- name: removing_key_in_doc-a
desc: Removing a key in doc-a
PUT: /api/v1.0/buckets/bucket_a/documents
status: 200
data: |-
---
schema: example/Kind/v1
metadata:
schema: metadata/Document/v1
name: doc-a
storagePolicy: cleartext
layeringDefinition:
abstract: false
layer: site
data:
value: 2
...
- name: verify_doc-a_data_remove_key
desc: Verify deepdiff of removal of a key in doc-a
GET: /api/v1.0/revisions/5/deepdiff/6
status: 200
response_multidoc_jsonpaths:
$.`len`: 1
$.[0].'bucket_a': modified
$.[0].'bucket_a diff'.document_changed.count: 1
$.[0].'bucket_a diff'.document_changed.details:
('example/Kind/v1', 'doc-a'):
data_changed:
dictionary_item_removed:
["root['foo']"]
metadata_changed: {}
- name: verify_invalid_input
desc: Verify deepdiff when invalid revision id pass in input
GET: /api/v1.0/revisions/test/deepdiff/2
status: 400
- name: verify_revision_not_found
desc: Verify deepdiff when input revision id is not found
GET: /api/v1.0/revisions/1000/deepdiff/2
status: 404