+ /**
+ * Create a (mocked) HTTPS request and invoke the Babel generate artifacts API
+ *
+ * @param request for the Babel Service
+ * @return the Response from the HTTP API
+ * @throws URISyntaxException
+ */
+ private Response processJsonRequest(String jsonRequest) throws URISyntaxException {
+ UriInfo mockUriInfo = Mockito.mock(UriInfo.class);
+ Mockito.when(mockUriInfo.getRequestUri()).thenReturn(new URI("/validate")); // NOSONAR (mocked)
+ Mockito.when(mockUriInfo.getPath(false)).thenReturn("validate"); // URI prefix is stripped by AJSC routing
+ Mockito.when(mockUriInfo.getPathParameters()).thenReturn(new MultivaluedHashMap<String, String>());
+
+ // Create mocked request headers map
+ MultivaluedHashMap<String, String> headersMap = new MultivaluedHashMap<>();
+ headersMap.put("X-TransactionId", createSingletonList("transaction-id"));
+ headersMap.put("X-FromAppId", createSingletonList("app-id"));
+ headersMap.put("Host", createSingletonList("hostname"));
+
+ HttpHeaders headers = Mockito.mock(HttpHeaders.class);
+ for (Entry<String, List<String>> entry : headersMap.entrySet()) {
+ Mockito.when(headers.getRequestHeader(entry.getKey())).thenReturn(entry.getValue());
+ }
+ Mockito.when(headers.getRequestHeaders()).thenReturn(headersMap);
+
+ MockHttpServletRequest servletRequest = new MockHttpServletRequest();
+ servletRequest.setSecure(true);
+ servletRequest.setScheme("https");
+ servletRequest.setServerPort(9501);
+ servletRequest.setServerName("localhost");
+ servletRequest.setRequestURI("/services/validation-service/v1/app/validate");
+
+ X509Certificate mockCertificate = Mockito.mock(X509Certificate.class);
+ Mockito.when(mockCertificate.getSubjectX500Principal())
+ .thenReturn(new X500Principal("CN=test, OU=qa, O=Test Ltd, L=London, ST=London, C=GB"));
+
+ servletRequest.setAttribute("javax.servlet.request.X509Certificate", new X509Certificate[] {mockCertificate});
+ servletRequest.setAttribute("javax.servlet.request.cipher_suite", "");
+
+ GenerateArtifactsServiceImpl service = new GenerateArtifactsServiceImpl(auth);
+ return service.generateArtifacts(mockUriInfo, headers, servletRequest, jsonRequest);
+ }
+
+ private List<String> createSingletonList(String listItem) {
+ return Collections.<String>singletonList(listItem);