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).
27 "github.com/stretchr/testify/assert"
35 "rsm/providers/httpmsghandlerprovider"
37 "rsm/tests/testhelper"
41 func setupControllerTest(t *testing.T) (*Controller, *mocks.RnibReaderMock, *mocks.RmrMessengerMock) {
42 config := configuration.ParseConfiguration()
44 rmrMessengerMock := &mocks.RmrMessengerMock{}
45 readerMock := &mocks.RnibReaderMock{}
46 rnibDataService, rmrSender, log := testhelper.InitTestCase(t)
47 handlerProvider := httpmsghandlerprovider.NewRequestHandlerProvider(log, rmrSender, config, rnibDataService)
48 controller := NewController(log, handlerProvider)
49 return controller, readerMock, rmrMessengerMock
52 func TestHeaderValidationFailed(t *testing.T) {
53 controller, _, _ := setupControllerTest(t)
55 writer := httptest.NewRecorder()
56 header := &http.Header{}
57 controller.handleRequest(writer, header, "", nil, true)
58 var errorResponse = parseJsonRequest(t, writer.Body)
59 err := rsmerrors.NewHeaderValidationError()
61 assert.Equal(t, http.StatusUnsupportedMediaType, writer.Result().StatusCode)
62 assert.Equal(t, errorResponse.Code, err.Code)
63 assert.Equal(t, errorResponse.Message, err.Message)
66 /*func TestHandleInternalError(t *testing.T) {
67 controller, _, _ := setupControllerTest(t)
69 writer := httptest.NewRecorder()
70 err := rsmerrors.NewInternalError()
72 controller.handleErrorResponse(err, writer)
73 var errorResponse = parseJsonRequest(t, writer.Body)
75 assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode)
76 assert.Equal(t, errorResponse.Code, err.Code)
77 assert.Equal(t, errorResponse.Message, err.Message)
80 /*func TestValidateHeadersSuccess(t *testing.T) {
81 controller, _, _ := setupControllerTest(t)
83 header := http.Header{}
84 header.Set("Content-Type", "application/json")
85 result := controller.validateRequestHeader(&header)
90 /*func parseJsonRequest(t *testing.T, r io.Reader) models.ErrorResponse {
92 var errorResponse models.ErrorResponse
93 body, err := ioutil.ReadAll(r)
95 t.Errorf("Error cannot deserialize json request")
97 json.Unmarshal(body, &errorResponse)
102 func TestHandleErrorResponse(t *testing.T) {
103 controller, _, _ := setupControllerTest(t)
105 writer := httptest.NewRecorder()
106 controller.handleErrorResponse(rsmerrors.NewRnibDbError(), writer)
107 assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode)
109 writer = httptest.NewRecorder()
110 controller.handleErrorResponse(rsmerrors.NewHeaderValidationError(), writer)
111 assert.Equal(t, http.StatusUnsupportedMediaType, writer.Result().StatusCode)
113 writer = httptest.NewRecorder()
114 controller.handleErrorResponse(rsmerrors.NewWrongStateError("", ""), writer)
115 assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode)
117 writer = httptest.NewRecorder()
118 controller.handleErrorResponse(rsmerrors.NewRequestValidationError(), writer)
119 assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode)
121 writer = httptest.NewRecorder()
122 controller.handleErrorResponse(rsmerrors.NewRmrError(), writer)
123 assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode)
125 writer = httptest.NewRecorder()
126 controller.handleErrorResponse(rsmerrors.NewResourceNotFoundError(), writer)
127 assert.Equal(t, http.StatusNotFound, writer.Result().StatusCode)
129 writer = httptest.NewRecorder()
130 controller.handleErrorResponse(rsmerrors.NewInvalidJsonError(), writer)
131 assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode)
133 writer = httptest.NewRecorder()
134 controller.handleErrorResponse(fmt.Errorf("ErrorError"), writer)
135 assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode)