Refactor ErrorLogHelper
[aai/aai-common.git] / aai-schema-ingest / src / test / java / org / onap / aai / restclient / MockRestClient.java
index 52e6364..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.
 package org.onap.aai.restclient;
 
 import static org.junit.Assert.assertNotNull;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.*;
+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.att.eelf.configuration.EELFLogger;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
@@ -32,14 +34,20 @@ import com.google.gson.JsonParser;
 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 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.*;
+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;
@@ -49,28 +57,21 @@ 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 {
@@ -78,89 +79,37 @@ public class MockRestClient extends RestClient {
         } 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));
-         */
+    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();
 
-        // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class);
-        // when(mockBuilder.build()).thenReturn(restTemplate);
-
-        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 {
@@ -173,46 +122,19 @@ public class MockRestClient extends RestClient {
     public JsonObject getPayload(String filename) throws IOException {
         InputStream inputStream = getClass().getClassLoader().getResourceAsStream(filename);
 
-        // InputStream inputStream = new FileInputStream(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) {
+    public ResponseEntity<String> 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));
-         */
-
         HttpHeaders headersMap = new HttpHeaders();
 
         headersMap.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
@@ -221,43 +143,19 @@ public class MockRestClient extends RestClient {
         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;
     }
 
     @Override
-    public ResponseEntity executeResource(String uri, HttpMethod method, Map<String, String> headers, String body) {
+    public ResponseEntity<Resource> 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));
-         */
-
         HttpHeaders headersMap = new HttpHeaders();
 
         headersMap.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
@@ -266,9 +164,10 @@ public class MockRestClient extends RestClient {
         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;
@@ -288,8 +187,4 @@ public class MockRestClient extends RestClient {
         return null;
     }
 
-    protected EELFLogger getLogger() {
-        return null;
-    }
-
 }