b039c8b56033f3bad1884b05b8b7b03ea79dc5f3
[ric-plt/e2mgr.git] / E2Manager / handlers / httpmsghandlers / delete_enb_request_handler_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 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 //  platform project (RICP).
19
20
21 package httpmsghandlers
22
23 import (
24         "e2mgr/configuration"
25         "e2mgr/mocks"
26         "e2mgr/models"
27         "e2mgr/services"
28         "errors"
29         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
30         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
31         "github.com/stretchr/testify/assert"
32         "testing"
33 )
34
35 func setupDeleteEnbRequestHandlerTest(t *testing.T) (*DeleteEnbRequestHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock) {
36         log := initLog(t)
37         config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
38         readerMock := &mocks.RnibReaderMock{}
39         writerMock := &mocks.RnibWriterMock{}
40         rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock)
41         handler := NewDeleteEnbRequestHandler(log, rnibDataService)
42         return handler, readerMock, writerMock
43 }
44
45 func TestHandleDeleteEnbSuccess(t *testing.T) {
46         handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t)
47
48         ranName := "test1"
49         var rnibError error
50         nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB}
51         readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError)
52         writerMock.On("RemoveEnb", nodebInfo).Return(nil)
53         result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName})
54         assert.Nil(t, err)
55         assert.NotNil(t, result)
56         assert.IsType(t, &models.NodebResponse{}, result)
57         readerMock.AssertExpectations(t)
58         writerMock.AssertExpectations(t)
59 }
60
61 func TestHandleDeleteEnbInternalGetNodebError(t *testing.T) {
62         handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t)
63
64         ranName := "test1"
65         rnibError := errors.New("for test")
66         var nodebInfo *entities.NodebInfo
67         readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError)
68         result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName})
69         assert.NotNil(t, err)
70         assert.Nil(t, result)
71         readerMock.AssertExpectations(t)
72         writerMock.AssertExpectations(t)
73 }
74
75 func TestHandleDeleteEnbInternalRemoveEnbError(t *testing.T) {
76         handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t)
77
78         ranName := "test1"
79         rnibError := errors.New("for test")
80         nodebInfo  := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB}
81         readerMock.On("GetNodeb", ranName).Return(nodebInfo, nil)
82         writerMock.On("RemoveEnb", nodebInfo).Return(rnibError)
83         result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName})
84         assert.NotNil(t, err)
85         assert.Nil(t, result)
86         readerMock.AssertExpectations(t)
87         writerMock.AssertExpectations(t)
88 }
89
90 func TestHandleDeleteEnbResourceNotFoundError(t *testing.T) {
91         handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t)
92
93         ranName := "test1"
94         rnibError := common.NewResourceNotFoundError("for test")
95         var nodebInfo *entities.NodebInfo
96         readerMock.On("GetNodeb", ranName).Return(nodebInfo, rnibError)
97         result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName})
98         assert.NotNil(t, err)
99         assert.Nil(t, result)
100         readerMock.AssertExpectations(t)
101         writerMock.AssertExpectations(t)
102 }
103
104 func TestHandleDeleteEnbNodeTypeNotEnbError(t *testing.T) {
105         handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t)
106
107         ranName := "test1"
108         nodebInfo  := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_GNB}
109         readerMock.On("GetNodeb", ranName).Return(nodebInfo, nil)
110         result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName})
111         assert.NotNil(t, err)
112         assert.Nil(t, result)
113         readerMock.AssertExpectations(t)
114         writerMock.AssertExpectations(t)
115 }