mirror of https://github.com/portainer/portainer
100 lines
3.8 KiB
Go
100 lines
3.8 KiB
Go
|
package edgestacks
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
portainer "github.com/portainer/portainer/api"
|
||
|
"github.com/portainer/portainer/api/internal/testhelpers"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func Test_hasKubeEndpoint(t *testing.T) {
|
||
|
endpoints := []portainer.Endpoint{
|
||
|
{ID: 1, Type: portainer.DockerEnvironment},
|
||
|
{ID: 2, Type: portainer.AgentOnDockerEnvironment},
|
||
|
{ID: 3, Type: portainer.AzureEnvironment},
|
||
|
{ID: 4, Type: portainer.EdgeAgentOnDockerEnvironment},
|
||
|
{ID: 5, Type: portainer.KubernetesLocalEnvironment},
|
||
|
{ID: 6, Type: portainer.AgentOnKubernetesEnvironment},
|
||
|
{ID: 7, Type: portainer.EdgeAgentOnKubernetesEnvironment},
|
||
|
}
|
||
|
|
||
|
datastore := testhelpers.NewDatastore(testhelpers.WithEndpoints(endpoints))
|
||
|
|
||
|
tests := []struct {
|
||
|
endpointIds []portainer.EndpointID
|
||
|
expected bool
|
||
|
}{
|
||
|
{endpointIds: []portainer.EndpointID{1}, expected: false},
|
||
|
{endpointIds: []portainer.EndpointID{2}, expected: false},
|
||
|
{endpointIds: []portainer.EndpointID{3}, expected: false},
|
||
|
{endpointIds: []portainer.EndpointID{4}, expected: false},
|
||
|
{endpointIds: []portainer.EndpointID{5}, expected: true},
|
||
|
{endpointIds: []portainer.EndpointID{6}, expected: true},
|
||
|
{endpointIds: []portainer.EndpointID{7}, expected: true},
|
||
|
{endpointIds: []portainer.EndpointID{7, 2}, expected: true},
|
||
|
{endpointIds: []portainer.EndpointID{6, 4, 1}, expected: true},
|
||
|
{endpointIds: []portainer.EndpointID{1, 2, 3}, expected: false},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
|
||
|
ans, err := hasKubeEndpoint(datastore.Endpoint(), test.endpointIds)
|
||
|
assert.NoError(t, err, "hasKubeEndpoint shouldn't fail")
|
||
|
|
||
|
assert.Equal(t, test.expected, ans, "hasKubeEndpoint expected to return %b for %v, but returned %b", test.expected, test.endpointIds, ans)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_hasKubeEndpoint_failWhenEndpointDontExist(t *testing.T) {
|
||
|
datastore := testhelpers.NewDatastore(testhelpers.WithEndpoints([]portainer.Endpoint{}))
|
||
|
|
||
|
_, err := hasKubeEndpoint(datastore.Endpoint(), []portainer.EndpointID{1})
|
||
|
assert.Error(t, err, "hasKubeEndpoint should fail")
|
||
|
}
|
||
|
|
||
|
func Test_hasDockerEndpoint(t *testing.T) {
|
||
|
endpoints := []portainer.Endpoint{
|
||
|
{ID: 1, Type: portainer.DockerEnvironment},
|
||
|
{ID: 2, Type: portainer.AgentOnDockerEnvironment},
|
||
|
{ID: 3, Type: portainer.AzureEnvironment},
|
||
|
{ID: 4, Type: portainer.EdgeAgentOnDockerEnvironment},
|
||
|
{ID: 5, Type: portainer.KubernetesLocalEnvironment},
|
||
|
{ID: 6, Type: portainer.AgentOnKubernetesEnvironment},
|
||
|
{ID: 7, Type: portainer.EdgeAgentOnKubernetesEnvironment},
|
||
|
}
|
||
|
|
||
|
datastore := testhelpers.NewDatastore(testhelpers.WithEndpoints(endpoints))
|
||
|
|
||
|
tests := []struct {
|
||
|
endpointIds []portainer.EndpointID
|
||
|
expected bool
|
||
|
}{
|
||
|
{endpointIds: []portainer.EndpointID{1}, expected: true},
|
||
|
{endpointIds: []portainer.EndpointID{2}, expected: true},
|
||
|
{endpointIds: []portainer.EndpointID{3}, expected: false},
|
||
|
{endpointIds: []portainer.EndpointID{4}, expected: true},
|
||
|
{endpointIds: []portainer.EndpointID{5}, expected: false},
|
||
|
{endpointIds: []portainer.EndpointID{6}, expected: false},
|
||
|
{endpointIds: []portainer.EndpointID{7}, expected: false},
|
||
|
{endpointIds: []portainer.EndpointID{7, 2}, expected: true},
|
||
|
{endpointIds: []portainer.EndpointID{6, 4, 1}, expected: true},
|
||
|
{endpointIds: []portainer.EndpointID{1, 2, 3}, expected: true},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
|
||
|
ans, err := hasDockerEndpoint(datastore.Endpoint(), test.endpointIds)
|
||
|
assert.NoError(t, err, "hasDockerEndpoint shouldn't fail")
|
||
|
|
||
|
assert.Equal(t, test.expected, ans, "hasDockerEndpoint expected to return %b for %v, but returned %b", test.expected, test.endpointIds, ans)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_hasDockerEndpoint_failWhenEndpointDontExist(t *testing.T) {
|
||
|
datastore := testhelpers.NewDatastore(testhelpers.WithEndpoints([]portainer.Endpoint{}))
|
||
|
|
||
|
_, err := hasDockerEndpoint(datastore.Endpoint(), []portainer.EndpointID{1})
|
||
|
assert.Error(t, err, "hasDockerEndpoint should fail")
|
||
|
}
|