mirror of https://github.com/hashicorp/consul
78 lines
1.8 KiB
Go
78 lines
1.8 KiB
Go
|
// Copyright (c) HashiCorp, Inc.
|
||
|
// SPDX-License-Identifier: BUSL-1.1
|
||
|
|
||
|
package controller
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
|
||
|
"github.com/hashicorp/consul/internal/resource"
|
||
|
"github.com/hashicorp/consul/proto-public/pbresource"
|
||
|
"github.com/hashicorp/consul/proto/private/prototest"
|
||
|
)
|
||
|
|
||
|
func TestMakeRequests(t *testing.T) {
|
||
|
redType := &pbresource.Type{
|
||
|
Group: "colors",
|
||
|
GroupVersion: "vfake",
|
||
|
Kind: "red",
|
||
|
}
|
||
|
blueType := &pbresource.Type{
|
||
|
Group: "colors",
|
||
|
GroupVersion: "vfake",
|
||
|
Kind: "blue",
|
||
|
}
|
||
|
|
||
|
casparID := &pbresource.ID{
|
||
|
Type: redType,
|
||
|
Tenancy: resource.DefaultNamespacedTenancy(),
|
||
|
Name: "caspar",
|
||
|
Uid: "ignored",
|
||
|
}
|
||
|
babypantsID := &pbresource.ID{
|
||
|
Type: redType,
|
||
|
Tenancy: resource.DefaultNamespacedTenancy(),
|
||
|
Name: "babypants",
|
||
|
Uid: "ignored",
|
||
|
}
|
||
|
zimRef := &pbresource.Reference{
|
||
|
Type: redType,
|
||
|
Tenancy: resource.DefaultNamespacedTenancy(),
|
||
|
Name: "zim",
|
||
|
Section: "ignored",
|
||
|
}
|
||
|
girRef := &pbresource.Reference{
|
||
|
Type: redType,
|
||
|
Tenancy: resource.DefaultNamespacedTenancy(),
|
||
|
Name: "gir",
|
||
|
Section: "ignored",
|
||
|
}
|
||
|
|
||
|
newBlueReq := func(name string) Request {
|
||
|
return Request{
|
||
|
ID: &pbresource.ID{
|
||
|
Type: blueType,
|
||
|
Tenancy: resource.DefaultNamespacedTenancy(),
|
||
|
Name: name,
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
require.Nil(t, MakeRequests[*pbresource.ID](blueType, nil))
|
||
|
require.Nil(t, MakeRequests[*pbresource.Reference](blueType, nil))
|
||
|
|
||
|
prototest.AssertElementsMatch(t, []Request{
|
||
|
newBlueReq("caspar"), newBlueReq("babypants"),
|
||
|
}, MakeRequests[*pbresource.ID](blueType, []*pbresource.ID{
|
||
|
casparID, babypantsID,
|
||
|
}))
|
||
|
|
||
|
prototest.AssertElementsMatch(t, []Request{
|
||
|
newBlueReq("gir"), newBlueReq("zim"),
|
||
|
}, MakeRequests[*pbresource.Reference](blueType, []*pbresource.Reference{
|
||
|
girRef, zimRef,
|
||
|
}))
|
||
|
}
|