1 package httpmsghandlers
4 "e2mgr/e2managererrors"
10 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
11 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
12 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
13 "github.com/stretchr/testify/assert"
14 "github.com/stretchr/testify/mock"
18 func TestHandleSuccessfulDefaultCause(t *testing.T) {
23 readerMock := &mocks.RnibReaderMock{}
24 readerProvider := func() reader.RNibReader {
27 writerMock := &mocks.RnibWriterMock{}
28 writerProvider := func() rNibWriter.RNibWriter {
32 payload := []byte{0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x64}
33 xaction := []byte(ranName)
34 msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xaction)
35 rmrMessengerMock := &mocks.RmrMessengerMock{}
36 rmrMessengerMock.On("SendMsg", msg, mock.Anything).Return(msg, nil)
38 rmrService := getRmrService(rmrMessengerMock, log)
39 handler := NewX2ResetRequestHandler(log, rmrService, writerProvider, readerProvider)
41 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED}
42 readerMock.On("GetNodeb", ranName).Return(nodeb, nil)
44 actual := handler.Handle(models.ResetRequest{RanName: ranName})
49 func TestHandleSuccessfulRequestedCause(t *testing.T) {
54 readerMock := &mocks.RnibReaderMock{}
55 readerProvider := func() reader.RNibReader {
58 writerMock := &mocks.RnibWriterMock{}
59 writerProvider := func() rNibWriter.RNibWriter {
63 payload := []byte{0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x40}
64 xaction := []byte(ranName)
65 msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xaction)
66 rmrMessengerMock := &mocks.RmrMessengerMock{}
67 rmrMessengerMock.On("SendMsg", msg, mock.Anything).Return(msg, nil)
69 rmrService := getRmrService(rmrMessengerMock, log)
70 handler := NewX2ResetRequestHandler(log, rmrService, writerProvider, readerProvider)
72 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED}
73 readerMock.On("GetNodeb", ranName).Return(nodeb, nil)
75 actual := handler.Handle(models.ResetRequest{RanName: ranName, Cause: "protocol:transfer-syntax-error"})
80 func TestHandleFailureUnknownCause(t *testing.T) {
85 readerMock := &mocks.RnibReaderMock{}
86 readerProvider := func() reader.RNibReader {
89 writerMock := &mocks.RnibWriterMock{}
90 writerProvider := func() rNibWriter.RNibWriter {
94 rmrMessengerMock := &mocks.RmrMessengerMock{}
96 rmrService := getRmrService(rmrMessengerMock, log)
97 handler := NewX2ResetRequestHandler(log, rmrService, writerProvider, readerProvider)
99 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED}
100 readerMock.On("GetNodeb", ranName).Return(nodeb, nil)
102 actual := handler.Handle(models.ResetRequest{RanName: ranName, Cause: "XXX"})
104 assert.IsType(t, e2managererrors.NewRequestValidationError(), actual)
108 func TestHandleFailureWrongState(t *testing.T) {
113 readerMock := &mocks.RnibReaderMock{}
114 readerProvider := func() reader.RNibReader {
117 writerMock := &mocks.RnibWriterMock{}
118 writerProvider := func() rNibWriter.RNibWriter {
122 rmrMessengerMock := &mocks.RmrMessengerMock{}
124 rmrService := getRmrService(rmrMessengerMock, log)
125 handler := NewX2ResetRequestHandler(log, rmrService, writerProvider, readerProvider)
127 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED}
128 readerMock.On("GetNodeb", ranName).Return(nodeb, nil)
130 actual := handler.Handle(models.ResetRequest{RanName: ranName})
132 assert.IsType(t, e2managererrors.NewWrongStateError(X2_RESET_ACTIVITY_NAME, entities.ConnectionStatus_name[int32(nodeb.ConnectionStatus)]), actual)
135 func TestHandleFailureRanNotFound(t *testing.T) {
140 readerMock := &mocks.RnibReaderMock{}
141 readerProvider := func() reader.RNibReader {
144 writerMock := &mocks.RnibWriterMock{}
145 writerProvider := func() rNibWriter.RNibWriter {
149 rmrMessengerMock := &mocks.RmrMessengerMock{}
151 rmrService := getRmrService(rmrMessengerMock, log)
152 handler := NewX2ResetRequestHandler(log, rmrService, writerProvider, readerProvider)
154 readerMock.On("GetNodeb", ranName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("nodeb not found"))
156 actual := handler.Handle(models.ResetRequest{RanName: ranName})
158 assert.IsType(t, e2managererrors.NewResourceNotFoundError(), actual)
161 func TestHandleFailureRnibError(t *testing.T) {
166 readerMock := &mocks.RnibReaderMock{}
167 readerProvider := func() reader.RNibReader {
170 writerMock := &mocks.RnibWriterMock{}
171 writerProvider := func() rNibWriter.RNibWriter {
175 rmrMessengerMock := &mocks.RmrMessengerMock{}
177 rmrService := getRmrService(rmrMessengerMock, log)
178 handler := NewX2ResetRequestHandler(log, rmrService, writerProvider, readerProvider)
180 readerMock.On("GetNodeb", ranName).Return(&entities.NodebInfo{}, common.NewInternalError(fmt.Errorf("internal error")))
182 actual := handler.Handle(models.ResetRequest{RanName: ranName})
184 assert.IsType(t, e2managererrors.NewRnibDbError(), actual)
187 func TestHandleFailureRmrError(t *testing.T) {
192 readerMock := &mocks.RnibReaderMock{}
193 readerProvider := func() reader.RNibReader {
196 writerMock := &mocks.RnibWriterMock{}
197 writerProvider := func() rNibWriter.RNibWriter {
201 payload := []byte{0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x64}
202 xaction := []byte(ranName)
203 msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xaction)
204 rmrMessengerMock := &mocks.RmrMessengerMock{}
205 rmrMessengerMock.On("SendMsg", msg, mock.Anything).Return(&rmrCgo.MBuf{}, fmt.Errorf("rmr error"))
207 rmrService := getRmrService(rmrMessengerMock, log)
208 handler := NewX2ResetRequestHandler(log, rmrService, writerProvider, readerProvider)
210 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED}
211 readerMock.On("GetNodeb", ranName).Return(nodeb, nil)
213 actual := handler.Handle(models.ResetRequest{RanName: ranName})
215 assert.IsType(t, e2managererrors.NewRmrError(), actual)