mirror of
https://github.com/status-im/consul.git
synced 2025-02-09 04:14:50 +00:00
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
a8b4e606a4
commit
6cd7ad3952
@ -205,7 +205,8 @@ RPC:
|
||||
summaries, hasProxy := summarizeServices(out.Nodes.ToServiceDump(), nil, "")
|
||||
sorted := prepSummaryOutput(summaries, false)
|
||||
|
||||
var result []*ServiceListingSummary
|
||||
// Ensure at least a zero length slice
|
||||
result := make([]*ServiceListingSummary, 0)
|
||||
for _, svc := range sorted {
|
||||
sum := ServiceListingSummary{ServiceSummary: *svc}
|
||||
|
||||
|
@ -528,6 +528,21 @@ func TestUiServices(t *testing.T) {
|
||||
}
|
||||
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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user