X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=E2Manager%2Fmain%2Fhttp_server_test.go;h=760274d71fc7ce2280ef82152d2be29e1e977af7;hb=33f84e1a0998af025880be3e8eb087fac34af731;hp=c59403e635e94c1162b201e788a88eb93836de0b;hpb=07ef76dd471a0892a893c90e0ab06713aee34be1;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/main/http_server_test.go b/E2Manager/main/http_server_test.go index c59403e..760274d 100644 --- a/E2Manager/main/http_server_test.go +++ b/E2Manager/main/http_server_test.go @@ -19,15 +19,140 @@ package main import ( "e2mgr/configuration" + "e2mgr/mocks" + "github.com/gorilla/mux" "github.com/stretchr/testify/assert" "gopkg.in/yaml.v2" "io/ioutil" + "net/http" + "net/http/httptest" "os" "testing" ) -func TestRunServer(t *testing.T) { +func setupRouterAndMocks() (*mux.Router, *mocks.ControllerMock, *mocks.NodebControllerMock) { + controllerMock := &mocks.ControllerMock{} + controllerMock.On("ShutdownHandler").Return(nil) + controllerMock.On("X2ResetHandler").Return(nil) + controllerMock.On("X2SetupHandler").Return(nil) + controllerMock.On("EndcSetupHandler").Return(nil) + nodebControllerMock := &mocks.NodebControllerMock{} + nodebControllerMock.On("GetNodebIdList").Return(nil) + nodebControllerMock.On("GetNodeb").Return(nil) + nodebControllerMock.On("HandleHealthCheckRequest").Return(nil) + + router := mux.NewRouter() + initializeRoutes(router, nodebControllerMock, controllerMock) + return router, controllerMock, nodebControllerMock +} + +func TestRoutePostEndcSetup(t *testing.T) { + router, controllerMock, _ := setupRouterAndMocks() + + req, err := http.NewRequest("POST", "/v1/nodeb/endc-setup", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + controllerMock.AssertNumberOfCalls(t,"EndcSetupHandler", 1) +} + +func TestRoutePostX2Setup(t *testing.T) { + router, controllerMock, _ := setupRouterAndMocks() + + req, err := http.NewRequest("POST", "/v1/nodeb/x2-setup", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + controllerMock.AssertNumberOfCalls(t,"X2SetupHandler", 1) +} + +func TestRouteGetNodebIds(t *testing.T) { + router, _, nodebControllerMock := setupRouterAndMocks() + + req, err := http.NewRequest("GET", "/v1/nodeb/ids", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + nodebControllerMock.AssertNumberOfCalls(t, "GetNodebIdList", 1) +} + +func TestRouteGetNodebRanName(t *testing.T) { + router, _, nodebControllerMock := setupRouterAndMocks() + + req, err := http.NewRequest("GET", "/v1/nodeb/ran1", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + assert.Equal(t, http.StatusOK, rr.Code, "handler returned wrong status code") + assert.Equal(t, "ran1", rr.Body.String(), "handler returned wrong body") + nodebControllerMock.AssertNumberOfCalls(t, "GetNodeb", 1) +} + +func TestRouteGetHealth(t *testing.T) { + router, _, nodebControllerMock := setupRouterAndMocks() + + req, err := http.NewRequest("GET", "/v1/health", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + nodebControllerMock.AssertNumberOfCalls(t, "HandleHealthCheckRequest", 1) +} + +func TestRoutePutNodebShutdown(t *testing.T) { + router, controllerMock, _ := setupRouterAndMocks() + + req, err := http.NewRequest("PUT", "/v1/nodeb/shutdown", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + controllerMock.AssertNumberOfCalls(t, "ShutdownHandler", 1) +} + +func TestRoutePutNodebResetRanName(t *testing.T) { + router, controllerMock, _ := setupRouterAndMocks() + + req, err := http.NewRequest("PUT", "/v1/nodeb/ran1/reset", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + assert.Equal(t, http.StatusOK, rr.Code, "handler returned wrong status code") + assert.Equal(t, "ran1", rr.Body.String(), "handler returned wrong body") + controllerMock.AssertNumberOfCalls(t, "X2ResetHandler", 1) +} + +func TestRouteNotFound(t *testing.T) { + router, _, _ := setupRouterAndMocks() + + req, err := http.NewRequest("GET", "/v1/no/such/route", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + assert.Equal(t, http.StatusNotFound, rr.Code, "handler returned wrong status code") } func TestParseConfigurationSuccess(t *testing.T) { @@ -37,107 +162,107 @@ func TestParseConfigurationSuccess(t *testing.T) { assert.Equal(t, 4096, config.Rmr.MaxMsgSize) assert.Equal(t, "info", config.Logging.LogLevel) assert.Equal(t, 100, config.NotificationResponseBuffer) - assert.Equal(t,5, config.BigRedButtonTimeoutSec) + assert.Equal(t, 5, config.BigRedButtonTimeoutSec) } func TestParseConfigurationFileNotFoundFailure(t *testing.T) { configPath := "../resources/configuration.yaml" configPathTmp := "../resources/configuration.yaml_tmp" err := os.Rename(configPath, configPathTmp) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestParseConfigurationFileNotFoundFailure - failed to rename configuration file: %s\n", configPath) } defer func() { err = os.Rename(configPathTmp, configPath) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestParseConfigurationFileNotFoundFailure - failed to rename configuration file: %s\n", configPath) } }() - assert.Panics(t, func (){configuration.ParseConfiguration()}) + assert.Panics(t, func() { configuration.ParseConfiguration() }) } func TestRmrConfigNotFoundFailure(t *testing.T) { configPath := "../resources/configuration.yaml" configPathTmp := "../resources/configuration.yaml_tmp" err := os.Rename(configPath, configPathTmp) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) } defer func() { err = os.Rename(configPathTmp, configPath) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) } }() yamlMap := map[string]interface{}{ - "logging":map[string]interface{}{"logLevel":"info"}, - "http":map[string]interface{}{"port":3800}, + "logging": map[string]interface{}{"logLevel": "info"}, + "http": map[string]interface{}{"port": 3800}, } buf, err := yaml.Marshal(yamlMap) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to marshal configuration map\n") } err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) } - assert.PanicsWithValue(t, "#http_server.fillRmrConfig - failed to fill RMR configuration: The entry 'rmr' not found\n", func (){configuration.ParseConfiguration()}) + assert.PanicsWithValue(t, "#http_server.fillRmrConfig - failed to fill RMR configuration: The entry 'rmr' not found\n", func() { configuration.ParseConfiguration() }) } func TestLoggingConfigNotFoundFailure(t *testing.T) { configPath := "../resources/configuration.yaml" configPathTmp := "../resources/configuration.yaml_tmp" err := os.Rename(configPath, configPathTmp) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestLoggingConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) } defer func() { err = os.Rename(configPathTmp, configPath) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestLoggingConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) } }() yamlMap := map[string]interface{}{ - "rmr":map[string]interface{}{"port":3801, "maxMsgSize":4096}, - "http":map[string]interface{}{"port":3800}, + "rmr": map[string]interface{}{"port": 3801, "maxMsgSize": 4096}, + "http": map[string]interface{}{"port": 3800}, } buf, err := yaml.Marshal(yamlMap) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to marshal configuration map\n") } err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) } assert.PanicsWithValue(t, "#http_server.fillLoggingConfig - failed to fill logging configuration: The entry 'logging' not found\n", - func (){configuration.ParseConfiguration()}) + func() { configuration.ParseConfiguration() }) } func TestHttpConfigNotFoundFailure(t *testing.T) { configPath := "../resources/configuration.yaml" configPathTmp := "../resources/configuration.yaml_tmp" err := os.Rename(configPath, configPathTmp) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestHttpConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) } defer func() { err = os.Rename(configPathTmp, configPath) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestHttpConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) } }() yamlMap := map[string]interface{}{ - "rmr":map[string]interface{}{"port":3801, "maxMsgSize":4096}, - "logging":map[string]interface{}{"logLevel":"info"}, + "rmr": map[string]interface{}{"port": 3801, "maxMsgSize": 4096}, + "logging": map[string]interface{}{"logLevel": "info"}, } buf, err := yaml.Marshal(yamlMap) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestHttpConfigNotFoundFailure - failed to marshal configuration map\n") } err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) - if err != nil{ + if err != nil { t.Errorf("#http_server_test.TestHttpConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) } assert.PanicsWithValue(t, "#http_server.fillHttpConfig - failed to fill HTTP configuration: The entry 'http' not found\n", - func (){configuration.ParseConfiguration()}) + func() { configuration.ParseConfiguration() }) }