aboutsummaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>2017-08-29 04:12:52 -0700
committerDeterme, Sebastien (sd378r) <sd378r@intl.att.com>2017-08-29 04:12:52 -0700
commitf527ac93d843bd545bd6637cb012378c75a62e65 (patch)
treea57e691f9247f445df2dd7901a4f091a843d5843 /src/test
parent0627eb6d8ef545725c7828a0e11a85788495982a (diff)
Add dynamic ports for HTTP/HTTPS
The ports can now be configured in the application.properties and the both protocols can run at the same time (HTTP+HTTPS) Change-Id: I57d1b5643df33da45af2f6798923d94bff1d560d Issue-Id: CLAMP-43 Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/onap/clamp/clds/it/HttpsIT.java143
-rw-r--r--src/test/resources/https/https-test.properties152
-rw-r--r--src/test/resources/https/keystore-test.jksbin0 -> 2244 bytes
3 files changed, 295 insertions, 0 deletions
diff --git a/src/test/java/org/onap/clamp/clds/it/HttpsIT.java b/src/test/java/org/onap/clamp/clds/it/HttpsIT.java
new file mode 100644
index 00000000..ff630330
--- /dev/null
+++ b/src/test/java/org/onap/clamp/clds/it/HttpsIT.java
@@ -0,0 +1,143 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 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.
+ * 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
+ * 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.IOException;
+import java.net.HttpURLConnection;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.clamp.clds.AbstractIT;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * Test DCAE API in org.onap.clamp.ClampDesigner.client package - replicate DCAE
+ * Delegates in test.
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
+@TestPropertySource(locations = "classpath:https/https-test.properties")
+public class HttpsIT extends AbstractIT {
+
+ @Value("${server.port}")
+ private String httpsPort;
+
+ @Value("${server.http-to-https-redirection.port}")
+ private String httpPort;
+
+ @BeforeClass
+ public static void setUp() {
+
+ try {
+ // setup ssl context to ignore certificate errors
+ SSLContext ctx = SSLContext.getInstance("TLS");
+ X509TrustManager tm = new X509TrustManager() {
+
+ @Override
+ public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)
+ throws java.security.cert.CertificateException {
+ }
+
+ @Override
+ public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)
+ throws java.security.cert.CertificateException {
+ }
+
+ @Override
+ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+ };
+ ctx.init(null, new TrustManager[] { tm }, null);
+ SSLContext.setDefault(ctx);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ }
+
+ @Test
+ public void testDesignerIndex() 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> entity = template
+ .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);
+ assertThat(httpsEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
+ assertThat(httpsEntity.getBody()).contains("CLDS");
+
+ }
+
+ /**
+ * Http Request Factory for ignoring SSL hostname errors. Not for production
+ * use!
+ */
+ class MySimpleClientHttpRequestFactory extends SimpleClientHttpRequestFactory {
+
+ private final HostnameVerifier verifier;
+
+ public MySimpleClientHttpRequestFactory(final HostnameVerifier verifier) {
+ this.verifier = verifier;
+ }
+
+ @Override
+ protected void prepareConnection(final HttpURLConnection connection, final String httpMethod)
+ throws IOException {
+ if (connection instanceof HttpsURLConnection) {
+ ((HttpsURLConnection) connection).setHostnameVerifier(this.verifier);
+ }
+ super.prepareConnection(connection, httpMethod);
+ }
+ }
+
+}
diff --git a/src/test/resources/https/https-test.properties b/src/test/resources/https/https-test.properties
new file mode 100644
index 00000000..f38a4642
--- /dev/null
+++ b/src/test/resources/https/https-test.properties
@@ -0,0 +1,152 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP CLAMP
+# ================================================================================
+# Copyright (C) 2017 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.
+# 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
+# limitations under the License.
+# ============LICENSE_END============================================
+# ===================================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+###
+
+info.build.artifact=@project.artifactId@
+info.build.name=@project.name@
+info.build.description=@project.description@
+info.build.version=@project.version@
+
+### Set the port for HTTP or HTTPS protocol (Controlled by Spring framework, only one at a time).
+### (See below for the parameter 'server.http.port' if you want to have both enabled)
+### To have only HTTP, keep the lines server.ssl.* commented
+### To have only HTTPS enabled, uncomment the server.ssl.* lines and specify a right keystore location
+server.port=10443
+### Settings for HTTPS (this automatically enables the HTTPS on the port 'server.port')
+server.ssl.key-store=classpath:https/keystore-test.jks
+server.ssl.key-store-password=testpass
+server.ssl.key-password=testpass
+
+### In order to be user friendly when HTTPS is enabled,
+### you can add another HTTP port that will be automatically redirected to HTTPS
+### by enabling this parameter (server.http.port) and set it to another port (80 or 8080, 8090, etc ...)
+server.http-to-https-redirection.port=10080
+
+### HTTP Example:
+###--------------
+### server.port=8080
+
+### HTTPS Example:
+### --------------
+### server.port=8443
+### server.ssl.key-store=file:/tmp/mykey.jks
+### server.ssl.key-store-password=mypass
+### server.ssl.key-password=mypass
+
+### HTTP (Redirected to HTTPS) and HTTPS Example:
+### --------------------------------------------
+### server.port=8443 <-- The HTTPS port
+### server.ssl.key-store=file:/tmp/mykey.jks
+### server.ssl.key-store-password=mypass
+### server.ssl.key-password=mypass
+### server.http-to-https-redirection.port=8090 <-- The HTTP port
+
+server.contextPath=/
+#Modified engine-rest applicationpath
+spring.jersey.application-path=/engine-rest
+spring.profiles.active=clamp-default,clamp-spring-authentication
+spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
+
+#The max number of active threads in this pool
+server.tomcat.max-threads=200
+#The minimum number of threads always kept alive
+server.tomcat.min-Spare-Threads=25
+#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
+server.tomcat.max-idle-time=60000
+
+
+#Add this properties only if you want to change the URL, AJSC Framework interceptors will intercept
+#com.att.ajsc.common.interceptors.PreInterceptor.url=/**
+#com.att.ajsc.common.interceptors.PostInterceptor.url=/**
+
+#Servlet context parameters
+server.context_parameters.p-name=value #context parameter with p-name as key and value as value.
+
+camel.springboot.consumer-template-cache-size=1000
+camel.springboot.producer-template-cache-size=1000
+camel.springboot.jmx-enabled=true
+camel.defaultthreadpool.poolsize=10
+camel.defaultthreadpool.maxpoolsize=20
+camel.defaultthreadpool.maxqueuesize=1000
+camel.defaultthreadpool.keepaliveTime=60
+camel.defaultthreadpool.rejectpolicy=CallerRuns
+
+kubernetes.namespace=com-att-ajsc
+
+#server.port=0
+
+#Camunda Process Engine DataSource connection Details
+spring.datasource.camunda.url=jdbc:mysql://localhost:${docker.mariadb.port.host}/camundabpm?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&maxReconnects=100
+spring.datasource.camunda.username=camunda
+spring.datasource.camunda.password=ndMSpw4CAM
+spring.datasource.camunda.driverClassName=com.mysql.jdbc.Driver
+spring.datasource.camunda.validationQuery=SELECT 1
+spring.datasource.camunda.validationQueryTimeout=20000
+spring.datasource.camunda.validationInterval=60000
+spring.datasource.camunda.testWhileIdle = true
+# Automatically test whether a connection provided is good or not
+spring.datasource.camunda.testOnBorrow=true
+
+#Camunda application properties
+#Camunda history level
+camunda.bpm.history-level=auto
+
+#clds datasource connection details
+spring.datasource.cldsdb.driver-class-name=com.mysql.jdbc.Driver
+spring.datasource.cldsdb.url=jdbc:mysql://localhost:${docker.mariadb.port.host}/cldsdb4?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&maxReconnects=100
+spring.datasource.cldsdb.username=clds
+spring.datasource.cldsdb.password=sidnnd83K
+spring.datasource.cldsdb.driverClassName=com.mysql.jdbc.Driver
+spring.datasource.cldsdb.validationQuery=SELECT 1
+spring.datasource.cldsdb.validationQueryTimeout=20000
+spring.datasource.cldsdb.validationInterval=60000
+spring.datasource.cldsdb.testWhileIdle = true
+# Automatically test whether a connection provided is good or not
+spring.datasource.cldsdb.testOnBorrow=true
+
+#Async Executor default Parameters
+async.core.pool.size=10
+async.max.pool.size=20
+async.queue.capacity=500
+
+org.onap.clamp.config.dcae.url=http://localhost:9000/closedloop-dcae-services
+
+#GRM Edge endpoint details
+service.name=ajsc6camundademo
+service.version=1.0.0.0
+routeoffer=TEST
+#Update with your application name
+application.name=AJSC6CAMUNDA
+
+org.onap.clamp.config.files.cldsReference=classpath:/clds/clds-reference.properties
+org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties
+org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json
+org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties
+
+#Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case !
+CLDS_PERMISSION_TYPE_CL=permission-type-cl
+CLDS_PERMISSION_TYPE_CL_MANAGE=permission-type-cl-manage
+CLDS_PERMISSION_TYPE_CL_EVENT=permission-type-cl-event
+CLDS_PERMISSION_TYPE_FILTER_VF=permission-type-filter-vf
+CLDS_PERMISSION_TYPE_TEMPLATE=permission-type-template
+#This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties
+CLDS_PERMISSION_INSTANCE=dev \ No newline at end of file
diff --git a/src/test/resources/https/keystore-test.jks b/src/test/resources/https/keystore-test.jks
new file mode 100644
index 00000000..04ad3b11
--- /dev/null
+++ b/src/test/resources/https/keystore-test.jks
Binary files differ