...

Source file src/edge-infra.dev/pkg/sds/emergencyaccess/rules/server/commands_test.go

Documentation: edge-infra.dev/pkg/sds/emergencyaccess/rules/server

     1  //nolint:dupl
     2  package server
     3  
     4  import (
     5  	"encoding/json"
     6  	"net/http"
     7  	"net/http/httptest"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  
    12  	rulesengine "edge-infra.dev/pkg/sds/emergencyaccess/rules"
    13  )
    14  
    15  //nolint:dupl
    16  func TestReadAllCommands(t *testing.T) {
    17  	log := newLogger()
    18  	t.Setenv("RCLI_RES_DATA_DIR", "./testdata")
    19  	ruleseng := MockRulesEngine{AddedNames: map[string][]string{"commands": {"ls"}}}
    20  
    21  	r := httptest.NewRecorder()
    22  	_, ginEngine := getTestGinContext(r)
    23  	_, err := New(ginEngine, &ruleseng, log)
    24  	assert.Nil(t, err)
    25  
    26  	req, err := http.NewRequest(http.MethodGet, "/admin/commands", nil)
    27  	assert.NoError(t, err)
    28  	ginEngine.ServeHTTP(r, req)
    29  	response := r.Result()
    30  
    31  	assert.Equal(t, response.StatusCode, http.StatusOK)
    32  	var respData []rulesengine.Command
    33  	err = json.Unmarshal(r.Body.Bytes(), &respData)
    34  	assert.NoError(t, err)
    35  	assert.Equal(t, []rulesengine.Command{{Name: "ls", ID: "test"}}, respData)
    36  }
    37  
    38  //nolint:dupl
    39  func TestReadCommand(t *testing.T) {
    40  	log := newLogger()
    41  	t.Setenv("RCLI_RES_DATA_DIR", "./testdata")
    42  	ruleseng := MockRulesEngine{AddedNames: map[string][]string{"commands": {"ls"}}}
    43  
    44  	r := httptest.NewRecorder()
    45  	_, ginEngine := getTestGinContext(r)
    46  	_, err := New(ginEngine, &ruleseng, log)
    47  	assert.Nil(t, err)
    48  
    49  	req, err := http.NewRequest(http.MethodGet, "/admin/commands/ls", nil)
    50  	assert.NoError(t, err)
    51  	ginEngine.ServeHTTP(r, req)
    52  	response := r.Result()
    53  
    54  	assert.Equal(t, response.StatusCode, http.StatusOK)
    55  	var respData rulesengine.Command
    56  	err = json.Unmarshal(r.Body.Bytes(), &respData)
    57  	assert.NoError(t, err)
    58  	assert.Equal(t, rulesengine.Command{Name: "ls", ID: "test"}, respData)
    59  }
    60  
    61  // nolint: dupl
    62  func TestReadCommandsNoCommands(t *testing.T) {
    63  	log := newLogger()
    64  	t.Setenv("RCLI_RES_DATA_DIR", "./testdata")
    65  	ruleseng := MockRulesEngine{}
    66  
    67  	r := httptest.NewRecorder()
    68  	_, ginEngine := getTestGinContext(r)
    69  	_, err := New(ginEngine, &ruleseng, log)
    70  	assert.Nil(t, err)
    71  
    72  	req, err := http.NewRequest(http.MethodGet, "/admin/commands", nil)
    73  	assert.NoError(t, err)
    74  	ginEngine.ServeHTTP(r, req)
    75  	response := r.Result()
    76  
    77  	assert.Equal(t, response.StatusCode, http.StatusOK)
    78  	var respData []rulesengine.Command
    79  	err = json.Unmarshal(r.Body.Bytes(), &respData)
    80  	assert.NoError(t, err)
    81  	assert.Equal(t, []rulesengine.Command(nil), respData)
    82  }
    83  

View as plain text