58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package edgegroups
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
portainer "github.com/portainer/portainer/api"
|
|
"github.com/portainer/portainer/api/datastore"
|
|
"github.com/portainer/portainer/api/internal/testhelpers"
|
|
|
|
"github.com/segmentio/encoding/json"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestEdgeGroupCreateHandler(t *testing.T) {
|
|
t.Parallel()
|
|
handler, _ := newHandlerWithEdgeEndpoints(t)
|
|
|
|
rr := httptest.NewRecorder()
|
|
|
|
req := httptest.NewRequest(
|
|
http.MethodPost,
|
|
"/edge_groups",
|
|
strings.NewReader(`{"Name": "New Edge Group", "Endpoints": [1, 2, 3]}`),
|
|
)
|
|
|
|
handler.ServeHTTP(rr, req)
|
|
require.Equal(t, http.StatusOK, rr.Result().StatusCode)
|
|
|
|
var responseGroup portainer.EdgeGroup
|
|
err := json.NewDecoder(rr.Body).Decode(&responseGroup)
|
|
require.NoError(t, err)
|
|
|
|
require.ElementsMatch(t, []portainer.EndpointID{1, 2, 3}, responseGroup.Endpoints)
|
|
}
|
|
|
|
func TestEdgeGroupCreatePanic(t *testing.T) {
|
|
t.Parallel()
|
|
_, store := datastore.MustNewTestStore(t, false, true)
|
|
|
|
handler := NewHandler(testhelpers.NewTestRequestBouncer())
|
|
handler.DataStore = store
|
|
|
|
err := store.EdgeGroup().Create(&portainer.EdgeGroup{ID: 1, Name: "New Edge Group"})
|
|
require.NoError(t, err)
|
|
|
|
rr := httptest.NewRecorder()
|
|
req := httptest.NewRequest(http.MethodPost,
|
|
"/edge_groups",
|
|
strings.NewReader(`{"Name": "New Edge Group", "Endpoints": [1, 2, 3]}`),
|
|
)
|
|
|
|
handler.ServeHTTP(rr, req)
|
|
require.Equal(t, http.StatusBadRequest, rr.Result().StatusCode)
|
|
}
|