2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
28 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
29 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
30 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
31 "github.com/gorilla/mux"
32 "github.com/pkg/errors"
33 "github.com/stretchr/testify/assert"
40 func TestNewRequestController(t *testing.T) {
41 rnibReaderProvider := func() reader.RNibReader {
42 return &mocks.RnibReaderMock{}
44 rnibWriterProvider := func() rNibWriter.RNibWriter {
45 return &mocks.RnibWriterMock{}
48 assert.NotNil(t, NewNodebController(&logger.Logger{}, &services.RmrService{}, rnibReaderProvider, rnibWriterProvider))
51 func TestHandleHealthCheckRequest(t *testing.T) {
52 rc := NewNodebController(nil, nil, nil, nil)
53 writer := httptest.NewRecorder()
54 rc.HandleHealthCheckRequest(writer, nil)
55 assert.Equal(t, writer.Result().StatusCode, http.StatusOK)
58 func getRmrService(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *services.RmrService {
59 rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock)
60 messageChannel := make(chan *models.NotificationResponse)
61 rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger)
62 return services.NewRmrService(services.NewRmrConfig(tests.Port, tests.MaxMsgSize, tests.Flags, log), rmrMessenger, messageChannel)
65 func executeGetNodeb(logger *logger.Logger, writer *httptest.ResponseRecorder, rnibReaderProvider func() reader.RNibReader) {
66 req, _ := http.NewRequest("GET", "/nodeb", nil)
67 req = mux.SetURLVars(req, map[string]string{"ranName": "testNode"})
69 NewNodebController(logger, nil, rnibReaderProvider, nil).GetNodeb(writer, req)
72 func TestNodebController_GetNodeb_Success(t *testing.T) {
73 log, err := logger.InitLogger(logger.InfoLevel)
76 t.Errorf("#nodeb_controller_test.TestNodebController_GetNodeb_Success - failed to initialize logger, error: %s", err)
79 writer := httptest.NewRecorder()
81 rnibReaderMock := mocks.RnibReaderMock{}
84 rnibReaderMock.On("GetNodeb", "testNode").Return(&entities.NodebInfo{}, rnibError)
86 rnibReaderProvider := func() reader.RNibReader {
87 return &rnibReaderMock
90 executeGetNodeb(log, writer, rnibReaderProvider)
92 assert.Equal(t, writer.Result().StatusCode, http.StatusOK)
95 func TestNodebController_GetNodeb_NotFound(t *testing.T) {
96 log, err := logger.InitLogger(logger.InfoLevel)
99 t.Errorf("#nodeb_controller_test.TestNodebController_GetNodeb_NotFound - failed to initialize logger, error: %s", err)
102 writer := httptest.NewRecorder()
104 rnibReaderMock := mocks.RnibReaderMock{}
105 rnibError := common.NewResourceNotFoundErrorf("#reader.GetNodeb - responding node %s not found", "testNode")
106 var nodebInfo *entities.NodebInfo
107 rnibReaderMock.On("GetNodeb", "testNode").Return(nodebInfo, rnibError)
109 rnibReaderProvider := func() reader.RNibReader {
110 return &rnibReaderMock
113 executeGetNodeb(log, writer, rnibReaderProvider)
114 assert.Equal(t, writer.Result().StatusCode, http.StatusNotFound)
117 func TestNodebController_GetNodeb_InternalError(t *testing.T) {
118 log, err := logger.InitLogger(logger.InfoLevel)
121 t.Errorf("#nodeb_controller_test.TestNodebController_GetNodeb_InternalError - failed to initialize logger, error: %s", err)
124 writer := httptest.NewRecorder()
126 rnibReaderMock := mocks.RnibReaderMock{}
128 rnibError := common.NewInternalError(errors.New("#reader.GetNodeb - Internal Error"))
129 var nodebInfo *entities.NodebInfo
130 rnibReaderMock.On("GetNodeb", "testNode").Return(nodebInfo, rnibError)
132 rnibReaderProvider := func() reader.RNibReader {
133 return &rnibReaderMock
136 executeGetNodeb(log, writer, rnibReaderProvider)
137 assert.Equal(t, writer.Result().StatusCode, http.StatusInternalServerError)
140 func executeGetNodebIdList(logger *logger.Logger, writer *httptest.ResponseRecorder, rnibReaderProvider func() reader.RNibReader) {
141 req, _ := http.NewRequest("GET", "/nodeb-ids", nil)
142 NewNodebController(logger, nil, rnibReaderProvider, nil).GetNodebIdList(writer, req)
145 func TestNodebController_GetNodebIdList_Success(t *testing.T) {
146 logger, err := logger.InitLogger(logger.InfoLevel)
149 t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_Success - failed to initialize logger, error: %s", err)
152 writer := httptest.NewRecorder()
154 rnibReaderMock := mocks.RnibReaderMock{}
157 nbList := []*entities.NbIdentity{
158 {InventoryName: "test1", GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}},
159 {InventoryName: "test2", GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId2", NbId: "nbId2"}},
160 {InventoryName: "test3", GlobalNbId: &entities.GlobalNbId{PlmnId: "", NbId: ""}},
162 rnibReaderMock.On("GetListNodebIds").Return(nbList, rnibError)
164 rnibReaderProvider := func() reader.RNibReader {
165 return &rnibReaderMock
168 executeGetNodebIdList(logger, writer, rnibReaderProvider)
169 assert.Equal(t, writer.Result().StatusCode, http.StatusOK)
170 bodyBytes, err := ioutil.ReadAll(writer.Body)
171 assert.Equal(t, "[{\"inventoryName\":\"test1\",\"globalNbId\":{\"plmnId\":\"plmnId1\",\"nbId\":\"nbId1\"}},{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}},{\"inventoryName\":\"test3\",\"globalNbId\":{}}]", string(bodyBytes))
174 func TestNodebController_GetNodebIdList_EmptyList(t *testing.T) {
175 log, err := logger.InitLogger(logger.InfoLevel)
178 t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_EmptyList - failed to initialize logger, error: %s", err)
181 writer := httptest.NewRecorder()
183 rnibReaderMock := mocks.RnibReaderMock{}
186 nbList := []*entities.NbIdentity{}
187 rnibReaderMock.On("GetListNodebIds").Return(nbList, rnibError)
189 rnibReaderProvider := func() reader.RNibReader {
190 return &rnibReaderMock
193 executeGetNodebIdList(log, writer, rnibReaderProvider)
195 assert.Equal(t, writer.Result().StatusCode, http.StatusOK)
196 bodyBytes, err := ioutil.ReadAll(writer.Body)
197 assert.Equal(t, "[]", string(bodyBytes))
200 func TestNodebController_GetNodebIdList_InternalError(t *testing.T) {
201 logger, err := logger.InitLogger(logger.InfoLevel)
204 t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_InternalError - failed to initialize logger, error: %s", err)
207 writer := httptest.NewRecorder()
209 rnibReaderMock := mocks.RnibReaderMock{}
211 rnibError := common.NewInternalError(errors.New("#reader.GetEnbIdList - Internal Error"))
212 var nbList []*entities.NbIdentity
213 rnibReaderMock.On("GetListNodebIds").Return(nbList, rnibError)
215 rnibReaderProvider := func() reader.RNibReader {
216 return &rnibReaderMock
219 executeGetNodebIdList(logger, writer, rnibReaderProvider)
220 assert.Equal(t, writer.Result().StatusCode, http.StatusInternalServerError)