Add option to bypass user authorization
[aai/search-data-service.git] / src / test / java / org / onap / aai / sa / rest / DocumentTest.java
index 2f502f9..e780e3b 100644 (file)
@@ -2,8 +2,8 @@
  * ============LICENSE_START=======================================================\r
  * org.onap.aai\r
  * ================================================================================\r
- * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
- * Copyright © 2017 Amdocs\r
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.\r
+ * Copyright © 2017-2018 Amdocs\r
  * ================================================================================\r
  * Licensed under the Apache License, Version 2.0 (the "License");\r
  * you may not use this file except in compliance with the License.\r
  * See the License for the specific language governing permissions and\r
  * limitations under the License.\r
  * ============LICENSE_END=========================================================\r
- *\r
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
  */\r
 package org.onap.aai.sa.rest;\r
 \r
 import com.fasterxml.jackson.core.JsonProcessingException;\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+// import javax.ws.rs.core.HttpHeaders;\r
+import javax.ws.rs.core.MultivaluedMap;\r
 import org.junit.Assert;\r
 import org.junit.Before;\r
+import org.junit.Ignore;\r
 import org.junit.Test;\r
 import org.mockito.InjectMocks;\r
 import org.mockito.Mock;\r
 import org.mockito.Mockito;\r
 import org.mockito.MockitoAnnotations;\r
+import org.mockito.invocation.InvocationOnMock;\r
+import org.mockito.stubbing.Answer;\r
+import org.onap.aai.sa.searchdbabstraction.elasticsearch.config.ElasticSearchConfig;\r
 import org.onap.aai.sa.searchdbabstraction.elasticsearch.dao.DocumentStoreDataEntity;\r
 import org.onap.aai.sa.searchdbabstraction.elasticsearch.dao.DocumentStoreInterface;\r
+import org.onap.aai.sa.searchdbabstraction.elasticsearch.dao.ElasticSearchHttpController;\r
 import org.onap.aai.sa.searchdbabstraction.elasticsearch.exception.DocumentStoreOperationException;\r
 import org.onap.aai.sa.searchdbabstraction.entity.DocumentOperationResult;\r
 import org.onap.aai.sa.searchdbabstraction.entity.ErrorResult;\r
 import org.onap.aai.sa.searchdbabstraction.entity.SearchHits;\r
 import org.onap.aai.sa.searchdbabstraction.entity.SearchOperationResult;\r
+import org.springframework.http.HttpHeaders;\r
+import org.springframework.http.HttpStatus;\r
+import org.springframework.http.ResponseEntity;\r
+import java.util.Properties;\r
 \r
