Model distribution fails with model-loader 1.13.5
[aai/model-loader.git] / src / test / java / org / onap / aai / modelloader / restclient / TestBabelServiceClient.java
index b42fee4..77e1594 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * ============LICENSE_START=======================================================
+ * ============LICENSE_START=======================================================
  * org.onap.aai
  * ================================================================================
  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
@@ -24,37 +24,36 @@ import static javax.servlet.http.HttpServletResponse.SC_OK;
 import static org.apache.commons.io.IOUtils.write;
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 
-import com.google.gson.Gson;
 import java.io.IOException;
 import java.net.URISyntaxException;
+import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.security.KeyManagementException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
+
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
 import org.eclipse.jetty.server.Handler;
 import org.eclipse.jetty.server.Request;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.onap.aai.babel.service.data.BabelArtifact;
 import org.onap.aai.modelloader.config.ModelLoaderConfig;
-import org.onap.aai.modelloader.restclient.BabelServiceClient.BabelServiceException;
+import org.onap.aai.modelloader.service.HttpsBabelServiceClientFactory;
+
+import com.google.gson.Gson;
 
 /**
- * Local testing of the Babel service
+ * Local testing of the Babel service client.
  *
  */
 public class TestBabelServiceClient {
@@ -62,41 +61,63 @@ public class TestBabelServiceClient {
     private Server server;
     private String responseBody;
 
-    {
+    @BeforeEach
+    public void startJetty() throws Exception {
         List<BabelArtifact> response = new ArrayList<>();
         response.add(new BabelArtifact("", null, ""));
         response.add(new BabelArtifact("", null, ""));
         response.add(new BabelArtifact("", null, ""));
         responseBody = new Gson().toJson(response);
-    }
 
-    @Before
-    public void startJetty() throws Exception {
-        server = new Server(8080);
+        server = new Server(0);
         server.setHandler(getMockHandler());
         server.start();
     }
 
-    @After
+    @AfterEach
     public void stopJetty() throws Exception {
         server.stop();
     }
 
     @Test
-    public void testRestClient() throws UnrecoverableKeyException, KeyManagementException, NoSuchAlgorithmException,
-            KeyStoreException, CertificateException, IOException, BabelServiceException, URISyntaxException {
+    public void testRestClient() throws BabelServiceClientException, IOException, URISyntaxException {
+        String url = server.getURI().toString();
         Properties configProperties = new Properties();
         configProperties.put("ml.babel.KEYSTORE_PASSWORD", "OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0");
-        configProperties.put("ml.babel.BASE_URL", "http://localhost:8080/");
+        configProperties.put("ml.babel.KEYSTORE_FILE", "src/test/resources/auth/aai-client-dummy.p12");
+        configProperties.put("ml.babel.TRUSTSTORE_PASSWORD", "OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0");
+        // In a real deployment this would be a different file (to the client keystore)
+        configProperties.put("ml.babel.TRUSTSTORE_FILE", "src/test/resources/auth/aai-client-dummy.p12");
+        configProperties.put("ml.babel.BASE_URL", url);
+        configProperties.put("ml.babel.GENERATE_ARTIFACTS_URL", "generate");
+        configProperties.put("ml.aai.RESTCLIENT_CONNECT_TIMEOUT", "12000");
+        configProperties.put("ml.aai.RESTCLIENT_READ_TIMEOUT", "12000");
+        BabelServiceClient client =
+                new HttpsBabelServiceClientFactory().create(new ModelLoaderConfig(configProperties, "."));
+        List<BabelArtifact> result =
+                client.postArtifact(readBytesFromFile("compressedArtifacts/service-VscpaasTest-csar.csar"),
+                        "service-Vscpass-Test", "1.0", "Test-Transaction-ID-BabelClient");
+        assertThat(result.size(), is(equalTo(3)));
+    }
+
+    @Test
+    public void testRestClientHttp() throws BabelServiceClientException, IOException, URISyntaxException {
+        String url = server.getURI().toString();
+        Properties configProperties = new Properties();
+        configProperties.put("ml.babel.USE_HTTPS", "false");
+        configProperties.put("ml.babel.BASE_URL", url);
         configProperties.put("ml.babel.GENERATE_ARTIFACTS_URL", "generate");
+        configProperties.put("ml.aai.RESTCLIENT_CONNECT_TIMEOUT", "3000");
+        configProperties.put("ml.aai.RESTCLIENT_READ_TIMEOUT", "3000");
         BabelServiceClient client =
-                new BabelServiceClientFactory().create(new ModelLoaderConfig(configProperties, "."));
+                new HttpsBabelServiceClientFactory().create(new ModelLoaderConfig(configProperties, "."));
         List<BabelArtifact> result =
                 client.postArtifact(readBytesFromFile("compressedArtifacts/service-VscpaasTest-csar.csar"),
                         "service-Vscpass-Test", "1.0", "Test-Transaction-ID-BabelClient");
         assertThat(result.size(), is(equalTo(3)));
     }
 
+
     private byte[] readBytesFromFile(String resourceFile) throws IOException, URISyntaxException {
         return Files.readAllBytes(Paths.get(ClassLoader.getSystemResource(resourceFile).toURI()));
     }
@@ -113,11 +134,10 @@ public class TestBabelServiceClient {
                     HttpServletResponse response) throws IOException, ServletException {
                 response.setStatus(SC_OK);
                 response.setContentType("text/xml;charset=utf-8");
-                write(responseBody, response.getOutputStream());
+                write(responseBody, response.getOutputStream(), Charset.defaultCharset());
                 request.setHandled(true);
             }
         };
         return handler;
     }
 }
-