Add functional tests for document replacement

Covers replacement of a substitution source working.

Change-Id: I7c3fc1b4f8477df2bb932f43c6033eaf9c6ceb39
This commit is contained in:
Felipe Monteiro 2018-03-27 12:11:02 -04:00
parent 4799acdbcc
commit 84435cd1c8
4 changed files with 124 additions and 2 deletions

View File

@ -92,8 +92,8 @@ class RenderedDocumentsResource(api_base.BaseResource):
@policy.authorize('deckhand:list_cleartext_documents')
@common.sanitize_params([
'schema', 'metadata.name', 'metadata.label', 'status.bucket', 'order',
'sort'])
'schema', 'metadata.name', 'metadata.layeringDefinition.layer',
'metadata.label', 'status.bucket', 'order', 'sort'])
def on_get(self, req, resp, sanitized_params, revision_id):
include_encrypted = policy.conditional_authorize(
'deckhand:list_encrypted_documents', req.context, do_raise=False)

View File

@ -53,6 +53,8 @@ data:
type: string
labels:
type: object
replacement:
type: boolean
layeringDefinition:
type: object
properties:

View File

@ -0,0 +1,117 @@
# Tests success path for document replacement.
#
# 1. Purges existing data to ensure test isolation
# 2. Adds initial documents with one site that that replaces its parent
# 3. Verify that replacement of a substitution source works
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_documents_for_validating_replacement
desc: |
Create documents for validating replacement of a substitution source.
PUT: /api/v1.0/buckets/mop/documents
status: 200
data: |
---
schema: deckhand/LayeringPolicy/v1
metadata:
schema: metadata/Control/v1
name: layering-policy
data:
layerOrder:
- global
- site
---
schema: aic/Versions/v1
metadata:
schema: metadata/Document/v1
name: a
labels:
selector: foo
layeringDefinition:
abstract: False
layer: global
data:
conf:
foo: default
---
schema: aic/Versions/v1
metadata:
schema: metadata/Document/v1
name: a
labels:
selector: baz
replacement: true
layeringDefinition:
abstract: False
layer: site
parentSelector:
selector: foo
actions:
- method: merge
path: .
data:
conf:
bar: override
---
schema: armada/Chart/v1
metadata:
schema: metadata/Document/v1
name: c
layeringDefinition:
abstract: False
layer: global
substitutions:
- src:
schema: aic/Versions/v1
name: a
path: .conf
dest:
path: .application.conf
data:
application:
conf: {}
...
- name: verify_document_replaces_substitution_source
desc: |
Check that document replacement works when a document replaces a
substitution source -- in effect meaning that the replacement document
is used as the substitution source.
GET: /api/v1.0/revisions/$RESPONSE['$.[0].status.revision']/rendered-documents
query_parameters:
sort:
- metadata.name
- metadata.layeringDefinition.layer
status: 200
response_multidoc_jsonpaths:
$.`len`: 3
$.[0].metadata.name: a
$.[0].metadata.layeringDefinition.layer: site
$.[0].metadata.replacement: true
$.[0].data:
conf:
foo: default
bar: override
$.[1].metadata.name: c
$.[1].metadata.layeringDefinition.layer: global
$.[1].data:
application:
conf:
foo: default
bar: override
$.[2].metadata.name: layering-policy

View File

@ -1332,6 +1332,7 @@ data:
---
schema: aic/Versions/v1
metadata:
schema: metadata/Document/v1
name: a
labels:
selector: foo
@ -1344,6 +1345,7 @@ data:
---
schema: aic/Versions/v1
metadata:
schema: metadata/Document/v1
name: a
labels:
selector: baz
@ -1362,6 +1364,7 @@ data:
---
schema: armada/Chart/v1
metadata:
schema: metadata/Document/v1
name: c
layeringDefinition:
abstract: False