portainer/api/internal/edge/endpoint_test.go

83 lines
2.2 KiB
Go

package edge
import (
"testing"
portainer "github.com/portainer/portainer/api"
"github.com/portainer/portainer/api/datastore"
"github.com/portainer/portainer/api/roar"
"github.com/stretchr/testify/require"
)
func TestEndpointInEdgeGroup(t *testing.T) {
_, store := datastore.MustNewTestStore(t, true, false)
endpointGroups := []portainer.EndpointGroup{{ID: 1, Name: "test-group"}}
endpoint := &portainer.Endpoint{
ID: 1,
Name: "test-endpoint",
Type: portainer.EdgeAgentOnDockerEnvironment,
UserTrusted: true,
GroupID: endpointGroups[0].ID,
}
edgeGroupID := portainer.EdgeGroupID(1)
untrustedEndpoint := &portainer.Endpoint{
ID: 2,
Name: "untrusted-endpoint",
Type: portainer.EdgeAgentOnDockerEnvironment,
UserTrusted: false,
GroupID: endpointGroups[0].ID,
}
nonEdgeEndpoint := &portainer.Endpoint{
ID: 2,
Name: "untrusted-endpoint",
Type: portainer.AgentOnDockerEnvironment,
UserTrusted: true,
GroupID: endpointGroups[0].ID,
}
err := store.EdgeGroup().Create(&portainer.EdgeGroup{
ID: edgeGroupID,
Name: "test-edge-group",
Dynamic: false,
EndpointIDs: roar.FromSlice([]portainer.EndpointID{endpoint.ID, untrustedEndpoint.ID}),
})
require.NoError(t, err)
// Related endpoint in a static edge group
inEdgeGroup, _, err := EndpointInEdgeGroup(store, endpoint, edgeGroupID, endpointGroups)
require.NoError(t, err)
require.True(t, inEdgeGroup)
// Unrelated endpoint in a static edge group
unrelatedEndpoint := &portainer.Endpoint{
ID: 3,
Name: "unrelated-endpoint",
Type: portainer.EdgeAgentOnDockerEnvironment,
UserTrusted: true,
GroupID: 0,
}
inEdgeGroup, _, err = EndpointInEdgeGroup(store, unrelatedEndpoint, edgeGroupID, endpointGroups)
require.NoError(t, err)
require.False(t, inEdgeGroup)
// Untrusted endpoint
inEdgeGroup, _, err = EndpointInEdgeGroup(store, untrustedEndpoint, edgeGroupID, endpointGroups)
require.NoError(t, err)
require.False(t, inEdgeGroup)
// Non-edge endpoint
inEdgeGroup, _, err = EndpointInEdgeGroup(store, nonEdgeEndpoint, edgeGroupID, endpointGroups)
require.NoError(t, err)
require.False(t, inEdgeGroup)
}