Introduce new entities
[clamp.git] / src / test / java / org / onap / clamp / clds / it / HttpsItCase.java
index 9befc40..81b6b83 100644 (file)
@@ -2,31 +2,33 @@
  * ============LICENSE_START=======================================================
  * ONAP CLAMP
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
  *                             reserved.
  * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License"); 
- * you may not use this file except in compliance with the License. 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software 
- * distributed under the License is distributed on an "AS IS" BASIS, 
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- * See the License for the specific language governing permissions and 
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END============================================
  * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
  */
 
 package org.onap.clamp.clds.it;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.File;
 import java.io.IOException;
 import java.net.HttpURLConnection;
+import java.nio.charset.Charset;
 
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.HttpsURLConnection;
@@ -35,10 +37,10 @@ import javax.net.ssl.SSLSession;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
 
+import org.apache.commons.io.FileUtils;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractItCase;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
@@ -55,11 +57,10 @@ import org.springframework.web.client.RestTemplate;
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
 @TestPropertySource(locations = "classpath:https/https-test.properties")
-public class HttpsItCase extends AbstractItCase {
+public class HttpsItCase {
 
     @Value("${server.port}")
     private String httpsPort;
-
     @Value("${server.http-to-https-redirection.port}")
     private String httpPort;
 
@@ -68,7 +69,6 @@ public class HttpsItCase extends AbstractItCase {
      */
     @BeforeClass
     public static void setUp() {
-
         try {
             // setup ssl context to ignore certificate errors
             SSLContext ctx = SSLContext.getInstance("TLS");
@@ -76,12 +76,12 @@ public class HttpsItCase extends AbstractItCase {
 
                 @Override
                 public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)
-                        throws java.security.cert.CertificateException {
+                    throws java.security.cert.CertificateException {
                 }
 
                 @Override
                 public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)
-                        throws java.security.cert.CertificateException {
+                    throws java.security.cert.CertificateException {
                 }
 
                 @Override
@@ -89,12 +89,13 @@ public class HttpsItCase extends AbstractItCase {
                     return null;
                 }
             };
-            ctx.init(null, new TrustManager[] { tm }, null);
+            ctx.init(null, new TrustManager[] {
+                tm
+            }, null);
             SSLContext.setDefault(ctx);
         } catch (Exception ex) {
             ex.printStackTrace();
         }
-
     }
 
     @Test
@@ -108,16 +109,32 @@ public class HttpsItCase extends AbstractItCase {
             }
         });
         template.setRequestFactory(factory);
-
         ResponseEntity<String> entity = template
-                .getForEntity("http://localhost:" + this.httpPort + "/designer/index.html", String.class);
+            .getForEntity("http://localhost:" + this.httpPort + "/designer/index.html", String.class);
         assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.FOUND);
-
         ResponseEntity<String> httpsEntity = template
-                .getForEntity("https://localhost:" + this.httpsPort + "/designer/index.html", String.class);
+            .getForEntity("https://localhost:" + this.httpsPort + "/designer/index.html", String.class);
         assertThat(httpsEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
         assertThat(httpsEntity.getBody()).contains("CLDS");
+    }
+
+    @Test
+    public void testSwaggerJson() throws Exception {
+        RestTemplate template = new RestTemplate();
+        final MySimpleClientHttpRequestFactory factory = new MySimpleClientHttpRequestFactory(new HostnameVerifier() {
 
+            @Override
+            public boolean verify(final String hostname, final SSLSession session) {
+                return true;
+            }
+        });
+        template.setRequestFactory(factory);
+        ResponseEntity<String> httpsEntity = template
+            .getForEntity("https://localhost:" + this.httpsPort + "/restservices/clds/v1/api-doc", String.class);
+        assertThat(httpsEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
+        assertThat(httpsEntity.getBody()).contains("swagger");
+        FileUtils.writeStringToFile(
+                new File("docs/swagger/swagger.json"), httpsEntity.getBody(), Charset.defaultCharset());
     }
 
     /**
@@ -134,12 +151,11 @@ public class HttpsItCase extends AbstractItCase {
 
         @Override
         protected void prepareConnection(final HttpURLConnection connection, final String httpMethod)
-                throws IOException {
+            throws IOException {
             if (connection instanceof HttpsURLConnection) {
                 ((HttpsURLConnection) connection).setHostnameVerifier(this.verifier);
             }
             super.prepareConnection(connection, httpMethod);
         }
     }
-
 }