diff options
Diffstat (limited to 'datarouter-prov/src/test/java/datarouter/provisioning/testBase.java')
-rw-r--r-- | datarouter-prov/src/test/java/datarouter/provisioning/testBase.java | 158 |
1 files changed, 158 insertions, 0 deletions
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 index 00000000..9a96933b --- /dev/null +++ b/datarouter-prov/src/test/java/datarouter/provisioning/testBase.java @@ -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()); + } +} |