Refactor ErrorLogHelper
[aai/aai-common.git] / aai-schema-ingest / src / test / java / org / onap / aai / restclient / MockRestClient.java
index 87e4bfe..d2921c7 100644 (file)
@@ -3,6 +3,7 @@
  * org.onap.aai
  * ================================================================================
  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2023 Deutsche Telekom SA.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.aai.restclient;
 
-import com.att.eelf.configuration.EELFLogger;
+import static org.junit.Assert.assertNotNull;
+import static org.springframework.test.web.client.match.MockRestRequestMatchers.content;
+import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
+import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
+import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
+
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
-import org.apache.commons.io.IOUtils;
-import org.springframework.core.io.Resource;
-import org.springframework.http.*;
-import org.springframework.stereotype.Component;
-import org.springframework.test.web.client.ExpectedCount;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.assertNotNull;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.*;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
+import org.apache.commons.io.IOUtils;
+import org.springframework.boot.web.client.RestTemplateBuilder;
+import org.springframework.boot.web.client.RestTemplateCustomizer;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
+import org.springframework.stereotype.Component;
+import org.springframework.test.web.client.ExpectedCount;
+import org.springframework.test.web.client.MockRestServiceServer;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
 
 @Component
 public class MockRestClient extends RestClient {
 
-private RestTemplate restTemplate;
-        private MockRestServiceServer mockRestServiceServer;
-
-    String fileName = "mockrequests";
+    private final RestTemplate restTemplate;
+    private final MockRestServiceServer mockRestServiceServer;
 
     public MockRestClient(String fileName) {
-        /*
-        List<MockRestServiceServer> mockedAAIRequests = new ArrayList<>(aaiRequests.size());
-         */
-        List<MockRestServiceServer> mockedAAIRequests = new ArrayList<>();
-
-        restTemplate = new RestTemplate();
-           /* MockRestServiceServer server       = MockRestServiceServer
-                .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate())
-                .build();
-            server.expect(MockRestRequestMatchers.requestTo(url))
-                .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
-
-        // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class);
-        //when(mockBuilder.build()).thenReturn(restTemplate);
+        // When jackson-dataformat-xml is on the classpath, the default Content-Type changes
+        // from application/json to application/xml
+        RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder(new RestTemplateCustomizer() {
+            @Override
+            public void customize(RestTemplate restTemplate) {
+                restTemplate.getMessageConverters()
+                    .removeIf(converter -> MappingJackson2XmlHttpMessageConverter.class.isAssignableFrom(converter.getClass()));
+            }
+        });
+        restTemplate = restTemplateBuilder.build();
+        mockRestServiceServer = MockRestServiceServer.createServer(restTemplate);
 
         JsonObject payload = null;
         try {
@@ -74,149 +79,61 @@ private RestTemplate restTemplate;
         } catch (IOException e) {
             e.printStackTrace();
         }
-
         JsonArray mockUris = payload.getAsJsonArray("mock-uri");
-
-
-        mockRestServiceServer = MockRestServiceServer.createServer(restTemplate);
+        
         String url = "https://localhost:8447/aai/v14";
-        /*mockRestServiceServer.expect(requestTo(url))
-            .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
-
 
         for (int i = 0; i < mockUris.size(); i++) {
-            String responseFile = mockUris.get(i).getAsJsonObject().get("response-file").getAsString();
-            String contentTypeValue = mockUris.get(i).getAsJsonObject().get("content").getAsString();
-
-
-            String uri = mockUris.get(i).getAsJsonObject().get("aai-uri").getAsString();
-
-            InputStream inputStream = getClass()
-                .getClassLoader()
-                .getResourceAsStream(responseFile);
-            String responseBody = null;
-            try {
-                responseBody = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-
-
-            mockRestServiceServer.expect(ExpectedCount.manyTimes(), requestTo(url + uri))
-                .andExpect(method(HttpMethod.GET))
-                .andExpect(content().contentType(contentTypeValue))
-                .andRespond(withStatus(HttpStatus.OK).body(responseBody.toString()).contentType(MediaType.valueOf(contentTypeValue)));
-
-
+            registerRequestStub(mockUris, url, i);
         }
     }
 
-    public MockRestClient()  {
-
-         restTemplate = new RestTemplate();
-           /* MockRestServiceServer server       = MockRestServiceServer
-                .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate())
-                .build();
-            server.expect(MockRestRequestMatchers.requestTo(url))
-                .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
-
-        // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class);
-        //when(mockBuilder.build()).thenReturn(restTemplate);
+    private void registerRequestStub(JsonArray mockUris, String url, int i) {
+        JsonObject jsonObject = mockUris.get(i).getAsJsonObject();
+        String responseFile = jsonObject.get("response-file").getAsString();
+        String contentTypeValue = jsonObject.get("content").getAsString();
+        String uri = jsonObject.get("aai-uri").getAsString();
 
-        JsonObject payload = null;
+        InputStream inputStream = getClass().getClassLoader().getResourceAsStream(responseFile);
+        String responseBody = null;
         try {
-            payload = getPayload( fileName + ".json");
+            responseBody = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
         } catch (IOException e) {
             e.printStackTrace();
         }
 
-        JsonArray mockUris = payload.getAsJsonArray("mock-uri");
-
-
-
-        mockRestServiceServer       = MockRestServiceServer.createServer(restTemplate);
-        String url="https://localhost:8447/aai/v14";
-        /*mockRestServiceServer.expect(requestTo(url))
-            .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
-
-
-
-
-        for (int i = 0; i < mockUris.size(); i++) {
-            String responseFile = mockUris.get(i).getAsJsonObject().get("response-file").getAsString();
-            String contentTypeValue = mockUris.get(i).getAsJsonObject().get("content").getAsString();
-
-
-            String uri = mockUris.get(i).getAsJsonObject().get("aai-uri").getAsString();
-
-            InputStream inputStream = getClass()
-                .getClassLoader()
-                .getResourceAsStream(responseFile);
-            String responseBody = null;
-            try {
-                responseBody = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-
-
-            mockRestServiceServer.expect(ExpectedCount.manyTimes(), requestTo(url + uri))
-                .andExpect(method(HttpMethod.GET))
-                .andExpect(content().contentType(contentTypeValue))
-                .andRespond(withStatus(HttpStatus.OK).body(responseBody.toString()).contentType(MediaType.valueOf(contentTypeValue)));
-
-
-        }
-
+        mockRestServiceServer.expect(ExpectedCount.manyTimes(), requestTo(url + uri))
+                .andExpect(method(HttpMethod.GET)).andExpect(content().contentType(contentTypeValue))
+                .andRespond(withStatus(HttpStatus.OK).body(responseBody.toString())
+                        .contentType(MediaType.valueOf(contentTypeValue)));
+    }
 
+    public MockRestClient() {
+        this("mockrequests");
     }
 
-    public JsonObject  getTestDetails(String fileName) throws IOException {
+    public JsonObject getTestDetails(String fileName) throws IOException {
 
-        JsonObject payload = getPayload(fileName );
+        JsonObject payload = getPayload(fileName);
 
         return payload;
     }
 
     public JsonObject getPayload(String filename) throws IOException {
-        InputStream inputStream = getClass()
-            .getClassLoader()
-            .getResourceAsStream(filename);
-
-        //InputStream inputStream = new FileInputStream(filename);
+        InputStream inputStream = getClass().getClassLoader().getResourceAsStream(filename);
 
         String result = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
         String message = String.format("Unable to find the %s in src/test/resources", filename);
         assertNotNull(message, inputStream);
 
-        JsonParser parser = new JsonParser();
-        JsonObject payload = parser.parse(result).getAsJsonObject();
+        JsonObject payload = JsonParser.parseString(result).getAsJsonObject();
         return payload;
     }
 
     @Override
-        public ResponseEntity execute(String uri, HttpMethod method, Map<String,String> headers, String body) {
-
-            String url="https://localhost:8447/aai/v14/"+ uri;
-
-           /* MockRestServiceServer server       = MockRestServiceServer
-                .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate())
-                .build();
-            server.expect(MockRestRequestMatchers.requestTo(url))
-                .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
-
-           // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class);
-            //when(mockBuilder.build()).thenReturn(restTemplate);
-
-        /*MockRestServiceServer server       = MockRestServiceServer.createServer(restTemplate);
-        server.expect(requestTo(url))
-            .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));
-            return new ResponseEntity("blah", HttpStatus.OK);
-        server.expect(ExpectedCount.manyTimes(), requestTo(Matchers.startsWith(aaiBaseUrl + aaiRequests.get(i).get("aai-uri").asText())))
-            .andExpect(method(HttpMethod.GET))
-            .andExpect(content().contentType(MediaType.APPLICATION_JSON))
-            .andRespond(withStatus(HttpStatus.OK).body(aaiResponses.get(i).toString()).contentType(MediaType.APPLICATION_JSON));*/
+    public ResponseEntity<String> execute(String uri, HttpMethod method, Map<String, String> headers, String body) {
 
+        String url = "https://localhost:8447/aai/v14/" + uri;
 
         HttpHeaders headersMap = new HttpHeaders();
 
@@ -226,37 +143,18 @@ private RestTemplate restTemplate;
         headersMap.add("X-FromAppId", "JUNIT");
         headersMap.add("X-TransactionId", "JUNIT");
 
-        HttpEntity httpEntity = new HttpEntity(headers);
+        HttpEntity<String> httpEntity = new HttpEntity(headers);
 
-        ResponseEntity responseEntity = restTemplate.exchange(url , HttpMethod.GET, httpEntity, String.class);
+        ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);
 
-       // mockRestServiceServer.verify();
-       return responseEntity;
+        return responseEntity;
     }
 
     @Override
-    public ResponseEntity executeResource(String uri, HttpMethod method, Map<String,String> headers, String body) {
-
-        String url="https://localhost:8447/aai/v14/"+ uri;
-
-           /* MockRestServiceServer server       = MockRestServiceServer
-                .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate())
-                .build();
-            server.expect(MockRestRequestMatchers.requestTo(url))
-                .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
-
-        // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class);
-        //when(mockBuilder.build()).thenReturn(restTemplate);
-
-        /*MockRestServiceServer server       = MockRestServiceServer.createServer(restTemplate);
-        server.expect(requestTo(url))
-            .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));
-            return new ResponseEntity("blah", HttpStatus.OK);
-        server.expect(ExpectedCount.manyTimes(), requestTo(Matchers.startsWith(aaiBaseUrl + aaiRequests.get(i).get("aai-uri").asText())))
-            .andExpect(method(HttpMethod.GET))
-            .andExpect(content().contentType(MediaType.APPLICATION_JSON))
-            .andRespond(withStatus(HttpStatus.OK).body(aaiResponses.get(i).toString()).contentType(MediaType.APPLICATION_JSON));*/
+    public ResponseEntity<Resource> executeResource(String uri, HttpMethod method, Map<String, String> headers,
+            String body) {
 
+        String url = "https://localhost:8447/aai/v14/" + uri;
 
         HttpHeaders headersMap = new HttpHeaders();
 
@@ -266,9 +164,10 @@ private RestTemplate restTemplate;
         headersMap.add("X-FromAppId", "JUNIT");
         headersMap.add("X-TransactionId", "JUNIT");
 
-        HttpEntity httpEntity = new HttpEntity(headers);
+        HttpEntity<String> httpEntity = new HttpEntity(headers);
 
-        ResponseEntity responseEntity = restTemplate.exchange(url , HttpMethod.GET, httpEntity, Resource.class);
+        ResponseEntity<Resource> responseEntity =
+                restTemplate.exchange(url, HttpMethod.GET, httpEntity, Resource.class);
 
         // mockRestServiceServer.verify();
         return responseEntity;
@@ -280,16 +179,12 @@ private RestTemplate restTemplate;
         return restTemplate;
     }
 
-    public  String getBaseUrl(){
-            return "";
-    }
-
-    protected  MultiValueMap<String,String> getHeaders(Map<String,String> headers){
-            return null;
+    public String getBaseUrl() {
+        return "";
     }
 
-    protected  EELFLogger getLogger(){
-            return null;
+    protected MultiValueMap<String, String> getHeaders(Map<String, String> headers) {
+        return null;
     }
 
 }