[DMAAP-48] Initial code import
[dmaap/datarouter.git] / datarouter-prov / src / test / java / datarouter / provisioning / testBase.java
diff --git a/datarouter-prov/src/test/java/datarouter/provisioning/testBase.java b/datarouter-prov/src/test/java/datarouter/provisioning/testBase.java
new file mode 100644 (file)
index 0000000..9a96933
--- /dev/null
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * ============LICENSE_START==================================================
+ * * org.onap.dmaap
+ * * ===========================================================================
+ * * Copyright © 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 datarouter.provisioning;
+
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.KeyStore;
+import java.util.Properties;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.StatusLine;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.conn.scheme.Scheme;
+import org.apache.http.conn.ssl.SSLSocketFactory;
+import org.apache.http.impl.client.AbstractHttpClient;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+import org.junit.After;
+import org.junit.Before;
+
+import com.att.research.datarouter.provisioning.FeedServlet;
+
+public class testBase {
+       /** The properties file to read the DB properties from */
+       public static final String CONFIG_FILE = "tests.properties";
+
+       public Properties props;
+       protected AbstractHttpClient httpclient;
+       protected String s_33;
+       protected String s_257;
+       protected static JSONObject db_state;
+
+       @Before
+       public void setUp() throws Exception {
+               if (props == null) {
+                       props = new Properties();
+                       InputStream inStream = getClass().getClassLoader().getResourceAsStream(CONFIG_FILE);
+                       try {
+                               props.load(inStream);
+                       } catch (Exception e) {
+                               e.printStackTrace();
+                       } finally {
+                               inStream.close();
+                       }
+               }
+
+               httpclient = new DefaultHttpClient();
+               String s = "0123456789ABCDEF";
+               s_33 = s + s + "!";
+               s = s + s + s + s;
+               s_257 = s + s + s + s + "!";
+
+               // keystore
+               String store = props.getProperty("test.keystore");
+               String pass  = props.getProperty("test.kspassword");
+               KeyStore keyStore  = KeyStore.getInstance(KeyStore.getDefaultType());
+           FileInputStream instream = new FileInputStream(new File(store));
+           try {
+               keyStore.load(instream, pass.toCharArray());
+           } catch (Exception x) {
+               System.err.println("READING KEYSTORE: "+x);
+           } finally {
+               try { instream.close(); } catch (Exception ignore) {}
+           }
+
+               store = props.getProperty("test.truststore");
+               pass  = props.getProperty("test.tspassword");
+               KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());
+           instream = new FileInputStream(new File(store));
+           try {
+               trustStore.load(instream, pass.toCharArray());
+           } catch (Exception x) {
+               System.err.println("READING TRUSTSTORE: "+x);
+           } finally {
+               try { instream.close(); } catch (Exception ignore) {}
+           }
+
+           SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore, "changeit", trustStore);
+           Scheme sch = new Scheme("https", 443, socketFactory);
+           httpclient.getConnectionManager().getSchemeRegistry().register(sch);
+       }
+
+       public JSONObject getDBstate() {
+               // set db_state!
+               if (db_state == null) {
+                       String url   = props.getProperty("test.host") + "/internal/prov";
+                       HttpGet httpGet = new HttpGet(url);
+                       try {
+                               httpGet.addHeader(FeedServlet.BEHALF_HEADER, "JUnit");
+                               HttpResponse response = httpclient.execute(httpGet);
+                               HttpEntity entity = response.getEntity();
+                               String ctype = entity.getContentType().getValue().trim();
+                               // save the response body as db_state
+                               boolean ok  = ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE1);
+                                       ok |= ctype.equals(FeedServlet.PROVFULL_CONTENT_TYPE2);
+                               if (ok) {
+                                       db_state = null;
+                                       try {
+                                               db_state = new JSONObject(new JSONTokener(entity.getContent()));
+                                       } catch (Exception e) {
+                                               fail("Bad JSON: "+e.getMessage());
+                                       }
+                               } else {
+                                       EntityUtils.consume(entity);
+                               }
+                       } catch (IOException e) {
+                               fail(e.getMessage());
+                       } finally {
+                               httpGet.releaseConnection();
+                       }
+               }
+               return db_state;
+       }
+
+       @After
+       public void tearDown() throws Exception {
+               // When HttpClient instance is no longer needed,
+               // shut down the connection manager to ensure
+               // immediate deallocation of all system resources
+               httpclient.getConnectionManager().shutdown();
+       }
+
+       protected void ckResponse(HttpResponse response, int expect) {
+               System.out.println(response.getStatusLine());
+               StatusLine sl = response.getStatusLine();
+               int code = sl.getStatusCode();
+               if (code != expect)
+                       fail("Unexpected response, expect "+expect+" got "+code+" "+sl.getReasonPhrase());
+       }
+}