query_range: Validate that start comes before end

This commit is contained in:
Anders Daljord Morken 2016-11-01 14:25:34 +01:00
parent e3d7c39529
commit 5c025a2f41
2 changed files with 16 additions and 0 deletions

View file

@ -182,6 +182,11 @@ func (api *API) queryRange(r *http.Request) (interface{}, *apiError) {
if err != nil {
return nil, &apiError{errorBadData, err}
}
if end.Before(start) {
err := errors.New("end timestamp must not be before start time")
return nil, &apiError{errorBadData, err}
}
step, err := parseDuration(r.FormValue("step"))
if err != nil {
return nil, &apiError{errorBadData, err}

View file

@ -198,6 +198,17 @@ func TestEndpoints(t *testing.T) {
},
errType: errorBadData,
},
// Start after end
{
endpoint: api.queryRange,
query: url.Values{
"query": []string{"time()"},
"start": []string{"2"},
"end": []string{"1"},
"step": []string{"1"},
},
errType: errorBadData,
},
{
endpoint: api.labelValues,
params: map[string]string{