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.
24 "github.com/stretchr/testify/assert"
32 "rsm/providers/httpmsghandlerprovider"
34 "rsm/tests/testhelper"
38 func setupControllerTest(t *testing.T) (*Controller, *mocks.RnibReaderMock, *mocks.RmrMessengerMock) {
39 config := configuration.ParseConfiguration()
41 rmrMessengerMock := &mocks.RmrMessengerMock{}
42 readerMock := &mocks.RnibReaderMock{}
43 rnibDataService, rmrSender, log := testhelper.InitTestCase(t)
44 handlerProvider := httpmsghandlerprovider.NewRequestHandlerProvider(log, rmrSender, config, rnibDataService)
45 controller := NewController(log, handlerProvider)
46 return controller, readerMock, rmrMessengerMock
49 func TestHeaderValidationFailed(t *testing.T) {
50 controller, _, _ := setupControllerTest(t)
52 writer := httptest.NewRecorder()
53 header := &http.Header{}
54 controller.handleRequest(writer, header, "", nil, true)
55 var errorResponse = parseJsonRequest(t, writer.Body)
56 err := rsmerrors.NewHeaderValidationError()
58 assert.Equal(t, http.StatusUnsupportedMediaType, writer.Result().StatusCode)
59 assert.Equal(t, errorResponse.Code, err.Code)
60 assert.Equal(t, errorResponse.Message, err.Message)
63 /*func TestHandleInternalError(t *testing.T) {
64 controller, _, _ := setupControllerTest(t)
66 writer := httptest.NewRecorder()
67 err := rsmerrors.NewInternalError()
69 controller.handleErrorResponse(err, writer)
70 var errorResponse = parseJsonRequest(t, writer.Body)
72 assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode)
73 assert.Equal(t, errorResponse.Code, err.Code)
74 assert.Equal(t, errorResponse.Message, err.Message)
77 /*func TestValidateHeadersSuccess(t *testing.T) {
78 controller, _, _ := setupControllerTest(t)
80 header := http.Header{}
81 header.Set("Content-Type", "application/json")
82 result := controller.validateRequestHeader(&header)
87 /*func parseJsonRequest(t *testing.T, r io.Reader) models.ErrorResponse {
89 var errorResponse models.ErrorResponse
90 body, err := ioutil.ReadAll(r)
92 t.Errorf("Error cannot deserialize json request")
94 json.Unmarshal(body, &errorResponse)
99 func TestHandleErrorResponse(t *testing.T) {
100 controller, _, _ := setupControllerTest(t)
102 writer := httptest.NewRecorder()
103 controller.handleErrorResponse(rsmerrors.NewRnibDbError(), writer)
104 assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode)
106 writer = httptest.NewRecorder()
107 controller.handleErrorResponse(rsmerrors.NewHeaderValidationError(), writer)
108 assert.Equal(t, http.StatusUnsupportedMediaType, writer.Result().StatusCode)
110 writer = httptest.NewRecorder()
111 controller.handleErrorResponse(rsmerrors.NewWrongStateError("", ""), writer)
112 assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode)
114 writer = httptest.NewRecorder()
115 controller.handleErrorResponse(rsmerrors.NewRequestValidationError(), writer)
116 assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode)
118 writer = httptest.NewRecorder()
119 controller.handleErrorResponse(rsmerrors.NewRmrError(), writer)
120 assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode)
122 writer = httptest.NewRecorder()
123 controller.handleErrorResponse(rsmerrors.NewResourceNotFoundError(), writer)
124 assert.Equal(t, http.StatusNotFound, writer.Result().StatusCode)
126 writer = httptest.NewRecorder()
127 controller.handleErrorResponse(rsmerrors.NewInvalidJsonError(), writer)
128 assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode)
130 writer = httptest.NewRecorder()
131 controller.handleErrorResponse(fmt.Errorf("ErrorError"), writer)
132 assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode)