From 586c2f9ead86a3017150a18e7fa07dc726d57bce Mon Sep 17 00:00:00 2001 From: Tomas Touceda Date: Fri, 5 Nov 2021 13:36:05 -0300 Subject: [PATCH] Properly parse order direction (#2812) --- server/service/endpoint_utils.go | 22 ++++++++++++++++++++++ server/service/integration_core_test.go | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/server/service/endpoint_utils.go b/server/service/endpoint_utils.go index 2e6c88f2c6..424105c85a 100644 --- a/server/service/endpoint_utils.go +++ b/server/service/endpoint_utils.go @@ -171,6 +171,28 @@ func makeDecoder(iface interface{}) kithttp.DecodeRequestFunc { field.SetUint(uint64(queryValUint)) case reflect.Bool: field.SetBool(queryVal == "1" || queryVal == "true") + case reflect.Int: + queryValInt := 0 + switch queryTagValue { + case "order_direction": + switch queryVal { + case "desc": + queryValInt = int(fleet.OrderDescending) + case "asc": + queryValInt = int(fleet.OrderAscending) + case "": + queryValInt = int(fleet.OrderAscending) + default: + return fleet.ListOptions{}, + errors.New("unknown order_direction: " + queryVal) + } + default: + queryValInt, err = strconv.Atoi(queryVal) + if err != nil { + return nil, errors.Wrap(err, "parsing uint from query") + } + } + field.SetInt(int64(queryValInt)) default: return nil, errors.Errorf("Cant handle type for field %s %s", f.Name, field.Kind()) } diff --git a/server/service/integration_core_test.go b/server/service/integration_core_test.go index c4b7b468f4..1141b27bb0 100644 --- a/server/service/integration_core_test.go +++ b/server/service/integration_core_test.go @@ -333,7 +333,7 @@ func (s *integrationTestSuite) TestVulnerableSoftware() { lsReq := listSoftwareRequest{} lsResp := listSoftwareResponse{} - s.DoJSON("GET", "/api/v1/fleet/software", lsReq, http.StatusOK, &lsResp, "vulnerable", "true") + s.DoJSON("GET", "/api/v1/fleet/software", lsReq, http.StatusOK, &lsResp, "vulnerable", "true", "order_key", "generated_cpe", "order_direction", "desc") assert.Len(t, lsResp.Software, 1) assert.Equal(t, soft1.ID, lsResp.Software[0].ID) assert.Len(t, lsResp.Software[0].Vulnerabilities, 1)