From c841ee8c2929c713dfb72e9dd2d15b2ebb72b77a Mon Sep 17 00:00:00 2001 From: Luka Peschke Date: Fri, 30 Aug 2019 15:13:37 +0200 Subject: [PATCH] Fix validation of begin/end in GET /v2/summary endpoint Before this patch, if any of the "begin" and "end" parameters were passed to the GET /v2/summary endpoint, validation would fail. This was caused by "voluptuous.Coerce" being used instead of the custom "SingleQueryParam" validator. Change-Id: I09656c742f3ba6b02de3656201f6903f590944bd --- cloudkitty/api/v2/summary/summary.py | 6 ++++-- cloudkitty/tests/gabbi/gabbits/v2-summary.yaml | 10 ++++++++++ ...gin-end-validation-v2-summary-52401fb47ef9b5d6.yaml | 6 ++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/fix-begin-end-validation-v2-summary-52401fb47ef9b5d6.yaml diff --git a/cloudkitty/api/v2/summary/summary.py b/cloudkitty/api/v2/summary/summary.py index 01d7d988..5bbc48ff 100644 --- a/cloudkitty/api/v2/summary/summary.py +++ b/cloudkitty/api/v2/summary/summary.py @@ -29,8 +29,10 @@ class Summary(base.BaseResource): voluptuous.Optional('groupby'): api_utils.MultiQueryParam(str), voluptuous.Optional('filters'): api_utils.SingleDictQueryParam(str, str), - voluptuous.Optional('begin'): voluptuous.Coerce(tzutils.dt_from_iso), - voluptuous.Optional('end'): voluptuous.Coerce(tzutils.dt_from_iso), + voluptuous.Optional('begin'): api_utils.SingleQueryParam( + tzutils.dt_from_iso), + voluptuous.Optional('end'): api_utils.SingleQueryParam( + tzutils.dt_from_iso), }) def get(self, groupby=None, filters={}, begin=None, end=None, diff --git a/cloudkitty/tests/gabbi/gabbits/v2-summary.yaml b/cloudkitty/tests/gabbi/gabbits/v2-summary.yaml index d2e5ca9c..211fcbf4 100644 --- a/cloudkitty/tests/gabbi/gabbits/v2-summary.yaml +++ b/cloudkitty/tests/gabbi/gabbits/v2-summary.yaml @@ -58,3 +58,13 @@ tests: response_json_paths: $.results.`len`: 5 $.total: 14 + + - name: Get a summary with a start and end date + url: /v2/summary + status: 200 + query_parameters: + begin: "2017-01-01T00:00:00+00:00" + end: "2017-01-02T00:00:00+00:00" + response_json_paths: + $.results.`len`: 0 + $.total: 0 diff --git a/releasenotes/notes/fix-begin-end-validation-v2-summary-52401fb47ef9b5d6.yaml b/releasenotes/notes/fix-begin-end-validation-v2-summary-52401fb47ef9b5d6.yaml new file mode 100644 index 00000000..fc825a5c --- /dev/null +++ b/releasenotes/notes/fix-begin-end-validation-v2-summary-52401fb47ef9b5d6.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + A validation issue causing the ``GET /v2/summary`` endpoint to + systematically return a 400 error if any of the ``begin`` or ``end`` + parameters was specified has been fixed.