From 9708203e56aee562dacf3a5b2be861ce83a06441 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 7 Sep 2022 19:46:46 +0000 Subject: [PATCH] fix: Sort resources by name Fixes #3489. --- coderd/provisionerjobs.go | 4 ++++ coderd/workspacebuilds_test.go | 4 ++-- coderd/workspaceresources_test.go | 10 ++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/coderd/provisionerjobs.go b/coderd/provisionerjobs.go index 19e802fc35440..fdaf271c7e320 100644 --- a/coderd/provisionerjobs.go +++ b/coderd/provisionerjobs.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "net/http" + "sort" "strconv" "time" @@ -282,6 +283,9 @@ func (api *API) provisionerJobResources(rw http.ResponseWriter, r *http.Request, } apiResources = append(apiResources, convertWorkspaceResource(resource, agents, metadata)) } + sort.Slice(apiResources, func(i, j int) bool { + return apiResources[i].Name < apiResources[j].Name + }) httpapi.Write(rw, http.StatusOK, apiResources) } diff --git a/coderd/workspacebuilds_test.go b/coderd/workspacebuilds_test.go index 5ded39bf91c87..ee21ddc2b679e 100644 --- a/coderd/workspacebuilds_test.go +++ b/coderd/workspacebuilds_test.go @@ -416,8 +416,8 @@ func TestWorkspaceBuildResources(t *testing.T) { require.NoError(t, err) require.NotNil(t, resources) require.Len(t, resources, 2) - require.Equal(t, "some", resources[0].Name) - require.Equal(t, "example", resources[0].Type) + require.Equal(t, "some", resources[1].Name) + require.Equal(t, "example", resources[1].Type) require.Len(t, resources[0].Agents, 1) }) } diff --git a/coderd/workspaceresources_test.go b/coderd/workspaceresources_test.go index ffb3d10aeef6b..c106c3c4efc67 100644 --- a/coderd/workspaceresources_test.go +++ b/coderd/workspaceresources_test.go @@ -25,7 +25,7 @@ func TestWorkspaceResource(t *testing.T) { Type: &proto.Provision_Response_Complete{ Complete: &proto.Provision_Complete{ Resources: []*proto.Resource{{ - Name: "some", + Name: "beta", Type: "example", Agents: []*proto.Agent{{ Id: "something", @@ -36,6 +36,9 @@ func TestWorkspaceResource(t *testing.T) { Name: "a", Auth: &proto.Agent_Token{}, }}, + }, { + Name: "alpha", + Type: "example", }}, }, }, @@ -51,7 +54,10 @@ func TestWorkspaceResource(t *testing.T) { resources, err := client.WorkspaceResourcesByBuild(ctx, workspace.LatestBuild.ID) require.NoError(t, err) - resource, err := client.WorkspaceResource(ctx, resources[0].ID) + // Ensure it's sorted alphabetically! + require.Equal(t, "alpha", resources[0].Name) + require.Equal(t, "beta", resources[1].Name) + resource, err := client.WorkspaceResource(ctx, resources[1].ID) require.NoError(t, err) require.Len(t, resource.Agents, 2) // Ensure it's sorted alphabetically!