fix: Sort resources by name (#3941)

Fixes #3489.
This commit is contained in:
Kyle Carberry
2022-09-07 22:16:26 -05:00
committed by GitHub
parent 332056af29
commit 519d724ca4
4 changed files with 18 additions and 8 deletions

View File

@ -7,6 +7,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"net/http" "net/http"
"sort"
"strconv" "strconv"
"time" "time"
@ -282,6 +283,9 @@ func (api *API) provisionerJobResources(rw http.ResponseWriter, r *http.Request,
} }
apiResources = append(apiResources, convertWorkspaceResource(resource, agents, metadata)) 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) httpapi.Write(rw, http.StatusOK, apiResources)
} }

View File

@ -396,9 +396,9 @@ func TestTemplateVersionResources(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, resources) require.NotNil(t, resources)
require.Len(t, resources, 4) require.Len(t, resources, 4)
require.Equal(t, "some", resources[0].Name) require.Equal(t, "some", resources[2].Name)
require.Equal(t, "example", resources[0].Type) require.Equal(t, "example", resources[2].Type)
require.Len(t, resources[0].Agents, 1) require.Len(t, resources[2].Agents, 1)
}) })
} }

View File

@ -416,9 +416,9 @@ func TestWorkspaceBuildResources(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, resources) require.NotNil(t, resources)
require.Len(t, resources, 2) require.Len(t, resources, 2)
require.Equal(t, "some", resources[0].Name) require.Equal(t, "some", resources[1].Name)
require.Equal(t, "example", resources[0].Type) require.Equal(t, "example", resources[1].Type)
require.Len(t, resources[0].Agents, 1) require.Len(t, resources[1].Agents, 1)
}) })
} }

View File

@ -25,7 +25,7 @@ func TestWorkspaceResource(t *testing.T) {
Type: &proto.Provision_Response_Complete{ Type: &proto.Provision_Response_Complete{
Complete: &proto.Provision_Complete{ Complete: &proto.Provision_Complete{
Resources: []*proto.Resource{{ Resources: []*proto.Resource{{
Name: "some", Name: "beta",
Type: "example", Type: "example",
Agents: []*proto.Agent{{ Agents: []*proto.Agent{{
Id: "something", Id: "something",
@ -36,6 +36,9 @@ func TestWorkspaceResource(t *testing.T) {
Name: "a", Name: "a",
Auth: &proto.Agent_Token{}, 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) resources, err := client.WorkspaceResourcesByBuild(ctx, workspace.LatestBuild.ID)
require.NoError(t, err) 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.NoError(t, err)
require.Len(t, resource.Agents, 2) require.Len(t, resource.Agents, 2)
// Ensure it's sorted alphabetically! // Ensure it's sorted alphabetically!