Support filtering revision (documents) by any legal filter
This PS adds support for filtering revisions and revision documents documents by any legal filter (those enumerated in the design document). Deckhand now supports the following filter arguments: * schema * metadata.name * metadata.label * metadata.layeringDefinition.abstract * metadata.layeringDefinition.layer * status.bucket Deckhand now supports the following filter arguments for filtering revisions: * tag Deckhand now supports multiple filters, e.g.: * ?metdata.layeringDefinition.layer=site&metadata.name=foo Deckhand now supports repeated filters, e.g.: * ?metadata.label=foo=bar&metadata.label=baz=qux The following has yet to be implemented will be done in a future follow-up PS: - support sorting by specific keywords as well - support query limit and offset filters Change-Id: I8558481e075715fe7fab98140094d37782a986d9
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# 1. Test success paths for filtering revision documents using multiple filters
|
||||
# for the following filters:
|
||||
# * metadata.label
|
||||
# * metadata.layeringDefinition.abstract
|
||||
# * metadata.layeringDefinition.layer
|
||||
# 2. Test success paths for multiple different-keyed filters.
|
||||
# 3. Test success paths for multiple same-keyed filters.
|
||||
|
||||
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
|
||||
|
||||
- name: initialize
|
||||
desc: Create initial documents
|
||||
PUT: /api/v1.0/bucket/mop/documents
|
||||
status: 200
|
||||
data: <@resources/design-doc-layering-sample.yaml
|
||||
|
||||
- name: filter_by_multiple_different_filters_expect_site
|
||||
desc: Verify revision documents filtered by multiple repeated keys that are different
|
||||
GET: /api/v1.0/revisions/$RESPONSE['$.[0].status.revision']/documents?metadata.layeringDefinition.layer=site&metadata.layeringDefinition.abstract=false
|
||||
status: 200
|
||||
response_multidoc_jsonpaths:
|
||||
$.[0].metadata.name: site-1234
|
||||
$.[0].metadata.layeringDefinition.layer: site
|
||||
$.[0].metadata.layeringDefinition.abstract: false
|
||||
|
||||
- name: filter_by_multiple_different_filters_expect_region
|
||||
desc: Verify revision documents filtered by multiple repeated keys that are different
|
||||
GET: /api/v1.0/revisions/$RESPONSE['$.[0].status.revision']/documents?metadata.layeringDefinition.layer=region&metadata.layeringDefinition.abstract=true
|
||||
status: 200
|
||||
response_multidoc_jsonpaths:
|
||||
$.[0].metadata.name: region-1234
|
||||
$.[0].metadata.layeringDefinition.layer: region
|
||||
$.[0].metadata.layeringDefinition.abstract: true
|
||||
|
||||
- name: filter_by_repeated_metadata_layeringDefinition_layer
|
||||
desc: Verify revision documents filtered by multiple repeated keys that are the same
|
||||
GET: /api/v1.0/revisions/$RESPONSE['$.[0].status.revision']/documents?metadata.layeringDefinition.layer=site&metadata.layeringDefinition.layer=region
|
||||
status: 200
|
||||
response_multidoc_jsonpaths:
|
||||
$.[*].metadata.name:
|
||||
- region-1234
|
||||
- site-1234
|
||||
$.[*].metadata.layeringDefinition.layer:
|
||||
- region
|
||||
- site
|
||||
|
||||
- name: filter_by_repeated_metadata_label
|
||||
desc: Verify revision documents filtered by multiple repeated keys that are the same
|
||||
GET: /api/v1.0/revisions/$RESPONSE['$.[0].status.revision']/documents?metadata.label=foo=bar&metadata.label=baz=qux
|
||||
status: 200
|
||||
response_multidoc_jsonpaths:
|
||||
$.[0].metadata.name: site-1234
|
||||
$.[0].metadata.labels:
|
||||
foo: bar
|
||||
baz: qux
|
||||
Reference in New Issue
Block a user