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.
17 // This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 // platform project (RICP).
26 "e2mgr/e2managererrors"
31 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
32 "github.com/pkg/errors"
33 "github.com/stretchr/testify/assert"
34 "github.com/stretchr/testify/mock"
40 const RanName = "test"
42 func initE2TAssociationManagerTest(t *testing.T) (*E2TAssociationManager, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.HttpClientMock) {
44 config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
46 readerMock := &mocks.RnibReaderMock{}
47 writerMock := &mocks.RnibWriterMock{}
48 rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock)
50 e2tInstancesManager := NewE2TInstancesManager(rnibDataService, log)
51 httpClientMock := &mocks.HttpClientMock{}
52 rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock)
53 manager := NewE2TAssociationManager(log, rnibDataService, e2tInstancesManager, rmClient)
55 return manager, readerMock, writerMock, httpClientMock
58 func mockHttpClient(httpClientMock *mocks.HttpClientMock, apiSuffix string, isSuccessful bool) {
59 data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
60 marshaled, _ := json.Marshal(data)
61 body := bytes.NewBuffer(marshaled)
62 respBody := ioutil.NopCloser(bytes.NewBufferString(""))
63 var respStatusCode int
65 respStatusCode = http.StatusCreated
67 respStatusCode = http.StatusBadRequest
69 httpClientMock.On("Post", apiSuffix, "application/json", body).Return(&http.Response{StatusCode: respStatusCode, Body: respBody}, nil)
72 func TestAssociateRanSuccess(t *testing.T) {
73 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
74 mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true)
75 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1}
77 updatedNb.ConnectionAttempts = 0
78 updatedNb.AssociatedE2TInstanceAddress = E2TAddress
79 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
80 e2tInstance := &entities.E2TInstance{Address: E2TAddress}
81 readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
82 updatedE2tInstance := *e2tInstance
83 updatedE2tInstance.AssociatedRanList = append(updatedE2tInstance.AssociatedRanList, RanName)
84 writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil)
86 err := manager.AssociateRan(E2TAddress, nb)
89 readerMock.AssertExpectations(t)
90 writerMock.AssertExpectations(t)
91 httpClientMock.AssertExpectations(t)
94 func TestAssociateRanRoutingManagerError(t *testing.T) {
95 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
96 mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, false)
98 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1}
99 err := manager.AssociateRan(E2TAddress, nb)
101 assert.NotNil(t, err)
102 assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
103 readerMock.AssertExpectations(t)
104 writerMock.AssertExpectations(t)
105 httpClientMock.AssertExpectations(t)
108 func TestAssociateRanUpdateNodebError(t *testing.T) {
109 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
110 mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true)
111 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1}
113 updatedNb.ConnectionAttempts = 0
114 updatedNb.AssociatedE2TInstanceAddress = E2TAddress
115 writerMock.On("UpdateNodebInfo", &updatedNb).Return(e2managererrors.NewRnibDbError())
117 err := manager.AssociateRan(E2TAddress, nb)
119 assert.NotNil(t, err)
120 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
121 readerMock.AssertExpectations(t)
122 writerMock.AssertExpectations(t)
123 httpClientMock.AssertExpectations(t)
126 func TestAssociateRanGetE2tInstanceError(t *testing.T) {
127 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
128 mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true)
129 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1}
131 updatedNb.ConnectionAttempts = 0
132 updatedNb.AssociatedE2TInstanceAddress = E2TAddress
133 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
134 var e2tInstance *entities.E2TInstance
135 readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, errors.New("test"))
137 err := manager.AssociateRan(E2TAddress, nb)
139 assert.NotNil(t, err)
140 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
141 readerMock.AssertExpectations(t)
142 writerMock.AssertExpectations(t)
143 httpClientMock.AssertExpectations(t)
146 func TestAssociateRanSaveE2tInstanceError(t *testing.T) {
147 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
148 mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true)
149 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionAttempts: 1}
151 updatedNb.ConnectionAttempts = 0
152 updatedNb.AssociatedE2TInstanceAddress = E2TAddress
153 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
154 e2tInstance := &entities.E2TInstance{Address: E2TAddress}
155 readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
156 updatedE2tInstance := *e2tInstance
157 updatedE2tInstance.AssociatedRanList = append(updatedE2tInstance.AssociatedRanList, RanName)
158 writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(errors.New("test"))
160 err := manager.AssociateRan(E2TAddress, nb)
162 assert.NotNil(t, err)
163 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
164 readerMock.AssertExpectations(t)
165 writerMock.AssertExpectations(t)
166 httpClientMock.AssertExpectations(t)
169 func TestDissociateRanSuccess(t *testing.T) {
170 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
171 mockHttpClient(httpClientMock, clients.DissociateRanE2TInstanceApiSuffix, true)
172 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1}
173 readerMock.On("GetNodeb", RanName).Return(nb, nil)
175 updatedNb.AssociatedE2TInstanceAddress = ""
176 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
177 e2tInstance := &entities.E2TInstance{Address: E2TAddress}
178 e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName)
179 readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
180 updatedE2tInstance := *e2tInstance
181 updatedE2tInstance.AssociatedRanList = []string{}
182 writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil)
184 err := manager.DissociateRan(E2TAddress, RanName)
187 readerMock.AssertExpectations(t)
188 writerMock.AssertExpectations(t)
189 httpClientMock.AssertExpectations(t)
192 func TestDissociateRanGetNodebError(t *testing.T) {
193 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
194 var nb *entities.NodebInfo
195 readerMock.On("GetNodeb", RanName).Return(nb, e2managererrors.NewRnibDbError())
197 err := manager.DissociateRan(E2TAddress, RanName)
199 assert.NotNil(t, err)
200 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
201 readerMock.AssertExpectations(t)
202 writerMock.AssertExpectations(t)
203 httpClientMock.AssertExpectations(t)
206 func TestDissociateRanUpdateNodebError(t *testing.T) {
207 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
208 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1}
209 readerMock.On("GetNodeb", RanName).Return(nb, nil)
211 updatedNb.AssociatedE2TInstanceAddress = ""
212 writerMock.On("UpdateNodebInfo", &updatedNb).Return(e2managererrors.NewRnibDbError())
214 err := manager.DissociateRan(E2TAddress, RanName)
216 assert.NotNil(t, err)
217 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
218 readerMock.AssertExpectations(t)
219 writerMock.AssertExpectations(t)
220 httpClientMock.AssertExpectations(t)
223 func TestDissociateRanGetE2tInstanceError(t *testing.T) {
224 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
225 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1}
226 readerMock.On("GetNodeb", RanName).Return(nb, nil)
228 updatedNb.AssociatedE2TInstanceAddress = ""
229 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
230 var e2tInstance *entities.E2TInstance
231 readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, errors.New("test"))
233 err := manager.DissociateRan(E2TAddress, RanName)
235 assert.NotNil(t, err)
236 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
237 readerMock.AssertExpectations(t)
238 writerMock.AssertExpectations(t)
239 httpClientMock.AssertExpectations(t)
242 func TestDissociateRanSaveE2tInstanceError(t *testing.T) {
243 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
244 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1}
245 readerMock.On("GetNodeb", RanName).Return(nb, nil)
247 updatedNb.AssociatedE2TInstanceAddress = ""
248 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
249 e2tInstance := &entities.E2TInstance{Address: E2TAddress}
250 e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName)
251 readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
252 updatedE2tInstance := *e2tInstance
253 updatedE2tInstance.AssociatedRanList = []string{}
254 writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(errors.New("test"))
256 err := manager.DissociateRan(E2TAddress, RanName)
258 assert.NotNil(t, err)
259 assert.IsType(t, &e2managererrors.RnibDbError{}, err)
260 readerMock.AssertExpectations(t)
261 writerMock.AssertExpectations(t)
262 httpClientMock.AssertExpectations(t)
265 func TestDissociateRanRoutingManagerError(t *testing.T) {
266 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
267 mockHttpClient(httpClientMock, clients.DissociateRanE2TInstanceApiSuffix, false)
268 nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionAttempts: 1}
269 readerMock.On("GetNodeb", RanName).Return(nb, nil)
271 updatedNb.AssociatedE2TInstanceAddress = ""
272 writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
273 e2tInstance := &entities.E2TInstance{Address: E2TAddress}
274 e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName)
275 readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil)
276 updatedE2tInstance := *e2tInstance
277 updatedE2tInstance.AssociatedRanList = []string{}
278 writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil)
280 err := manager.DissociateRan(E2TAddress, RanName)
283 readerMock.AssertExpectations(t)
284 writerMock.AssertExpectations(t)
285 httpClientMock.AssertExpectations(t)
288 func TestRemoveE2tInstanceSuccess(t *testing.T) {
289 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
291 e2tDataList := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress2, RanName), models.NewRoutingManagerE2TData(E2TAddress3, "test1")}
292 data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, nil, e2tDataList)
293 mockHttpClientDelete(httpClientMock, data, true)
295 writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil)
296 e2tAddresses := []string{E2TAddress, E2TAddress2, E2TAddress3}
297 readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
298 e2tAddressesNew := []string{E2TAddress2, E2TAddress3}
299 writerMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil)
301 e2tInstance1 := &entities.E2TInstance{Address: E2TAddress}
302 e2tInstance2 := &entities.E2TInstance{Address: E2TAddress2}
303 readerMock.On("GetE2TInstance", E2TAddress2).Return(e2tInstance2, nil)
304 e2tInstance3 := &entities.E2TInstance{Address: E2TAddress3}
305 readerMock.On("GetE2TInstance", E2TAddress3).Return(e2tInstance3, nil)
307 e2tInstance2updated := *e2tInstance2
308 e2tInstance2updated.AssociatedRanList = []string{RanName}
309 writerMock.On("SaveE2TInstance", &e2tInstance2updated).Return(nil)
310 e2tInstance3updated := *e2tInstance3
311 e2tInstance3updated.AssociatedRanList = []string{"test1"}
312 writerMock.On("SaveE2TInstance", &e2tInstance3updated).Return(nil)
314 ranNamesToBeAssociated := make(map[string][]string)
315 ranNamesToBeAssociated[E2TAddress2] = []string{RanName}
316 ranNamesToBeAssociated[E2TAddress3] = []string{"test1"}
317 err := manager.RemoveE2tInstance(e2tInstance1, nil, ranNamesToBeAssociated)
320 readerMock.AssertExpectations(t)
321 writerMock.AssertExpectations(t)
322 httpClientMock.AssertExpectations(t)
325 func TestRemoveE2tInstanceSuccessWithOrphans(t *testing.T) {
326 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
328 ranNamesToBeDissociated := []string{RanName, "test1"}
329 data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, ranNamesToBeDissociated, nil)
330 mockHttpClientDelete(httpClientMock, data, true)
332 writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil)
333 e2tAddresses := []string{E2TAddress}
334 readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
335 e2tAddressesNew := []string{}
336 writerMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil)
338 e2tInstance1 := &entities.E2TInstance{Address: E2TAddress}
339 err := manager.RemoveE2tInstance(e2tInstance1, ranNamesToBeDissociated, nil)
342 readerMock.AssertExpectations(t)
343 writerMock.AssertExpectations(t)
344 httpClientMock.AssertExpectations(t)
347 func TestRemoveE2tInstanceFailureRoutingManager(t *testing.T) {
348 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
350 e2tDataList := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
351 data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, e2tDataList)
352 mockHttpClientDelete(httpClientMock, data, false)
354 e2tInstance1 := entities.NewE2TInstance(E2TAddress)
355 e2tInstance1.State = entities.Active
356 readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil)
357 e2tInstance2 := *e2tInstance1
358 e2tInstance2.State = entities.RoutingManagerFailure
359 writerMock.On("SaveE2TInstance", &e2tInstance2).Return(nil)
360 ranNamesToBeAssociated := make(map[string][]string)
361 ranNamesToBeAssociated[E2TAddress] = []string{"test"}
362 err := manager.RemoveE2tInstance(e2tInstance1, []string{"test1"}, ranNamesToBeAssociated)
364 assert.NotNil(t, err)
365 readerMock.AssertExpectations(t)
366 writerMock.AssertExpectations(t)
367 httpClientMock.AssertExpectations(t)
370 func TestRemoveE2tInstanceFailureRoutingManagerAndGetInstance(t *testing.T) {
371 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
373 e2tDataList := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
374 data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, e2tDataList)
375 mockHttpClientDelete(httpClientMock, data, false)
377 e2tInstance1 := &entities.E2TInstance{Address: E2TAddress}
378 readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, e2managererrors.NewRnibDbError())
379 ranNamesToBeAssociated := make(map[string][]string)
380 ranNamesToBeAssociated[E2TAddress] = []string{"test"}
381 err := manager.RemoveE2tInstance(e2tInstance1, []string{"test1"}, ranNamesToBeAssociated)
383 assert.NotNil(t, err)
384 readerMock.AssertExpectations(t)
385 writerMock.AssertExpectations(t)
386 httpClientMock.AssertExpectations(t)
389 func TestRemoveE2tInstanceFailureRoutingManagerAndSetInstanceState(t *testing.T) {
390 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
392 e2tDataList := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
393 data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, e2tDataList)
394 mockHttpClientDelete(httpClientMock, data, false)
396 e2tInstance1 := entities.NewE2TInstance(E2TAddress)
397 e2tInstance1.State = entities.Active
398 readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil)
399 e2tInstance2 := *e2tInstance1
400 e2tInstance2.State = entities.RoutingManagerFailure
401 writerMock.On("SaveE2TInstance", &e2tInstance2).Return(e2managererrors.NewRnibDbError())
402 ranNamesToBeAssociated := make(map[string][]string)
403 ranNamesToBeAssociated[E2TAddress] = []string{"test"}
404 err := manager.RemoveE2tInstance(e2tInstance1, []string{"test1"}, ranNamesToBeAssociated)
406 assert.NotNil(t, err)
407 readerMock.AssertExpectations(t)
408 writerMock.AssertExpectations(t)
409 httpClientMock.AssertExpectations(t)
412 func TestRemoveE2tInstanceFailureInE2TInstanceManager(t *testing.T) {
414 e2tDataList := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
415 data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, e2tDataList)
416 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
417 mockHttpClientDelete(httpClientMock, data, true)
419 writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil)
420 var e2tAddresses []string
421 readerMock.On("GetE2TAddresses").Return(e2tAddresses, e2managererrors.NewRnibDbError())
423 ranNamesToBeAssociated := make(map[string][]string)
424 ranNamesToBeAssociated[E2TAddress] = []string{"test"}
425 e2tInstance1 := &entities.E2TInstance{Address: E2TAddress}
426 err := manager.RemoveE2tInstance(e2tInstance1, []string{"test1"}, ranNamesToBeAssociated)
428 assert.NotNil(t, err)
429 readerMock.AssertExpectations(t)
430 writerMock.AssertExpectations(t)
431 httpClientMock.AssertExpectations(t)
434 func TestRemoveE2tInstanceFailureInE2tInstanceAddRansToInstance(t *testing.T) {
435 manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t)
437 e2tDataList := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress2, RanName), models.NewRoutingManagerE2TData(E2TAddress3, "test1")}
438 data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, nil, e2tDataList)
439 mockHttpClientDelete(httpClientMock, data, true)
441 writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil)
442 e2tAddresses := []string{E2TAddress, E2TAddress2, E2TAddress3}
443 readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil)
444 e2tAddressesNew := []string{E2TAddress2, E2TAddress3}
445 writerMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil)
447 var e2tInstance2 *entities.E2TInstance
448 readerMock.On("GetE2TInstance", mock.Anything).Return(e2tInstance2, e2managererrors.NewRnibDbError())
450 ranNamesToBeAssociated := make(map[string][]string)
451 ranNamesToBeAssociated[E2TAddress2] = []string{RanName}
452 ranNamesToBeAssociated[E2TAddress3] = []string{"test1"}
454 e2tInstance1 := &entities.E2TInstance{Address: E2TAddress}
455 err := manager.RemoveE2tInstance(e2tInstance1, nil, ranNamesToBeAssociated)
457 assert.NotNil(t, err)
458 readerMock.AssertExpectations(t)
459 writerMock.AssertExpectations(t)
460 httpClientMock.AssertExpectations(t)
463 func mockHttpClientDelete(httpClientMock *mocks.HttpClientMock, data *models.RoutingManagerDeleteRequestModel, isSuccessful bool) {
465 marshaled, _ := json.Marshal(data)
466 body := bytes.NewBuffer(marshaled)
467 respBody := ioutil.NopCloser(bytes.NewBufferString(""))
468 var respStatusCode int
470 respStatusCode = http.StatusCreated
472 respStatusCode = http.StatusBadRequest
474 httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: respStatusCode, Body: respBody}, nil)