summaryrefslogtreecommitdiffstats
path: root/sms-client/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'sms-client/java/src')
-rw-r--r--sms-client/java/src/main/example/SmsClientExample.java118
-rw-r--r--sms-client/java/src/main/java/org/onap/aaf/sms/SmsClient.java256
-rw-r--r--sms-client/java/src/main/java/org/onap/aaf/sms/SmsInterface.java90
-rw-r--r--sms-client/java/src/main/java/org/onap/aaf/sms/SmsResponse.java57
-rw-r--r--sms-client/java/src/test/java/org/onap/aaf/sms/ClientTestRunner.java39
-rw-r--r--sms-client/java/src/test/java/org/onap/aaf/sms/SmsCreateDomainTest.java46
-rw-r--r--sms-client/java/src/test/java/org/onap/aaf/sms/SmsDeleteDomainTest.java43
-rw-r--r--sms-client/java/src/test/java/org/onap/aaf/sms/SmsDeleteSecretTest.java43
-rw-r--r--sms-client/java/src/test/java/org/onap/aaf/sms/SmsGetSecretNamesTest.java46
-rw-r--r--sms-client/java/src/test/java/org/onap/aaf/sms/SmsGetSecretTest.java47
-rw-r--r--sms-client/java/src/test/java/org/onap/aaf/sms/SmsSecureSocket.java68
-rw-r--r--sms-client/java/src/test/java/org/onap/aaf/sms/SmsStoreSecretTest.java46
-rw-r--r--sms-client/java/src/test/java/org/onap/aaf/sms/SmsTest.java110
13 files changed, 1009 insertions, 0 deletions
diff --git a/sms-client/java/src/main/example/SmsClientExample.java b/sms-client/java/src/main/example/SmsClientExample.java
new file mode 100644
index 0000000..dc0e776
--- /dev/null
+++ b/sms-client/java/src/main/example/SmsClientExample.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+import java.io.FileInputStream;
+import java.lang.Boolean;
+import java.lang.Integer;
+import java.net.URL;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSessionContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManagerFactory;
+import java.security.KeyStore;
+import java.security.Provider;
+import java.security.SecureRandom;
+import java.security.Security;
+import java.util.HashMap;
+import java.util.Map;
+import org.onap.aaf.sms.SmsClient;
+import org.onap.aaf.sms.SmsResponse;
+
+public class SmsClientExample {
+ public static void main(String[] args) throws Exception {
+ // Set up the Sun PKCS 11 provider
+ Provider p = Security.getProvider("SunPKCS11-pkcs11Test");
+ if (p==null) {
+ throw new RuntimeException("could not get security provider");
+ }
+
+ // Load the key store
+ char[] pin = "45789654".toCharArray();
+ KeyStore keyStore = KeyStore.getInstance("PKCS11", p);
+ keyStore.load(null, pin);
+
+ // Load the CA certificate
+ FileInputStream tst = new FileInputStream("/ca.jks");
+ KeyStore trustStore = KeyStore.getInstance("JKS");
+ trustStore.load(tst, pin);
+
+ KeyManagerFactory keyManagerFactory =
+ KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
+ //Add to keystore to key manager
+ keyManagerFactory.init(keyStore, pin);
+
+ TrustManagerFactory trustManagerFactory =
+ TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ trustManagerFactory.init(trustStore);
+
+ //Create the context
+ SSLContext context = SSLContext.getInstance("TLS");
+ context.init(keyManagerFactory.getKeyManagers(),
+ trustManagerFactory.getTrustManagers(), new SecureRandom());
+ //Create a socket factory
+ SSLSocketFactory ssf = context.getSocketFactory();
+ SSLSessionContext sessCtx = context.getServerSessionContext();
+ SmsClient sms = new SmsClient("onap.mydomain.com", 10443, ssf);
+ SmsResponse resp1 = sms.createDomain("onap.new.test.sms0");
+ if ( resp1.getSuccess() ) {
+ System.out.println(resp1.getResponse());
+ System.out.println(resp1.getResponseCode());
+ }
+ Map<String, Object> m1 = new HashMap<String, Object>();
+ m1.put("passwd", "gax6ChD0yft");
+ SmsResponse resp2 = sms.storeSecret("onap.new.test.sms0", "testsec", m1);
+ if ( resp2.getSuccess() ) {
+ System.out.println(resp2.getResponse());
+ System.out.println(resp2.getResponseCode());
+ }
+ Map<String, Object> m2 = new HashMap<String, Object>();
+ m2.put("username", "dbuser");
+ m2.put("isadmin", new Boolean(true));
+ m2.put("age", new Integer(40));
+ m2.put("secretkey", "asjdhkuhioeukadfjsadnfkjhsdukfhaskdjhfasdf");
+ m2.put("token", "2139084553458973452349230849234234908234342");
+ SmsResponse resp3 = sms.storeSecret("onap.new.test.sms0","credentials", m2);
+ if ( resp3.getSuccess() ) {
+ System.out.println(resp3.getResponse());
+ System.out.println(resp3.getResponseCode());
+ }
+ SmsResponse resp4 = sms.getSecretNames("onap.new.test.sms0");
+ if ( resp4.getSuccess() ) {
+ System.out.println(resp4.getResponse());
+ System.out.println(resp4.getResponseCode());
+ }
+ SmsResponse resp5= sms.getSecret("onap.new.test.sms0", "testsec");
+ if ( resp5.getSuccess() ) {
+ System.out.println(resp5.getResponse());
+ System.out.println(resp5.getResponseCode());
+ }
+ SmsResponse resp6= sms.getSecret("onap.new.test.sms0", "credentials");
+ if ( resp6.getSuccess() ) {
+ Boolean b = (Boolean)resp6.getResponse().get("isadmin");
+ if ( b )
+ System.out.println("Age=" + (Integer)resp6.getResponse().get("age"));
+ System.out.println(resp6.getResponse());
+ System.out.println(resp6.getResponseCode());
+ }
+ SmsResponse resp7=sms.deleteDomain("onap.new.test.sms0");
+ if ( resp7.getSuccess() ) {
+ System.out.println(resp7.getResponse());
+ System.out.println(resp7.getResponseCode());
+ }
+ }
+}
diff --git a/sms-client/java/src/main/java/org/onap/aaf/sms/SmsClient.java b/sms-client/java/src/main/java/org/onap/aaf/sms/SmsClient.java
new file mode 100644
index 0000000..17a9f16
--- /dev/null
+++ b/sms-client/java/src/main/java/org/onap/aaf/sms/SmsClient.java
@@ -0,0 +1,256 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import javax.net.ssl.SSLSocketFactory;
+import java.net.URL;
+import javax.net.ssl.HttpsURLConnection;
+import org.onap.aaf.sms.SmsResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.io.OutputStreamWriter;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class SmsClient implements SmsInterface {
+
+ private String baset;
+ private SSLSocketFactory ssf;
+
+ public SmsClient(String host, int port, SSLSocketFactory s) {
+ baset = "https://"+ host + ":" + port + "/v1/sms";
+ ssf = s;
+ }
+ public SmsClient(String host, int port, String version, SSLSocketFactory s) {
+ baset = "https://"+ host + ":" + port + "/" + version + "/sms";
+ ssf = s;
+ }
+
+ private Map<String, Object> getSubmap(Map<String, Object> raw, String k) {
+ Object v = raw.get(k);
+ if ( v != null ) {
+ Map<String, Object> r = (Map<String, Object>)v;
+ return(r);
+ }
+ else {
+ return(null);
+ }
+ }
+
+ private List<Object> jsontolist(JSONArray a) throws JSONException {
+ List<Object> l = new ArrayList<Object>();
+ for(int i=0;i<a.length();i++) {
+ Object v = a.get(i);
+ if ( v instanceof JSONArray ) {
+ v = jsontolist((JSONArray) v);
+ } else if (v instanceof JSONObject) {
+ v = jsontomap((JSONObject) v);
+ }
+ l.add(v);
+ }
+ return(l);
+ }
+
+ private Map<String, Object> jsontomap(JSONObject j) throws JSONException {
+ Map<String, Object> m = new HashMap<String, Object>();
+
+ Iterator<?> ks = j.keys();
+ while( ks.hasNext() ) {
+ String k = (String)ks.next();
+ Object v = j.get(k);
+
+ if ( v instanceof JSONArray ) {
+ v = jsontolist((JSONArray) v);
+ } else if ( v instanceof JSONObject ) {
+ v = jsontomap((JSONObject) v);
+ }
+ m.put(k, v);
+ }
+ return(m);
+ }
+
+ protected Map<String, Object> strtomap(String r) throws JSONException {
+ JSONObject jobj = null;
+
+ jobj = new JSONObject(r);
+ return(jsontomap(jobj));
+
+ }
+ protected SmsResponse execute(String reqtype, String t, String ins, boolean input, boolean output) {
+
+ HttpsURLConnection conn;
+ int errorcode = -1;
+ SmsResponse resp = new SmsResponse();
+
+ try {
+ URL url = new URL(t);
+ conn = (HttpsURLConnection)url.openConnection();
+ conn.setSSLSocketFactory(ssf);
+ conn.setRequestMethod(reqtype);
+ conn.setDoOutput(true);
+ conn.setDoInput(true);
+ conn.setRequestProperty("Content-Type", "application/json");
+ conn.setRequestProperty("Accept", "application/json");
+
+ if ( input ) {
+ OutputStream out = conn.getOutputStream();
+ OutputStreamWriter wr = new OutputStreamWriter(out);
+ wr.write(ins);
+ wr.flush();
+ wr.close();
+ }
+ errorcode = conn.getResponseCode();
+ if ( output && errorcode > 0 ) {
+ InputStream inputstream = conn.getInputStream();
+ InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
+ BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
+
+ String response;
+ String save = "";
+ while ((response = bufferedreader.readLine()) != null) {
+ save = save + response;
+ }
+ if ( !save.isEmpty() ) {
+ if ( errorcode/100 == 2 ) {
+ resp.setResponse(strtomap(save));
+ } else {
+ resp.setErrorMessage(save);
+ }
+ }
+ }
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ resp.setResponseCode(errorcode);
+ return(resp);
+ }
+ resp.setResponseCode(errorcode);
+ return resp;
+ }
+ @Override
+ public SmsResponse createDomain(String dname) {
+
+ String t = baset + "/domain";
+ String input = "{\"name\":\"" + dname + "\"}";
+
+ SmsResponse resp = execute("POST", t, input, true, true);
+ int errcode = resp.getResponseCode();
+
+ if ( errcode > 0 && errcode/100 == 2 )
+ resp.setSuccess(true);
+ else
+ resp.setSuccess(false);
+
+ return(resp);
+ }
+ @Override
+ public SmsResponse deleteDomain(String dname) {
+
+ String t = baset + "/domain/" + dname;
+
+ SmsResponse resp = execute("DELETE", t, null, false, true);
+ int errcode = resp.getResponseCode();
+
+ if ( errcode > 0 && errcode/100 == 2 )
+ resp.setSuccess(true);
+ else
+ resp.setSuccess(false);
+
+ return(resp);
+ }
+ @Override
+ public SmsResponse storeSecret(String dname, String sname, Map<String, Object> values) {
+
+ String t = baset + "/domain/" + dname + "/secret";
+ Map<String, Object> cm = new HashMap<String, Object>();
+ cm.put("name", sname);
+ cm.put("values", values);
+ JSONObject jobj = new JSONObject(cm);
+
+ SmsResponse resp = execute("POST", t, jobj.toString(), true, false);
+ int errcode = resp.getResponseCode();
+
+ if ( errcode > 0 && errcode/100 == 2 )
+ resp.setSuccess(true);
+ else
+ resp.setSuccess(false);
+
+ return(resp);
+ }
+ @Override
+ public SmsResponse getSecretNames(String dname) {
+
+ String t = baset + "/domain/" + dname + "/secret";
+
+ SmsResponse resp = execute("GET", t, null, false, true);
+ int errcode = resp.getResponseCode();
+
+ if ( errcode > 0 && errcode/100 == 2 )
+ resp.setSuccess(true);
+ else
+ resp.setSuccess(false);
+
+ return(resp);
+ }
+ @Override
+ public SmsResponse getSecret(String dname, String sname) {
+
+ String t = baset + "/domain/" + dname + "/secret/" + sname;
+
+ SmsResponse resp = execute("GET", t, null, false, true);
+ int errcode = resp.getResponseCode();
+
+ if ( errcode > 0 && errcode/100 == 2 ) {
+ Map<String, Object> m = getSubmap(resp.getResponse(), "values");
+ if ( m != null ) {
+ resp.setSuccess(true);
+ resp.setResponse(m);
+ }
+ else {
+ resp.setSuccess(false);
+ }
+ }
+ else {
+ resp.setSuccess(false);
+ }
+
+ return(resp);
+
+ }
+ @Override
+ public SmsResponse deleteSecret(String dname, String sname) {
+
+ String t = baset + "/domain/" + dname + "/secret/" + sname;
+
+ SmsResponse resp = execute("DELETE", t, null, false, true);
+ int errcode = resp.getResponseCode();
+
+ if ( errcode > 0 && errcode/100 == 2 )
+ resp.setSuccess(true);
+ else
+ resp.setSuccess(false);
+
+ return(resp);
+ }
+}
diff --git a/sms-client/java/src/main/java/org/onap/aaf/sms/SmsInterface.java b/sms-client/java/src/main/java/org/onap/aaf/sms/SmsInterface.java
new file mode 100644
index 0000000..31875d7
--- /dev/null
+++ b/sms-client/java/src/main/java/org/onap/aaf/sms/SmsInterface.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import org.onap.aaf.sms.SmsResponse;
+import java.util.Map;
+
+public interface SmsInterface {
+ /*
+ Inputs dname - domain name
+ Output - name and uuid
+ Return SmsResponse object
+ success or failure
+ response code if connection succeeded, otherwise -1
+ response string if expected.
+ */
+ public SmsResponse createDomain(String dname);
+
+ /*
+ Inputs dname - domain name
+ Output - none
+ Return SmsResponse object
+ success or failure
+ response code if connection succeeded, otherwise -1
+ response string if expected.
+
+ */
+ public SmsResponse deleteDomain(String dname);
+
+ /*
+ Inputs dname - domain name
+ Output - list of secret names
+ Return SmsResponse object
+ success or failure
+ response code if connection succeeded, otherwise -1
+ response string if expected.
+
+ */
+ public SmsResponse getSecretNames(String dname);
+
+ /*
+ Inputs dname - domain name
+ sname - secret name
+ values - list of key value pairs
+ Output - none
+ Return SmsResponse object
+ success or failure
+ response code if connection succeeded, otherwise -1
+ response string if expected.
+
+ */
+ public SmsResponse storeSecret(String dname, String sname, Map<String, Object> values);
+
+ /*
+ Inputs dname - domain name
+ sname - secret name
+ Output values - list of value pairs
+ Return SmsResponse object
+ success or failure
+ response code if connection succeeded, otherwise -1
+ response string if expected.
+
+ */
+ public SmsResponse getSecret(String dname, String sname);
+
+ /*
+ Inputs dname - domain name
+ sname - secret name
+ Output - none
+ Return SmsResponse object
+ success or failure
+ response code if connection succeeded, otherwise -1
+ response string if expected.
+ */
+ public SmsResponse deleteSecret(String dname, String sname);
+}
diff --git a/sms-client/java/src/main/java/org/onap/aaf/sms/SmsResponse.java b/sms-client/java/src/main/java/org/onap/aaf/sms/SmsResponse.java
new file mode 100644
index 0000000..b7a9980
--- /dev/null
+++ b/sms-client/java/src/main/java/org/onap/aaf/sms/SmsResponse.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import java.util.Map;
+
+public class SmsResponse {
+ private boolean success;
+ private int responseCode;
+ private String errorMessage;
+ private Map<String, Object> response;
+
+ public SmsResponse() {
+ success = false;
+ responseCode = -1;
+ errorMessage = "";
+ response = null;
+ }
+ public void setResponseCode(int code) {
+ responseCode = code;
+ }
+ public void setResponse(Map<String, Object> res) {
+ response = res;
+ }
+ public void setSuccess(boolean val) {
+ success = val;
+ }
+ public int getResponseCode() {
+ return responseCode;
+ }
+ public void setErrorMessage(String em) {
+ errorMessage = em;
+ }
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+ public Map<String, Object> getResponse() {
+ return response;
+ }
+ public boolean getSuccess() {
+ return success;
+ }
+}
diff --git a/sms-client/java/src/test/java/org/onap/aaf/sms/ClientTestRunner.java b/sms-client/java/src/test/java/org/onap/aaf/sms/ClientTestRunner.java
new file mode 100644
index 0000000..5ddaa7d
--- /dev/null
+++ b/sms-client/java/src/test/java/org/onap/aaf/sms/ClientTestRunner.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+
+public class ClientTestRunner {
+ public static void main(String[] args) {
+ Result r = JUnitCore.runClasses(
+ SmsCreateDomainTest.class,
+ SmsDeleteDomainTest.class,
+ SmsStoreSecretTest.class,
+ SmsGetSecretNamesTest.class,
+ SmsGetSecretTest.class,
+ SmsDeleteSecretTest.class
+ );
+
+ for( Failure f : r.getFailures()) {
+ System.out.println(f.toString());
+ }
+ System.out.println(r.wasSuccessful());
+ }
+}
diff --git a/sms-client/java/src/test/java/org/onap/aaf/sms/SmsCreateDomainTest.java b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsCreateDomainTest.java
new file mode 100644
index 0000000..b1f5828
--- /dev/null
+++ b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsCreateDomainTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import junit.framework.*;
+import org.onap.aaf.sms.SmsClient;
+import org.onap.aaf.sms.SmsResponse;
+import org.onap.aaf.sms.SmsSecureSocket;
+import javax.net.ssl.SSLSocketFactory;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SmsCreateDomainTest extends TestCase {
+
+ public void testSmsCreateDomain() {
+ try {
+ SmsTest sms = new SmsTest("otconap4.sc.intel.com", 10443, null);
+ SmsResponse resp = sms.createDomain("onap.new.test.sms0");
+ assertTrue(resp.getSuccess());
+ if ( resp.getSuccess() ) {
+ Map<String, Object> m = resp.getResponse();
+ assertNotNull(m);
+ assertEquals(201, resp.getResponseCode());
+ assertEquals("onap.new.test.sms0", m.get("name"));
+ } else {
+ fail("Unexpected response while creating domain");
+ }
+ } catch ( Exception e ) {
+ fail("Exception while creating domain");
+ }
+ }
+}
diff --git a/sms-client/java/src/test/java/org/onap/aaf/sms/SmsDeleteDomainTest.java b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsDeleteDomainTest.java
new file mode 100644
index 0000000..712014e
--- /dev/null
+++ b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsDeleteDomainTest.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import junit.framework.*;
+import org.onap.aaf.sms.SmsClient;
+import org.onap.aaf.sms.SmsResponse;
+import org.onap.aaf.sms.SmsSecureSocket;
+import javax.net.ssl.SSLSocketFactory;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SmsDeleteDomainTest extends TestCase {
+
+ public void testSmsDeleteDomain() {
+ try {
+ SmsTest sms = new SmsTest("otconap4.sc.intel.com", 10443, null);
+ SmsResponse resp = sms.deleteDomain("onap.new.test.sms0");
+ assertTrue(resp.getSuccess());
+ if ( resp.getSuccess() ) {
+ assertEquals(204, resp.getResponseCode());
+ } else {
+ fail("Unexpected response while deleting domain");
+ }
+ } catch ( Exception e ) {
+ fail("Exception while deleting domain");
+ }
+ }
+}
diff --git a/sms-client/java/src/test/java/org/onap/aaf/sms/SmsDeleteSecretTest.java b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsDeleteSecretTest.java
new file mode 100644
index 0000000..93b3a67
--- /dev/null
+++ b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsDeleteSecretTest.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import junit.framework.*;
+import org.onap.aaf.sms.SmsClient;
+import org.onap.aaf.sms.SmsResponse;
+import org.onap.aaf.sms.SmsSecureSocket;
+import javax.net.ssl.SSLSocketFactory;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SmsDeleteSecretTest extends TestCase {
+
+ public void testSmsDeleteSecret() {
+ try {
+ SmsTest sms = new SmsTest("otconap4.sc.intel.com", 10443, null);
+ SmsResponse resp = sms.deleteSecret("onap.new.test.sms0", "testsec1");
+ assertTrue(resp.getSuccess());
+ if ( resp.getSuccess() ) {
+ assertEquals(204, resp.getResponseCode());
+ } else {
+ fail("Unexpected response while deleting secret");
+ }
+ } catch ( Exception e ) {
+ fail("Exception while deleting secret");
+ }
+ }
+}
diff --git a/sms-client/java/src/test/java/org/onap/aaf/sms/SmsGetSecretNamesTest.java b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsGetSecretNamesTest.java
new file mode 100644
index 0000000..bd9dd7c
--- /dev/null
+++ b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsGetSecretNamesTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import junit.framework.*;
+import org.onap.aaf.sms.SmsClient;
+import org.onap.aaf.sms.SmsResponse;
+import org.onap.aaf.sms.SmsSecureSocket;
+import javax.net.ssl.SSLSocketFactory;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SmsGetSecretNamesTest extends TestCase {
+
+ public void testSmsGetSecretNames() {
+ try {
+ SmsTest sms = new SmsTest("otconap4.sc.intel.com", 10443, null);
+ Map<String, Object> m;
+ SmsResponse resp = sms.getSecretNames("onap.new.test.sms0");
+ assertTrue(resp.getSuccess());
+ if ( resp.getSuccess() ) {
+ assertEquals(200, resp.getResponseCode());
+ m = resp.getResponse();
+ assertEquals("[testsec1, newtest]", m.get("secretnames").toString());
+ } else {
+ fail("Unexpected response while getting secret names");
+ }
+ } catch ( Exception e ) {
+ fail("Exception while getting secret names");
+ }
+ }
+}
diff --git a/sms-client/java/src/test/java/org/onap/aaf/sms/SmsGetSecretTest.java b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsGetSecretTest.java
new file mode 100644
index 0000000..887171c
--- /dev/null
+++ b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsGetSecretTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import junit.framework.*;
+import org.onap.aaf.sms.SmsClient;
+import org.onap.aaf.sms.SmsResponse;
+import org.onap.aaf.sms.SmsSecureSocket;
+import javax.net.ssl.SSLSocketFactory;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SmsGetSecretTest extends TestCase {
+
+ public void testSmsGetSecret() {
+ try {
+ SmsTest sms = new SmsTest("otconap4.sc.intel.com", 10443, null);
+ Map<String, Object> m;
+ SmsResponse resp = sms.getSecret("onap.new.test.sms0", "testsec1");
+ assertTrue(resp.getSuccess());
+ if ( resp.getSuccess() ) {
+ assertEquals(200, resp.getResponseCode());
+ m = resp.getResponse();
+ assertEquals("dbuser", m.get("username").toString());
+ assertEquals("jdX784i-5k", m.get("passwd").toString());
+ } else {
+ fail("Unexpected response while getting secret");
+ }
+ } catch ( Exception e ) {
+ fail("Exception while getting secret");
+ }
+ }
+}
diff --git a/sms-client/java/src/test/java/org/onap/aaf/sms/SmsSecureSocket.java b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsSecureSocket.java
new file mode 100644
index 0000000..3e28aa7
--- /dev/null
+++ b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsSecureSocket.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import java.io.FileInputStream;
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSessionContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManagerFactory;
+import java.security.KeyStore;
+import java.security.Provider;
+import java.security.SecureRandom;
+import java.security.Security;
+
+public class SmsSecureSocket {
+ private SSLSocketFactory ssf = null;
+ public SmsSecureSocket() throws Exception {
+ // Set up the Sun PKCS 11 provider
+ Provider p = Security.getProvider("SunPKCS11-pkcs11Test");
+ if (p==null) {
+ throw new RuntimeException("could not get security provider");
+ }
+
+ // Load the key store
+ char[] pin = "123456789".toCharArray();
+ KeyStore keyStore = KeyStore.getInstance("PKCS11", p);
+ keyStore.load(null, pin);
+
+ // Load the CA certificate
+ FileInputStream tst = new FileInputStream("/ca.jks");
+ KeyStore trustStore = KeyStore.getInstance("JKS");
+ trustStore.load(tst, pin);
+
+ KeyManagerFactory keyManagerFactory =
+ KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
+ //Add to keystore to key manager
+ keyManagerFactory.init(keyStore, pin);
+
+ TrustManagerFactory trustManagerFactory =
+ TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ trustManagerFactory.init(trustStore);
+
+ //Create the context
+ SSLContext context = SSLContext.getInstance("TLS");
+ context.init(keyManagerFactory.getKeyManagers(),
+ trustManagerFactory.getTrustManagers(), new SecureRandom());
+ //Create a socket factory
+ SSLSocketFactory ssf = context.getSocketFactory();
+ }
+ public SSLSocketFactory getSSF() {
+ return(ssf);
+ }
+}
diff --git a/sms-client/java/src/test/java/org/onap/aaf/sms/SmsStoreSecretTest.java b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsStoreSecretTest.java
new file mode 100644
index 0000000..c49a72e
--- /dev/null
+++ b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsStoreSecretTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import junit.framework.*;
+import org.onap.aaf.sms.SmsClient;
+import org.onap.aaf.sms.SmsResponse;
+import org.onap.aaf.sms.SmsSecureSocket;
+import javax.net.ssl.SSLSocketFactory;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SmsStoreSecretTest extends TestCase {
+
+ public void testSmsStoreSecret() {
+ try {
+ SmsTest sms = new SmsTest("otconap4.sc.intel.com", 10443, null);
+ Map<String, Object> v = new HashMap<String, Object>();
+ v.put("username", "dbuser");
+ v.put("password", "kmngjhk");
+ SmsResponse resp = sms.storeSecret("onap.new.test.sms0", "dbs", v);
+ assertTrue(resp.getSuccess());
+ if ( resp.getSuccess() ) {
+ assertEquals(201, resp.getResponseCode());
+ } else {
+ fail("Unexpected response while storing secret");
+ }
+ } catch ( Exception e ) {
+ fail("Exception while storing secret");
+ }
+ }
+}
diff --git a/sms-client/java/src/test/java/org/onap/aaf/sms/SmsTest.java b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsTest.java
new file mode 100644
index 0000000..5277557
--- /dev/null
+++ b/sms-client/java/src/test/java/org/onap/aaf/sms/SmsTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2018 Intel Corporation, Inc
+ *
+ * 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.
+ */
+
+package org.onap.aaf.sms;
+
+import javax.net.ssl.SSLSocketFactory;
+import java.net.URL;
+import javax.net.ssl.HttpsURLConnection;
+import org.onap.aaf.sms.SmsResponse;
+import org.onap.aaf.sms.SmsClient;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.io.OutputStreamWriter;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class SmsTest extends SmsClient {
+
+ public SmsTest(String host, int port, SSLSocketFactory s) {
+ super(host, port, s);
+ }
+ public SmsTest(String host, int port, String version, SSLSocketFactory s) {
+ super(host, port, version, s);
+ }
+ public SmsResponse execute(String reqtype, String t, String ins, boolean input, boolean output) {
+ Map<String, Object> m;
+ SmsResponse resp = new SmsResponse();
+ System.out.println(t);
+
+ switch ( reqtype ) {
+ case "POST":
+ if ( t.matches("(.*)/v1/sms/domain")) {
+ resp.setSuccess(true);
+ resp.setResponseCode(201);
+ try {
+ m = strtomap(ins);
+ } catch ( Exception e ) {
+ resp.setResponse(null);
+ return(resp);
+ }
+ resp.setResponse(m);
+ } else {
+ if ( t.matches("(.*)/v1/sms/(.*)/secret") ) {
+ resp.setSuccess(true);
+ resp.setResponseCode(201);
+ }
+ }
+ break;
+ case "GET":
+ if ( t.matches("(.*)/v1/sms/(.*)/secret") ) {
+ resp.setSuccess(true);
+ resp.setResponseCode(200);
+ String jstr = "{\"secretnames\":[\"testsec1\",\"newtest\"]}";
+ try {
+ m = strtomap(jstr);
+ } catch ( Exception e ) {
+ resp.setResponse(null);
+ return(resp);
+ }
+ resp.setResponse(m);
+ } else {
+ if ( t.matches("(.*)/v1/sms/(.*)/secret/testsec1")) {
+ resp.setSuccess(true);
+ resp.setResponseCode(200);
+ String js = "{\"name\":\"testsec1\",\"values\":{\"username\":\"dbuser\",\"passwd\":\"jdX784i-5k\"}}";
+ try {
+ m = strtomap(js);
+ Map<String, Object> sm = (Map<String, Object>)m.get("values");
+ } catch ( Exception e ) {
+ resp.setResponse(null);
+ return(resp);
+ }
+ resp.setResponse(m);
+ }
+ }
+ break;
+ case "DELETE":
+ if ( t.matches("(.*)/v1/sms/domain/(.*)") ) {
+ // for both delete domain & secret case
+ resp.setSuccess(true);
+ resp.setResponseCode(204);
+ resp.setResponse(null);
+ }
+ break;
+
+ }
+ return resp;
+ }
+}