-import javax.servlet.http.HttpServletRequest;\r
-import javax.servlet.http.HttpServletResponse;\r
-import javax.ws.rs.core.HttpHeaders;\r
-import javax.ws.rs.core.MultivaluedMap;\r
-import javax.ws.rs.core.Response;\r
 \r
 public class DocumentTest {\r
 \r
@@ -69,8 +75,11 @@ public class DocumentTest {
 \r
     DocumentApi documentApi;\r
 \r
+    @Mock\r
+    ElasticSearchHttpController httpController;\r
+\r
     @Before\r
-    public void setUp(){\r
+    public void setUp() {\r
         MockitoAnnotations.initMocks(this);\r
         documentApi = new DocumentApi(searchServiceApi);\r
     }\r
@@ -79,35 +88,36 @@ public class DocumentTest {
     public void testDocumentClass_AllMethods() throws JsonProcessingException {\r
         Document doc = new Document();\r
         doc.setField("name-1", "value-1");\r
-        Assert.assertTrue(doc.getFields().size()==1);\r
+        Assert.assertTrue(doc.getFields().size() == 1);\r
         Assert.assertTrue(doc.toJson().contains("value-1"));\r
         Assert.assertNotNull(doc.toString());\r
         Assert.assertTrue(doc.toString().contains("name-1"));\r
     }\r
 \r
     @Test\r
-    public void testProcessPost_NullContent(){\r
+    public void testProcessPost_NullContent() {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = null;\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
         Mockito.when(request.getRequestURL()).thenReturn(new StringBuffer("http://127.0.0.1"));\r
         Mockito.when(request.getRemoteHost()).thenReturn("localhost");\r
-        Response response = documentApi.processPost(content, request, headers, httpResponse, "index",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processPost(content, request, headers, httpResponse, "index", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.BAD_REQUEST.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.BAD_REQUEST.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    @SuppressWarnings("unchecked")\r
     @Test\r
     public void testProcessPost_NotNullContent() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = "content";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -116,12 +126,13 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenThrow(IllegalArgumentException.class);\r
-        Response response = documentApi.processPost(content, request, headers, httpResponse, "index",\r
-                documentStore);\r
+        ResponseEntity<?> response =\r
+                documentApi.processPost(content, request, headers, httpResponse, "index", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    //\r
     @Test\r
     public void testProcessPost_ValidRequest() throws Exception {\r
         String transactionId = "transactionId-1";\r
@@ -131,7 +142,7 @@ public class DocumentTest {
         result.setResultCode(150);\r
         result.setError(new ErrorResult("type-1", "reason-1"));\r
         result.setFailureCause("test-failure");\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -143,12 +154,13 @@ public class DocumentTest {
         Mockito.when(documentStore.createDocument(Mockito.anyString(), Mockito.any(DocumentStoreDataEntity.class),\r
                 Mockito.anyBoolean())).thenReturn(result);\r
         Mockito.doNothing().when(httpResponse).setHeader(Mockito.anyString(), Mockito.anyString());\r
-        Response response = documentApi.processPost(content, request, headers, httpResponse, "index",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processPost(content, request, headers, httpResponse, "index", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.INTERNAL_SERVER_ERROR.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    //\r
     @Test\r
     public void testProcessSearchWithGet_Created() throws Exception {\r
         String transactionId = "transactionId-1";\r
@@ -159,7 +171,7 @@ public class DocumentTest {
         SearchHits hits = new SearchHits();\r
         hits.setTotalHits("2");\r
         result.setSearchResult(hits);\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -169,13 +181,14 @@ public class DocumentTest {
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(true);\r
         Mockito.when(documentStore.search(Mockito.anyString(), Mockito.anyString())).thenReturn(result);\r
-        Response response = documentApi.processSearchWithGet(content, request, headers, "index-1",\r
-                "query-text", documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processSearchWithGet(content, request, headers, "index-1", "query-text", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.CREATED.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.CREATED.value() == response.getStatusCodeValue());\r
 \r
     }\r
 \r
+    @SuppressWarnings("unchecked")\r
     @Test\r
     public void testProcessSearchWithGet_ValidateThrowsException() throws Exception {\r
         String transactionId = "transactionId-1";\r
@@ -186,7 +199,7 @@ public class DocumentTest {
         SearchHits hits = new SearchHits();\r
         hits.setTotalHits("2");\r
         result.setSearchResult(hits);\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -196,10 +209,10 @@ public class DocumentTest {
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenThrow(IllegalArgumentException.class);\r
         Mockito.when(documentStore.search(Mockito.anyString(), Mockito.anyString())).thenReturn(result);\r
-        Response response = documentApi.processSearchWithGet(content, request, headers, "index-1",\r
-                "query-text", documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processSearchWithGet(content, request, headers, "index-1", "query-text", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
 \r
     }\r
 \r
@@ -213,7 +226,7 @@ public class DocumentTest {
         SearchHits hits = new SearchHits();\r
         hits.setTotalHits("2");\r
         result.setSearchResult(hits);\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -223,10 +236,10 @@ public class DocumentTest {
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(false);\r
         Mockito.when(documentStore.search(Mockito.anyString(), Mockito.anyString())).thenReturn(result);\r
-        Response response = documentApi.processSearchWithGet(content, request, headers, "index-1",\r
-                "query-text", documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processSearchWithGet(content, request, headers, "index-1", "query-text", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
 \r
     }\r
 \r
@@ -240,7 +253,7 @@ public class DocumentTest {
         SearchHits hits = new SearchHits();\r
         hits.setTotalHits("2");\r
         result.setSearchResult(hits);\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -250,36 +263,37 @@ public class DocumentTest {
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(true);\r
         Mockito.when(documentStore.search(Mockito.anyString(), Mockito.anyString())).thenReturn(result);\r
-        Response response = documentApi.processSearchWithGet(content, request, headers, "index-1",\r
-                "query-text", documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processSearchWithGet(content, request, headers, "index-1", "query-text", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FOUND.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FOUND.value() == response.getStatusCodeValue());\r
 \r
     }\r
 \r
     @Test\r
-    public void testProcessPut_NullContent(){\r
+    public void testProcessPut_NullContent() {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = null;\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
         Mockito.when(request.getRequestURL()).thenReturn(new StringBuffer("http://127.0.0.1"));\r
         Mockito.when(request.getRemoteHost()).thenReturn("localhost");\r
-        Response response = documentApi.processPut(content, request, headers, httpResponse, "index","id-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processPut(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.BAD_REQUEST.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.BAD_REQUEST.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    @SuppressWarnings("unchecked")\r
     @Test\r
     public void testProcessPut_RequestThrowsException() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = "content";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -288,10 +302,10 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenThrow(IllegalArgumentException.class);\r
-        Response response = documentApi.processPut(content, request, headers, httpResponse, "index","id-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processPut(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
     @Test\r
@@ -299,7 +313,7 @@ public class DocumentTest {
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = "content";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -308,10 +322,10 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(false);\r
-        Response response = documentApi.processPut(content, request, headers, httpResponse, "index","id-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processPut(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
     @Test\r
@@ -323,7 +337,7 @@ public class DocumentTest {
         result.setResultCode(302);\r
         result.setError(new ErrorResult("type-1", "reason-1"));\r
         result.setFailureCause("test-failure");\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -332,20 +346,21 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(true);\r
-        Mockito.when(documentStore.updateDocument(Mockito.anyString(), Mockito.any(DocumentStoreDataEntity.class),\r
+        Mockito.when(documentStore.createDocument(Mockito.anyString(), Mockito.any(DocumentStoreDataEntity.class),\r
                 Mockito.anyBoolean())).thenReturn(result);\r
-        Response response = documentApi.processPut(content, request, headers, httpResponse, "index","id-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processPut(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FOUND.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FOUND.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    @SuppressWarnings("unchecked")\r
     @Test\r
     public void testProcessDelete_RequestThrowsException() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = "content";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -354,10 +369,10 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenThrow(IllegalArgumentException.class);\r
-        Response response = documentApi.processDelete(content, request, headers, httpResponse, "index","id-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processDelete(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
     @Test\r
@@ -365,7 +380,7 @@ public class DocumentTest {
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = "content";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -374,12 +389,13 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(false);\r
-        Response response = documentApi.processDelete(content, request, headers, httpResponse, "index","id-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processDelete(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    @Ignore\r
     @Test\r
     public void testProcessDelete_ResultInvalid() throws Exception {\r
         String transactionId = "transactionId-1";\r
@@ -389,7 +405,7 @@ public class DocumentTest {
         result.setResultCode(302);\r
         result.setError(new ErrorResult("type-1", "reason-1"));\r
         result.setFailureCause("test-failure");\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -400,18 +416,19 @@ public class DocumentTest {
                 .thenReturn(true);\r
         Mockito.when(documentStore.deleteDocument(Mockito.anyString(), Mockito.any(DocumentStoreDataEntity.class)))\r
                 .thenReturn(result);\r
-        Response response = documentApi.processDelete(content, request, headers, httpResponse, "index","id-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processDelete(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FOUND.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FOUND.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    @SuppressWarnings("unchecked")\r
     @Test\r
     public void testProcessGet_RequestThrowsException() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = "content";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -420,10 +437,10 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenThrow(IllegalArgumentException.class);\r
-        Response response = documentApi.processGet(content, request, headers, httpResponse, "index","id-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processGet(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
     @Test\r
@@ -431,7 +448,7 @@ public class DocumentTest {
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = "content";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -440,10 +457,10 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(false);\r
-        Response response = documentApi.processGet(content, request, headers, httpResponse, "index","id-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processGet(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
     @Test\r
@@ -455,7 +472,7 @@ public class DocumentTest {
         result.setResultCode(302);\r
         result.setError(new ErrorResult("type-1", "reason-1"));\r
         result.setFailureCause("test-failure");\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -466,35 +483,36 @@ public class DocumentTest {
                 .thenReturn(true);\r
         Mockito.when(documentStore.getDocument(Mockito.anyString(), Mockito.any(DocumentStoreDataEntity.class)))\r
                 .thenReturn(result);\r
-        Response response = documentApi.processGet(content, request, headers, httpResponse, "index","id-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.processGet(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FOUND.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FOUND.value() == response.getStatusCodeValue());\r
     }\r
 \r
     @Test\r
-    public void testQueryWithGetWithPayload_NullContent(){\r
+    public void testQueryWithGetWithPayload_NullContent() {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = null;\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
         Mockito.when(request.getRequestURL()).thenReturn(new StringBuffer("http://127.0.0.1"));\r
         Mockito.when(request.getRemoteHost()).thenReturn("localhost");\r
-        Response response = documentApi.queryWithGetWithPayload(content, request, headers, "index-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.queryWithGetWithPayload(content, request, headers, "index-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.BAD_REQUEST.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.BAD_REQUEST.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    @SuppressWarnings("unchecked")\r
     @Test\r
     public void testQueryWithGetWithPayload_RequestThrowsException() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = "content";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -503,10 +521,10 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenThrow(IllegalArgumentException.class);\r
-        Response response = documentApi.queryWithGetWithPayload(content, request, headers, "index-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.queryWithGetWithPayload(content, request, headers, "index-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
     @Test\r
@@ -514,7 +532,7 @@ public class DocumentTest {
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
         String content = "content";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -523,17 +541,17 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(false);\r
-        Response response = documentApi.queryWithGetWithPayload(content, request, headers, "index-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                documentApi.queryWithGetWithPayload(content, request, headers, "index-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
     @Test\r
     public void testCreateProcessIndex_IndexApi_RequestInvalid() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -542,17 +560,18 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(false);\r
-        Response response = indexApi.processCreateIndex("document-1", request, headers, "index-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                indexApi.processCreateIndex("document-1", request, headers, "index-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    @SuppressWarnings("unchecked")\r
     @Test\r
     public void testCreateProcessIndex_IndexApi_RequestThrowsException() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -561,18 +580,18 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenThrow(IllegalArgumentException.class);\r
-        Response response = indexApi.processCreateIndex("document-1", request, headers, "index-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                indexApi.processCreateIndex("document-1", request, headers, "index-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
     @Test\r
     public void testCreateProcessIndex_IndexApi_NullDocument() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
-        String documentSchema= null;\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        String documentSchema = null;\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -581,17 +600,17 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(true);\r
-        Response response = indexApi.processCreateIndex(documentSchema, request, headers, "index-1",\r
-                documentStore);\r
+        ResponseEntity<String> response =\r
+                indexApi.processCreateIndex(documentSchema, request, headers, "index-1", documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.INTERNAL_SERVER_ERROR.value() == response.getStatusCodeValue());\r
     }\r
 \r
     @Test\r
     public void testProcessDelete_IndexApi_RequestInvalid() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -600,16 +619,17 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(false);\r
-        Response response = indexApi.processDelete("document-1", request, headers, documentStore);\r
+        ResponseEntity<String> response = indexApi.processDelete("document-1", request, headers, documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    @SuppressWarnings("unchecked")\r
     @Test\r
     public void testProcessDelete_IndexApi_RequestThrowsException() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -618,16 +638,17 @@ public class DocumentTest {
         Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenThrow(IllegalArgumentException.class);\r
-        Response response = indexApi.processDelete("document-1", request, headers, documentStore);\r
+        ResponseEntity<String> response = indexApi.processDelete("document-1", request, headers, documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.FORBIDDEN.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
     }\r
 \r
+    @SuppressWarnings("unchecked")\r
     @Test\r
     public void testProcessDelete_IndexApi_DeleteIndexException() throws Exception {\r
         String transactionId = "transactionId-1";\r
         String remoteAddr = "http://127.0.0.1";\r
-        Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
         Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
         Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
         Mockito.when(request.getMethod()).thenReturn("testMethod");\r
@@ -637,8 +658,70 @@ public class DocumentTest {
                 Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
                 .thenReturn(true);\r
         Mockito.when(documentStore.deleteIndex(Mockito.anyString())).thenThrow(DocumentStoreOperationException.class);\r
-        Response response = indexApi.processDelete("document-1", request, headers, documentStore);\r
+        ResponseEntity<String> response = indexApi.processDelete("document-1", request, headers, documentStore);\r
         Assert.assertNotNull(response);\r
-        Assert.assertTrue(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() == response.getStatus());\r
+        Assert.assertTrue(HttpStatus.INTERNAL_SERVER_ERROR.value() == response.getStatusCodeValue());\r
+    }\r
+\r
+    @Test\r
+    public void testUserAuthorization() throws Exception {\r
+        String transactionId = "transactionId-1";\r
+        String remoteAddr = "http://127.0.0.1";\r
+        String content = "content";\r
+        // Mockito.when(headers.getRequestHeaders()).thenReturn(multivaluedMap);;\r
+        Mockito.when(multivaluedMap.getFirst(Mockito.anyString())).thenReturn(transactionId);\r
+        Mockito.when(request.getRemoteAddr()).thenReturn(remoteAddr);\r
+        Mockito.when(request.getMethod()).thenReturn("testMethod");\r
+        Mockito.when(request.getRequestURL()).thenReturn(new StringBuffer("http://127.0.0.1"));\r
+        Mockito.when(request.getRemoteHost()).thenReturn("localhost");\r
+        Mockito.when(searchServiceApi.validateRequest(Mockito.any(HttpHeaders.class),\r
+                Mockito.any(HttpServletRequest.class), Mockito.any(ApiUtils.Action.class), Mockito.anyString()))\r
+                .thenCallRealMethod();\r
+\r
+        Mockito.doAnswer(new Answer<ElasticSearchConfig>() {\r
+            public ElasticSearchConfig answer(InvocationOnMock invocation) {\r
+                Properties properties = new Properties();\r
+                return new ElasticSearchConfig(properties);\r
+            }\r
+        }).when(httpController).getElasticSearchConfig();\r
+\r
+        searchServiceApi.documentStore = httpController;\r
+\r
+        ResponseEntity<String> response =\r
+                documentApi.processPut(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
+        Assert.assertNotNull(response);\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
+\r
+        Mockito.doAnswer(new Answer<ElasticSearchConfig>() {\r
+            public ElasticSearchConfig answer(InvocationOnMock invocation) {\r
+                Properties properties = new Properties();\r
+                properties.put(ElasticSearchConfig.ES_AUTH_ENABLED, "true");\r
+                return new ElasticSearchConfig(properties);\r
+            }\r
+        }).when(httpController).getElasticSearchConfig();\r
+\r
+\r
+        response = documentApi.processPut(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
+        Assert.assertNotNull(response);\r
+        Assert.assertTrue(HttpStatus.FORBIDDEN.value() == response.getStatusCodeValue());\r
+\r
+        Mockito.doAnswer(new Answer<ElasticSearchConfig>() {\r
+            public ElasticSearchConfig answer(InvocationOnMock invocation) {\r
+                Properties properties = new Properties();\r
+                properties.put(ElasticSearchConfig.ES_AUTH_ENABLED, "false");\r
+                return new ElasticSearchConfig(properties);\r
+            }\r
+        }).when(httpController).getElasticSearchConfig();\r
+\r
+        DocumentOperationResult result = new DocumentOperationResult();\r
+        result.setResultCode(302);\r
+        result.setError(new ErrorResult("type-1", "reason-1"));\r
+        result.setFailureCause("test-failure");\r
+        Mockito.when(documentStore.createDocument(Mockito.anyString(), Mockito.any(DocumentStoreDataEntity.class),\r
+                Mockito.anyBoolean())).thenReturn(result);\r
+        response = documentApi.processPut(content, request, headers, httpResponse, "index", "id-1", documentStore);\r
+        Assert.assertNotNull(response);\r
+        Assert.assertTrue(HttpStatus.FOUND.value() == response.getStatusCodeValue());\r
+\r
     }\r
-}\r
+}
\ No newline at end of file