[RICPLT-2048] X2 ENDC Setup request refactoring
[ric-plt/e2mgr.git] / E2Manager / providers / httpmsghandlerprovider / incoming_request_handler_provider_test.go
1 //
2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
4 //
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
8 //
9 //      http://www.apache.org/licenses/LICENSE-2.0
10 //
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.
16 //
17
18 package httpmsghandlerprovider
19
20 import (
21         "e2mgr/configuration"
22         "e2mgr/e2managererrors"
23         "e2mgr/handlers/httpmsghandlers"
24         "e2mgr/logger"
25         "e2mgr/managers"
26         "e2mgr/mocks"
27         "e2mgr/models"
28         "e2mgr/rNibWriter"
29         "e2mgr/rmrCgo"
30         "e2mgr/services"
31         "e2mgr/sessions"
32         "e2mgr/tests"
33         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
34         "github.com/stretchr/testify/assert"
35         "reflect"
36         "testing"
37 )
38
39 func getRmrService(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *services.RmrService {
40         rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock)
41         messageChannel := make(chan *models.NotificationResponse)
42         rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger)
43         return services.NewRmrService(services.NewRmrConfig(tests.Port, tests.MaxMsgSize, tests.Flags, log), rmrMessenger, make(sessions.E2Sessions), messageChannel)
44 }
45
46 func TestNewIncomingRequestHandlerProvider(t *testing.T) {
47         rmrMessengerMock := &mocks.RmrMessengerMock{}
48
49         log := initLog(t)
50         readerProvider := func() reader.RNibReader {
51                 return &mocks.RnibReaderMock{}
52         }
53         writerProvider := func() rNibWriter.RNibWriter {
54                 return &mocks.RnibWriterMock{}
55         }
56         ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
57         provider := NewIncomingRequestHandlerProvider(log, getRmrService(rmrMessengerMock, log), configuration.ParseConfiguration(), writerProvider, readerProvider,ranSetupManager)
58
59         assert.NotNil(t, provider)
60 }
61
62 func TestShutdownRequestHandler(t *testing.T) {
63         rmrMessengerMock := &mocks.RmrMessengerMock{}
64
65         log := initLog(t)
66         readerProvider := func() reader.RNibReader {
67                 return &mocks.RnibReaderMock{}
68         }
69         writerProvider := func() rNibWriter.RNibWriter {
70                 return &mocks.RnibWriterMock{}
71         }
72
73         ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
74         provider := NewIncomingRequestHandlerProvider(log, getRmrService(rmrMessengerMock, log), configuration.ParseConfiguration(), writerProvider, readerProvider,ranSetupManager)
75
76         handler, err := provider.GetHandler(ShutdownRequest)
77
78         assert.NotNil(t, provider)
79         assert.Nil(t, err)
80
81         _, ok := handler.(*httpmsghandlers.DeleteAllRequestHandler)
82
83         assert.True(t, ok)
84 }
85
86 func TestX2SetupRequestHandler(t *testing.T) {
87         rmrMessengerMock := &mocks.RmrMessengerMock{}
88
89         log := initLog(t)
90         readerProvider := func() reader.RNibReader {
91                 return &mocks.RnibReaderMock{}
92         }
93         writerProvider := func() rNibWriter.RNibWriter {
94                 return &mocks.RnibWriterMock{}
95         }
96
97         ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
98         provider := NewIncomingRequestHandlerProvider(log, getRmrService(rmrMessengerMock, log), configuration.ParseConfiguration(), writerProvider, readerProvider,ranSetupManager)
99
100         handler, err := provider.GetHandler(X2SetupRequest)
101
102         assert.NotNil(t, provider)
103         assert.Nil(t, err)
104
105         _, ok := handler.(*httpmsghandlers.SetupRequestHandler)
106
107         assert.True(t, ok)
108 }
109
110 func TestEndcSetupRequestHandler(t *testing.T) {
111         rmrMessengerMock := &mocks.RmrMessengerMock{}
112
113         log := initLog(t)
114         readerProvider := func() reader.RNibReader {
115                 return &mocks.RnibReaderMock{}
116         }
117         writerProvider := func() rNibWriter.RNibWriter {
118                 return &mocks.RnibWriterMock{}
119         }
120
121         ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
122         provider := NewIncomingRequestHandlerProvider(log, getRmrService(rmrMessengerMock, log), configuration.ParseConfiguration(), writerProvider, readerProvider,ranSetupManager)
123
124         handler, err := provider.GetHandler(EndcSetupRequest)
125
126         assert.NotNil(t, provider)
127         assert.Nil(t, err)
128
129         _, ok := handler.(*httpmsghandlers.SetupRequestHandler)
130
131         assert.True(t, ok)
132 }
133
134 func TestGetShutdownHandlerFailure(t *testing.T) {
135         rmrMessengerMock := &mocks.RmrMessengerMock{}
136         log := initLog(t)
137         readerProvider := func() reader.RNibReader {
138                 return &mocks.RnibReaderMock{}
139         }
140         writerProvider := func() rNibWriter.RNibWriter {
141                 return &mocks.RnibWriterMock{}
142         }
143
144         ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
145         provider := NewIncomingRequestHandlerProvider(log, getRmrService(rmrMessengerMock, log), configuration.ParseConfiguration(), writerProvider, readerProvider, ranSetupManager)
146
147         _, actual := provider.GetHandler("test")
148         expected := &e2managererrors.InternalError{}
149
150         assert.NotNil(t, actual)
151         if reflect.TypeOf(actual) != reflect.TypeOf(expected) {
152                 t.Errorf("Error actual = %v, and Expected = %v.", actual, expected)
153         }
154 }
155
156 func initLog(t *testing.T) *logger.Logger {
157         log, err := logger.InitLogger(logger.InfoLevel)
158         if err != nil {
159                 t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err)
160         }
161         return log
162 }