//nolint:dupl package server import ( "encoding/json" "net/http" "net/http/httptest" "testing" "github.com/stretchr/testify/assert" rulesengine "edge-infra.dev/pkg/sds/emergencyaccess/rules" ) //nolint:dupl func TestReadAllCommands(t *testing.T) { log := newLogger() t.Setenv("RCLI_RES_DATA_DIR", "./testdata") ruleseng := MockRulesEngine{AddedNames: map[string][]string{"commands": {"ls"}}} r := httptest.NewRecorder() _, ginEngine := getTestGinContext(r) _, err := New(ginEngine, &ruleseng, log) assert.Nil(t, err) req, err := http.NewRequest(http.MethodGet, "/admin/commands", nil) assert.NoError(t, err) ginEngine.ServeHTTP(r, req) response := r.Result() assert.Equal(t, response.StatusCode, http.StatusOK) var respData []rulesengine.Command err = json.Unmarshal(r.Body.Bytes(), &respData) assert.NoError(t, err) assert.Equal(t, []rulesengine.Command{{Name: "ls", ID: "test"}}, respData) } //nolint:dupl func TestReadCommand(t *testing.T) { log := newLogger() t.Setenv("RCLI_RES_DATA_DIR", "./testdata") ruleseng := MockRulesEngine{AddedNames: map[string][]string{"commands": {"ls"}}} r := httptest.NewRecorder() _, ginEngine := getTestGinContext(r) _, err := New(ginEngine, &ruleseng, log) assert.Nil(t, err) req, err := http.NewRequest(http.MethodGet, "/admin/commands/ls", nil) assert.NoError(t, err) ginEngine.ServeHTTP(r, req) response := r.Result() assert.Equal(t, response.StatusCode, http.StatusOK) var respData rulesengine.Command err = json.Unmarshal(r.Body.Bytes(), &respData) assert.NoError(t, err) assert.Equal(t, rulesengine.Command{Name: "ls", ID: "test"}, respData) } // nolint: dupl func TestReadCommandsNoCommands(t *testing.T) { log := newLogger() t.Setenv("RCLI_RES_DATA_DIR", "./testdata") ruleseng := MockRulesEngine{} r := httptest.NewRecorder() _, ginEngine := getTestGinContext(r) _, err := New(ginEngine, &ruleseng, log) assert.Nil(t, err) req, err := http.NewRequest(http.MethodGet, "/admin/commands", nil) assert.NoError(t, err) ginEngine.ServeHTTP(r, req) response := r.Result() assert.Equal(t, response.StatusCode, http.StatusOK) var respData []rulesengine.Command err = json.Unmarshal(r.Body.Bytes(), &respData) assert.NoError(t, err) assert.Equal(t, []rulesengine.Command(nil), respData) }