1 /*******************************************************************************
2 * ============LICENSE_START==================================================
4 * * ===========================================================================
5 * * Copyright © 2017 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 * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 ******************************************************************************/
24 package datarouter.provisioning;
26 import static org.junit.Assert.fail;
29 import java.io.FileInputStream;
30 import java.io.IOException;
31 import java.io.InputStream;
32 import java.security.KeyStore;
33 import java.util.Properties;
35 import org.apache.commons.io.FileUtils;
36 import org.apache.http.HttpEntity;
37 import org.apache.http.HttpResponse;
38 import org.apache.http.StatusLine;
39 import org.apache.http.client.methods.HttpGet;
40 import org.apache.http.conn.scheme.Scheme;
41 import org.apache.http.conn.ssl.SSLSocketFactory;
42 import org.apache.http.impl.client.AbstractHttpClient;
43 import org.apache.http.impl.client.DefaultHttpClient;
44 import org.apache.http.util.EntityUtils;
45 import org.json.JSONObject;
46 import org.json.JSONTokener;
47 import org.junit.After;
48 import org.junit.Before;
49 import org.onap.dmaap.datarouter.provisioning.FeedServlet;
51 public class IntegrationTestBase {
54 * The properties file to read the DB properties from.
56 private static final String CONFIG_FILE = "integration_test.properties";
58 public Properties props;
59 protected AbstractHttpClient httpclient;
62 static JSONObject db_state;
65 * This is the setUp method.
68 public void setUp() throws Exception {
70 props = new Properties();
71 try (InputStream inStream = getClass().getClassLoader().getResourceAsStream(CONFIG_FILE)) {
73 } catch (Exception e) {
78 httpclient = new DefaultHttpClient();
79 String str = "0123456789ABCDEF";
80 s33 = str + str + "!";
81 str = str + str + str + str;
82 s257 = str + str + str + str + "!";
85 String store = props.getProperty("test.keystore");
86 String pass = props.getProperty("test.kspassword");
87 KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
88 FileInputStream instream = new FileInputStream(new File(store));
90 keyStore.load(instream, pass.toCharArray());
91 } catch (Exception x) {
92 System.err.println("READING KEYSTORE: " + x);
96 } catch (Exception ignore) {
101 store = props.getProperty("test.truststore");
102 pass = props.getProperty("test.tspassword");
103 KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
104 instream = new FileInputStream(new File(store));
106 trustStore.load(instream, pass.toCharArray());
107 } catch (Exception x) {
108 System.err.println("READING TRUSTSTORE: " + x);
112 } catch (Exception ignore) {
117 SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore, "changeit", trustStore);
118 Scheme sch = new Scheme("https", 443, socketFactory);
119 httpclient.getConnectionManager().getSchemeRegistry().register(sch);
121 //DbTestData.populateDb(httpclient, props);
125 * This is the getDBstate method.
129 if (db_state == null) {
130 String url = props.getProperty("test.host") + "/internal/prov";
131 HttpGet httpGet = new HttpGet(url);
133 httpGet.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
134 HttpResponse response = httpclient.execute(httpGet);
135 HttpEntity entity = response.getEntity();
136 String ctype = entity.getContentType().getValue().trim();
137 // save the response body as db_state
138 boolean ok = ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE1);
139 ok |= ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE2);
143 db_state = new JSONObject(new JSONTokener(entity.getContent()));
144 } catch (Exception e) {
145 fail("Bad JSON: " + e.getMessage());
148 EntityUtils.consume(entity);
150 } catch (IOException e) {
151 fail(e.getMessage());
153 httpGet.releaseConnection();
159 * This is the tearDown method.
162 public void tearDown() throws Exception {
163 // When HttpClient instance is no longer needed,
164 // shut down the connection manager to ensure
165 // immediate deallocation of all system resources
166 httpclient.getConnectionManager().shutdown();
167 FileUtils.deleteDirectory(new File("./unit-test-logs"));
170 protected void ckResponse(HttpResponse response, int expect) {
171 System.out.println(response.getStatusLine());
172 StatusLine sl = response.getStatusLine();
173 int code = sl.getStatusCode();
174 if (code != expect) {
175 fail("Unexpected response, expect " + expect + " got " + code + " " + sl.getReasonPhrase());