2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
20 package org.onap.aai.restclient;
22 import com.att.eelf.configuration.EELFLogger;
23 import com.google.gson.JsonArray;
24 import com.google.gson.JsonObject;
25 import com.google.gson.JsonParser;
26 import org.apache.commons.io.IOUtils;
27 import org.springframework.core.io.Resource;
28 import org.springframework.http.*;
29 import org.springframework.stereotype.Component;
30 import org.springframework.test.web.client.ExpectedCount;
31 import org.springframework.test.web.client.MockRestServiceServer;
32 import org.springframework.util.MultiValueMap;
33 import org.springframework.web.client.RestTemplate;
35 import java.io.IOException;
36 import java.io.InputStream;
37 import java.nio.charset.StandardCharsets;
38 import java.util.ArrayList;
39 import java.util.Collections;
40 import java.util.List;
43 import static org.junit.Assert.assertNotNull;
44 import static org.springframework.test.web.client.match.MockRestRequestMatchers.*;
45 import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
48 public class MockRestClient extends RestClient {
50 private RestTemplate restTemplate;
51 private MockRestServiceServer mockRestServiceServer;
53 String fileName = "mockrequests";
55 public MockRestClient(String fileName) {
57 List<MockRestServiceServer> mockedAAIRequests = new ArrayList<>(aaiRequests.size());
59 List<MockRestServiceServer> mockedAAIRequests = new ArrayList<>();
61 restTemplate = new RestTemplate();
62 /* MockRestServiceServer server = MockRestServiceServer
63 .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate())
65 server.expect(MockRestRequestMatchers.requestTo(url))
66 .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
68 // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class);
69 //when(mockBuilder.build()).thenReturn(restTemplate);
71 JsonObject payload = null;
73 payload = getPayload(fileName + ".json");
74 } catch (IOException e) {
78 JsonArray mockUris = payload.getAsJsonArray("mock-uri");
81 mockRestServiceServer = MockRestServiceServer.createServer(restTemplate);
82 String url = "https://localhost:8447/aai/v14";
83 /*mockRestServiceServer.expect(requestTo(url))
84 .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
87 for (int i = 0; i < mockUris.size(); i++) {
88 String responseFile = mockUris.get(i).getAsJsonObject().get("response-file").getAsString();
89 String contentTypeValue = mockUris.get(i).getAsJsonObject().get("content").getAsString();
92 String uri = mockUris.get(i).getAsJsonObject().get("aai-uri").getAsString();
94 InputStream inputStream = getClass()
96 .getResourceAsStream(responseFile);
97 String responseBody = null;
99 responseBody = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
100 } catch (IOException e) {
105 mockRestServiceServer.expect(ExpectedCount.manyTimes(), requestTo(url + uri))
106 .andExpect(method(HttpMethod.GET))
107 .andExpect(content().contentType(contentTypeValue))
108 .andRespond(withStatus(HttpStatus.OK).body(responseBody.toString()).contentType(MediaType.valueOf(contentTypeValue)));
114 public MockRestClient() {
116 restTemplate = new RestTemplate();
117 /* MockRestServiceServer server = MockRestServiceServer
118 .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate())
120 server.expect(MockRestRequestMatchers.requestTo(url))
121 .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
123 // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class);
124 //when(mockBuilder.build()).thenReturn(restTemplate);
126 JsonObject payload = null;
128 payload = getPayload( fileName + ".json");
129 } catch (IOException e) {
133 JsonArray mockUris = payload.getAsJsonArray("mock-uri");
137 mockRestServiceServer = MockRestServiceServer.createServer(restTemplate);
138 String url="https://localhost:8447/aai/v14";
139 /*mockRestServiceServer.expect(requestTo(url))
140 .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
145 for (int i = 0; i < mockUris.size(); i++) {
146 String responseFile = mockUris.get(i).getAsJsonObject().get("response-file").getAsString();
147 String contentTypeValue = mockUris.get(i).getAsJsonObject().get("content").getAsString();
150 String uri = mockUris.get(i).getAsJsonObject().get("aai-uri").getAsString();
152 InputStream inputStream = getClass()
154 .getResourceAsStream(responseFile);
155 String responseBody = null;
157 responseBody = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
158 } catch (IOException e) {
163 mockRestServiceServer.expect(ExpectedCount.manyTimes(), requestTo(url + uri))
164 .andExpect(method(HttpMethod.GET))
165 .andExpect(content().contentType(contentTypeValue))
166 .andRespond(withStatus(HttpStatus.OK).body(responseBody.toString()).contentType(MediaType.valueOf(contentTypeValue)));
174 public JsonObject getTestDetails(String fileName) throws IOException {
176 JsonObject payload = getPayload(fileName );
181 public JsonObject getPayload(String filename) throws IOException {
182 InputStream inputStream = getClass()
184 .getResourceAsStream(filename);
186 //InputStream inputStream = new FileInputStream(filename);
188 String result = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
189 String message = String.format("Unable to find the %s in src/test/resources", filename);
190 assertNotNull(message, inputStream);
192 JsonParser parser = new JsonParser();
193 JsonObject payload = parser.parse(result).getAsJsonObject();
198 public ResponseEntity execute(String uri, HttpMethod method, Map<String,String> headers, String body) {
200 String url="https://localhost:8447/aai/v14/"+ uri;
202 /* MockRestServiceServer server = MockRestServiceServer
203 .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate())
205 server.expect(MockRestRequestMatchers.requestTo(url))
206 .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
208 // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class);
209 //when(mockBuilder.build()).thenReturn(restTemplate);
211 /*MockRestServiceServer server = MockRestServiceServer.createServer(restTemplate);
212 server.expect(requestTo(url))
213 .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));
214 return new ResponseEntity("blah", HttpStatus.OK);
215 server.expect(ExpectedCount.manyTimes(), requestTo(Matchers.startsWith(aaiBaseUrl + aaiRequests.get(i).get("aai-uri").asText())))
216 .andExpect(method(HttpMethod.GET))
217 .andExpect(content().contentType(MediaType.APPLICATION_JSON))
218 .andRespond(withStatus(HttpStatus.OK).body(aaiResponses.get(i).toString()).contentType(MediaType.APPLICATION_JSON));*/
221 HttpHeaders headersMap = new HttpHeaders();
223 headersMap.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
224 headersMap.setContentType(MediaType.APPLICATION_JSON);
225 headersMap.add("Real-Time", "true");
226 headersMap.add("X-FromAppId", "JUNIT");
227 headersMap.add("X-TransactionId", "JUNIT");
229 HttpEntity httpEntity = new HttpEntity(headers);
231 ResponseEntity responseEntity = restTemplate.exchange(url , HttpMethod.GET, httpEntity, String.class);
233 // mockRestServiceServer.verify();
234 return responseEntity;
238 public ResponseEntity executeResource(String uri, HttpMethod method, Map<String,String> headers, String body) {
240 String url="https://localhost:8447/aai/v14/"+ uri;
242 /* MockRestServiceServer server = MockRestServiceServer
243 .bindTo(restClientFactory.getRestClient(ClientType.SchemaService).getRestTemplate())
245 server.expect(MockRestRequestMatchers.requestTo(url))
246 .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));*/
248 // RestTemplateBuilder mockBuilder = mock(RestTemplateBuilder.class);
249 //when(mockBuilder.build()).thenReturn(restTemplate);
251 /*MockRestServiceServer server = MockRestServiceServer.createServer(restTemplate);
252 server.expect(requestTo(url))
253 .andRespond(withSuccess("{}", MediaType.APPLICATION_JSON));
254 return new ResponseEntity("blah", HttpStatus.OK);
255 server.expect(ExpectedCount.manyTimes(), requestTo(Matchers.startsWith(aaiBaseUrl + aaiRequests.get(i).get("aai-uri").asText())))
256 .andExpect(method(HttpMethod.GET))
257 .andExpect(content().contentType(MediaType.APPLICATION_JSON))
258 .andRespond(withStatus(HttpStatus.OK).body(aaiResponses.get(i).toString()).contentType(MediaType.APPLICATION_JSON));*/
261 HttpHeaders headersMap = new HttpHeaders();
263 headersMap.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
264 headersMap.setContentType(MediaType.APPLICATION_JSON);
265 headersMap.add("Real-Time", "true");
266 headersMap.add("X-FromAppId", "JUNIT");
267 headersMap.add("X-TransactionId", "JUNIT");
269 HttpEntity httpEntity = new HttpEntity(headers);
271 ResponseEntity responseEntity = restTemplate.exchange(url , HttpMethod.GET, httpEntity, Resource.class);
273 // mockRestServiceServer.verify();
274 return responseEntity;
278 public RestTemplate getRestTemplate() {
279 RestTemplate restTemplate = null;
283 public String getBaseUrl(){
287 protected MultiValueMap<String,String> getHeaders(Map<String,String> headers){
291 protected EELFLogger getLogger(){