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.
18 package httpmsghandlers
29 "github.com/stretchr/testify/assert"
36 func TestNewSetupRequestHandler(t *testing.T) {
38 rnibWriterProvider := func() rNibWriter.RNibWriter {
39 return &mocks.RnibWriterMock{}
42 h := NewSetupRequestHandler(rnibWriterProvider)
46 func TestCreateMessageSuccess(t *testing.T) {
47 log, err := logger.InitLogger(logger.InfoLevel)
49 t.Errorf("#setup_request_handler_test.TestCreateMessageSuccess - failed to initialize logger, error: %s", err)
51 messageChannel := make(chan *models.E2RequestMessage)
52 assert.NotPanics(t, func() { createMsg(log, messageChannel) })
53 assert.NotEmpty(t, <-messageChannel)
56 func TestParseRicId(t *testing.T) {
57 var testCases = []struct {
65 ricId: "bbbccc-abcd02/18",
66 pLMNId: []byte{0xbb, 0xbc, 0xcc},
67 eNBId: []byte{0xab, 0xcd, 0x2}, /*00000010 -> 10000000*/
68 eNBIdBitqty: e2pdus.ShortMacro_eNB_ID,
71 ricId: "bbbccc-abcd0e/20",
72 pLMNId: []byte{0xbb, 0xbc, 0xcc},
73 eNBId: []byte{0xab, 0xcd, 0xe},
74 eNBIdBitqty: e2pdus.Macro_eNB_ID,
77 ricId: "bbbccc-abcd07/21",
78 pLMNId: []byte{0xbb, 0xbc, 0xcc},
79 eNBId: []byte{0xab, 0xcd, 0x7}, /*00000111 -> 00111000*/
80 eNBIdBitqty: e2pdus.LongMacro_eNB_ID,
83 ricId: "bbbccc-abcdef08/28",
84 pLMNId: []byte{0xbb, 0xbc, 0xcc},
85 eNBId: []byte{0xab, 0xcd, 0xef, 0x8},
86 eNBIdBitqty: e2pdus.Home_eNB_ID,
90 failure: fmt.Errorf("unable to extract the value of RIC_ID: EOF"),
95 failure: fmt.Errorf("unable to extract the value of RIC_ID: unexpected EOF"),
99 failure: fmt.Errorf("unable to extract the value of RIC_ID: EOF"),
103 failure: fmt.Errorf("%s", "unable to extract the value of RIC_ID: no hex data for %x string"),
107 failure: fmt.Errorf("%s", "unable to extract the value of RIC_ID: no hex data for %x string"),
110 ricId: "bbbcccdd-abcdef08/28", // pLMNId too long
111 failure: fmt.Errorf("unable to extract the value of RIC_ID: input does not match format"),
114 ricId: "bbbccc-abcdef0809/28", // eNBId too long
115 failure: fmt.Errorf("unable to extract the value of RIC_ID: input does not match format"),
119 ricId: "bbbc-abcdef08/28", // pLMNId too short
120 failure: fmt.Errorf("invalid value for RIC_ID, len(pLMNId:[187 188]) != 3"),
123 ricId: "bbbccc-abcd/28", // eNBId too short
124 failure: fmt.Errorf("invalid value for RIC_ID, len(eNBId:[171 205]) != 3 or 4"),
127 ricId: "bbbccc-abcdef08/239", // bit quantity too long - no error, will return 23 (which is invalid)
128 failure: fmt.Errorf("invalid value for RIC_ID, eNBIdBitqty: 23"),
132 for _, tc := range testCases {
133 t.Run(tc.ricId, func(t *testing.T) {
135 err := parseRicID(tc.ricId)
137 if tc.failure == nil {
138 t.Errorf("want: success, got: parse failed. Error: %v\n", err)
140 if strings.Compare(err.Error(), tc.failure.Error()) != 0 {
141 t.Errorf("want: %s, got: %s\n", err, tc.failure)
145 if bytes.Compare(tc.pLMNId, pLMNId) != 0 {
146 t.Errorf("want: pLMNId = %v, got: pLMNId = %v", tc.pLMNId, pLMNId)
149 if bytes.Compare(tc.eNBId, eNBId) != 0 {
150 t.Errorf("want: eNBId = %v, got: eNBId = %v", tc.eNBId, eNBId)
153 if tc.eNBIdBitqty != eNBIdBitqty {
154 t.Errorf("want: eNBIdBitqty = %d, got: eNBIdBitqty = %d", tc.eNBIdBitqty, eNBIdBitqty)
160 func createMsg(log *logger.Logger, messageChannel chan *models.E2RequestMessage) {
161 h := SetupRequestHandler{}
162 E2Sessions := make(sessions.E2Sessions)
163 var wg sync.WaitGroup
164 var rd models.RequestDetails
165 go h.CreateMessage(log, &rd, messageChannel, E2Sessions, time.Now(), wg)