mirror of https://github.com/status-im/consul.git
api: Ensure the internal/ui/service endpoint responds with an array (#9397)
In some circumstances this endpoint will have no results in it (dues to ACLs, Namespaces or filtering). This ensures that the response is at least an empty array (`[]`) rather than `null`
This commit is contained in:
parent
7830eb85f6
commit
a9913b5b22
|
@ -205,7 +205,8 @@ RPC:
|
||||||
summaries, hasProxy := summarizeServices(out.Nodes.ToServiceDump(), nil, "")
|
summaries, hasProxy := summarizeServices(out.Nodes.ToServiceDump(), nil, "")
|
||||||
sorted := prepSummaryOutput(summaries, false)
|
sorted := prepSummaryOutput(summaries, false)
|
||||||
|
|
||||||
var result []*ServiceListingSummary
|
// Ensure at least a zero length slice
|
||||||
|
result := make([]*ServiceListingSummary, 0)
|
||||||
for _, svc := range sorted {
|
for _, svc := range sorted {
|
||||||
sum := ServiceListingSummary{ServiceSummary: *svc}
|
sum := ServiceListingSummary{ServiceSummary: *svc}
|
||||||
|
|
||||||
|
|
|
@ -548,6 +548,21 @@ func TestUiServices(t *testing.T) {
|
||||||
}
|
}
|
||||||
require.ElementsMatch(t, expected, summary)
|
require.ElementsMatch(t, expected, summary)
|
||||||
})
|
})
|
||||||
|
t.Run("Filtered without results", func(t *testing.T) {
|
||||||
|
filterQuery := url.QueryEscape("Service.Service == absent")
|
||||||
|
req, _ := http.NewRequest("GET", "/v1/internal/ui/services?filter="+filterQuery, nil)
|
||||||
|
resp := httptest.NewRecorder()
|
||||||
|
obj, err := a.srv.UIServices(resp, req)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assertIndex(t, resp)
|
||||||
|
|
||||||
|
// Ensure the ServiceSummary doesn't output a `null` response when there
|
||||||
|
// are no matching summaries
|
||||||
|
require.NotNil(t, obj)
|
||||||
|
|
||||||
|
summary := obj.([]*ServiceListingSummary)
|
||||||
|
require.Len(t, summary, 0)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUIGatewayServiceNodes_Terminating(t *testing.T) {
|
func TestUIGatewayServiceNodes_Terminating(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue