summaryrefslogtreecommitdiffstats
path: root/cadi/core/src/test
diff options
context:
space:
mode:
authorInstrumental <jcgmisc@stl.gathman.org>2018-03-26 13:49:56 -0700
committerInstrumental <jcgmisc@stl.gathman.org>2018-03-26 13:50:07 -0700
commita20accc73189d8e5454cd26049c0e6fae75da16f (patch)
tree3526110a1f65591354eff6400383512df4828903 /cadi/core/src/test
parentac1e1ec76e9125206be91a2f32c7104c9392dc9a (diff)
AT&T 2.0.19 Code drop, stage 2
Issue-ID: AAF-197 Change-Id: Ifc93308f52c10d6ad82e99cd3ff5ddb900bf219a Signed-off-by: Instrumental <jcgmisc@stl.gathman.org>
Diffstat (limited to 'cadi/core/src/test')
-rw-r--r--cadi/core/src/test/java/.gitignore0
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_AES.java180
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Access.java66
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Base64.java92
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_BufferedCadiWrap.java45
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_BufferedServletInputStream.java320
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CadiExceptionTest.java121
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CadiWrapTest.java155
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Capacitor.java155
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CmdLine.java273
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Hash.java210
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_LocatorException.java60
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_PropAccess.java151
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_ServletContextAccess.java104
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Symm.java203
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_TrustChecker.java37
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_User.java185
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/filter/JU_FCGetTest.java103
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_ConfigPrincipal.java79
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_LocalLur.java103
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_LocalPermission.java71
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_NullLur.java80
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_BasicPrincipal.java123
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_CachedBasicPrincipal.java125
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_Kind.java70
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_OAuth2FormPrincipal.java56
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_StringTagLookup.java40
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_TaggedPrincipal.java68
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_TrustPrincipal.java91
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_UnAuthPrincipal.java41
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_X509Principal.java140
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/taf/JU_NullTafRespTest.java62
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_FQI.java44
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_JsonOutputStream.java93
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_MaskFormatException.java44
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_NetMask.java65
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_Split.java113
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_TheConsole.java34
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_UserChainManip.java66
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_Vars.java150
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/wsse/JU_WSSE_Read.java189
-rw-r--r--cadi/core/src/test/java/org/onap/aaf/cadi/test/wsse/JU_XReader.java65
42 files changed, 4472 insertions, 0 deletions
diff --git a/cadi/core/src/test/java/.gitignore b/cadi/core/src/test/java/.gitignore
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/cadi/core/src/test/java/.gitignore
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_AES.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_AES.java
new file mode 100644
index 00000000..4fb92429
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_AES.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.junit.Assert.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import javax.crypto.CipherInputStream;
+import javax.crypto.CipherOutputStream;
+import javax.crypto.SecretKey;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.AES;
+import org.onap.aaf.cadi.CadiException;
+import org.onap.aaf.cadi.Symm;
+import org.junit.Before;
+
+public class JU_AES {
+ private AES aes;
+ private ByteArrayInputStream baisEncrypt;
+ private ByteArrayInputStream baisDecrypt;
+ private ByteArrayOutputStream baosEncrypt;
+ private ByteArrayOutputStream baosDecrypt;
+
+ @Before
+ public void setup() throws Exception {
+ byte[] keyBytes = new byte[AES.AES_KEY_SIZE/8];
+ char[] codeset = Symm.base64.codeset;
+ int offset = (Math.abs(codeset[0])+47)%(codeset.length-keyBytes.length);
+ for(int i=0;i<keyBytes.length;++i) {
+ keyBytes[i] = (byte)codeset[i+offset];
+ }
+ aes = new AES(keyBytes,0,keyBytes.length);
+ }
+
+ @Test
+ public void newKeyTest() throws Exception {
+ SecretKey secretKey = AES.newKey();
+ assertEquals(secretKey.getAlgorithm(), AES.class.getSimpleName());
+ }
+
+ @Test
+ public void encryptDecrpytFromBytes() throws Exception {
+ String orig = "I'm a password, really";
+ byte[] encrypted = aes.encrypt(orig.getBytes());
+ byte[] decrypted = aes.decrypt(encrypted);
+ assertEquals(orig, new String(decrypted));
+
+ Field aeskeySpec_field = AES.class.getDeclaredField("aeskeySpec");
+ aeskeySpec_field.setAccessible(true);
+ aeskeySpec_field.set(aes, null);
+
+ try {
+ aes.encrypt(orig.getBytes());
+ fail("Should have thrown an exception");
+ } catch (CadiException e) {
+ }
+ try {
+ aes.decrypt(encrypted);
+ fail("Should have thrown an exception");
+ } catch (CadiException e) {
+ }
+ }
+
+ @Test
+ public void saveToFileTest() throws Exception {
+ String filePath = "test/output_key";
+ File keyfile = new File(filePath);
+ aes.save(keyfile);
+ assertTrue(Files.isReadable(Paths.get(filePath)));
+ assertFalse(Files.isWritable(Paths.get(filePath)));
+ assertFalse(Files.isExecutable(Paths.get(filePath)));
+ keyfile.delete();
+ }
+
+ @Test
+ public void encryptDecryptFromInputStream() throws Exception {
+ String orig = "I'm a password, really";
+ byte[] b64encrypted;
+ String output;
+
+ CipherInputStream cisEncrypt;
+ CipherInputStream cisDecrypt;
+
+ // Test CipherInputStream
+ baisEncrypt = new ByteArrayInputStream(orig.getBytes());
+ cisEncrypt = aes.inputStream(baisEncrypt, true);
+ baosEncrypt = new ByteArrayOutputStream();
+ transferFromInputStreamToOutputStream(cisEncrypt, baosEncrypt);
+ cisEncrypt.close();
+
+ b64encrypted = baosEncrypt.toByteArray();
+
+ baisDecrypt = new ByteArrayInputStream(b64encrypted);
+ cisDecrypt = aes.inputStream(baisDecrypt, false);
+ baosDecrypt = new ByteArrayOutputStream();
+ transferFromInputStreamToOutputStream(cisDecrypt, baosDecrypt);
+ cisDecrypt.close();
+
+ output = new String(baosDecrypt.toByteArray());
+ assertEquals(orig, output);
+
+ Field aeskeySpec_field = AES.class.getDeclaredField("aeskeySpec");
+ aeskeySpec_field.setAccessible(true);
+ aeskeySpec_field.set(aes, null);
+
+ assertNull(aes.inputStream(baisEncrypt, true));
+ }
+
+ @Test
+ public void encryptDecryptFromOutputStream() throws Exception {
+ String orig = "I'm a password, really";
+ byte[] b64encrypted;
+ String output;
+
+ CipherOutputStream cosEncrypt;
+ CipherOutputStream cosDecrypt;
+
+ // Test CipherOutputStream
+ baisEncrypt = new ByteArrayInputStream(orig.getBytes());
+ baosEncrypt = new ByteArrayOutputStream();
+ cosEncrypt = aes.outputStream(baosEncrypt, true);
+ transferFromInputStreamToOutputStream(baisEncrypt, cosEncrypt);
+ cosEncrypt.close();
+
+ b64encrypted = baosEncrypt.toByteArray();
+
+ baosDecrypt = new ByteArrayOutputStream();
+ cosDecrypt = aes.outputStream(baosDecrypt, false);
+ baisDecrypt = new ByteArrayInputStream(b64encrypted);
+ transferFromInputStreamToOutputStream(baisDecrypt, cosDecrypt);
+ cosDecrypt.close();
+
+ output = new String(baosDecrypt.toByteArray());
+ assertEquals(orig, output);
+
+ Field aeskeySpec_field = AES.class.getDeclaredField("aeskeySpec");
+ aeskeySpec_field.setAccessible(true);
+ aeskeySpec_field.set(aes, null);
+
+ assertNull(aes.outputStream(baosEncrypt, true));
+ }
+
+ public void transferFromInputStreamToOutputStream(InputStream is, OutputStream os) throws IOException {
+ byte[] buffer = new byte[200];
+ int len;
+ while ((len = is.read(buffer)) != -1) {
+ os.write(buffer, 0, len);
+ }
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Access.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Access.java
new file mode 100644
index 00000000..d62144ce
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Access.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+
+import java.io.IOException;
+
+import org.onap.aaf.cadi.Access;
+import org.onap.aaf.cadi.Access.Level;
+
+public class JU_Access {
+
+ @Test
+ public void levelTests() {
+ assertTrue(Level.DEBUG.inMask(0x1));
+ for (int i = 2; i > 0; i <<= 1) {
+ assertFalse(Level.DEBUG.inMask(i));
+ }
+ assertFalse(Level.DEBUG.inMask(0x80000000));
+
+ assertThat(Level.DEBUG.addToMask(0x2), is(0x3));
+ assertThat(Level.DEBUG.delFromMask(0x1), is(0x0));
+ assertThat(Level.DEBUG.toggle(0x2), is(0x3));
+ assertThat(Level.DEBUG.toggle(0x1), is(0x0));
+ assertThat(Level.DEBUG.maskOf(), is(57617));
+ assertThat(Level.NONE.maskOf(), is(0));
+ }
+
+ @Test
+ public void nullTests() throws IOException {
+ // These are entirely for coverage
+ Access.NULL.log(Level.DEBUG);
+ Access.NULL.printf(Level.DEBUG, "");
+ Access.NULL.log(new Exception());
+ Access.NULL.classLoader();
+ assertThat(Access.NULL.getProperty("", ""), is(nullValue()));
+ Access.NULL.load(System.in);
+ Access.NULL.setLogLevel(Level.DEBUG);
+ assertThat(Access.NULL.decrypt("test", true), is("test"));
+ assertFalse(Access.NULL.willLog(Level.DEBUG));
+ assertThat(Access.NULL.getProperties(), is(not(nullValue())));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Base64.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Base64.java
new file mode 100644
index 00000000..801259d4
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Base64.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.security.SecureRandom;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.Symm;
+import org.onap.aaf.cadi.config.Config;
+
+public class JU_Base64 {
+ private static final String encoding = "Man is distinguished, not only by his reason, but by this singular " +
+ "passion from other animals, which is a lust of the mind, that by a " +
+ "perseverance of delight in the continued and indefatigable generation of " +
+ "knowledge, exceeds the short vehemence of any carnal pleasure.";
+
+ private static final String expected =
+ "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz\n" +
+ "IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg\n" +
+ "dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu\n" +
+ "dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo\n" +
+ "ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=";
+
+ @Test
+ public void test() throws Exception {
+ // Test with different Padding
+ assertEncoded("leas", "bGVhcw==");
+ assertEncoded("leasu", "bGVhc3U=");
+ assertEncoded("leasur", "bGVhc3Vy");
+ assertEncoded("leasure", "bGVhc3VyZQ==");
+ assertEncoded("leasure.", "bGVhc3VyZS4=");
+
+ // Test with line ends
+ assertEncoded(encoding, expected);
+ }
+
+ @Test
+ public void symmetric() throws IOException {
+ String symmetric = new String(Symm.keygen());
+ Symm bsym = Symm.obtain(symmetric);
+ String result = bsym.encode(encoding);
+ assertThat(bsym.decode(result), is(encoding));
+
+ char[] manipulate = symmetric.toCharArray();
+ int spot = new SecureRandom().nextInt(manipulate.length);
+ manipulate[spot]|=0xFF;
+ String newsymmetric = new String(manipulate);
+ assertThat(symmetric, is(not(newsymmetric)));
+ try {
+ bsym = Symm.obtain(newsymmetric);
+ result = bsym.decode(result);
+ assertThat(result, is(encoding));
+ } catch (IOException e) {
+ // this is what we want to see if key wrong
+ }
+ }
+
+ private void assertEncoded(String toEncode, String expected) throws IOException {
+ String result = Symm.base64.encode(toEncode);
+ assertThat(result, is(expected));
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ Symm.base64.decode(new ByteArrayInputStream(result.getBytes()), baos);
+ result = baos.toString(Config.UTF_8);
+ assertThat(result, is(toEncode));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_BufferedCadiWrap.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_BufferedCadiWrap.java
new file mode 100644
index 00000000..172270da
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_BufferedCadiWrap.java
@@ -0,0 +1,45 @@
+/**
+ * ============LICENSE_START====================================================
+ * org.onap.aaf
+ * ===========================================================================
+ * Copyright (c) 2018 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====================================================
+ *
+ */
+package org.onap.aaf.cadi.test;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class JU_BufferedCadiWrap {
+ @Mock
+ private HttpServletRequest request;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ public void constructorTest() {
+ // TODO: Ian - This will always fail beacuse the constructor is invalid
+ // BufferedCadiWrap bcw = new BufferedCadiWrap(request);
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_BufferedServletInputStream.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_BufferedServletInputStream.java
new file mode 100644
index 00000000..66ac3610
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_BufferedServletInputStream.java
@@ -0,0 +1,320 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import java.io.ByteArrayInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.lang.reflect.*;
+import junit.framework.Assert;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.aaf.cadi.BufferedServletInputStream;
+
+import static junit.framework.Assert.assertEquals;
+
+public class JU_BufferedServletInputStream {
+ private BufferedServletInputStream bsis;
+ private String expected;
+
+ @Before
+ public void setup() throws FileNotFoundException {
+ expected = new String("This is the expected output");
+ bsis = new BufferedServletInputStream(new ByteArrayInputStream(expected.getBytes()));
+ }
+
+ @After
+ public void tearDown() throws IOException {
+ bsis.close();
+ }
+
+ @Test
+ public void ByteReadNoMarkTest() throws Exception {
+ int c;
+ int i = 0;
+ byte output[] = new byte[100];
+ while ((c = bsis.read()) != -1) {
+ output[i++] = (byte)c;
+ }
+ Assert.assertEquals(new String(output, 0, i), expected);
+ }
+
+ @Test
+ public void ByteReadMarkTest() throws Exception {
+ bsis.mark(0);
+ int c;
+ int i = 0;
+ byte output[] = new byte[100];
+ while ((c = bsis.read()) != -1) {
+ output[i++] = (byte)c;
+ }
+ Assert.assertEquals(new String(output, 0, i), expected);
+ }
+
+ @Test
+ public void ByteReadStateIsStoreTest() throws Exception {
+ Field state_field = BufferedServletInputStream.class.getDeclaredField("state");
+ state_field.setAccessible(true);
+ bsis.mark(0);
+ int c;
+ int i = 0;
+ byte output[] = new byte[100];
+ while ((c = bsis.read()) != -1) {
+ output[i++] = (byte)c;
+ }
+ bsis.reset();
+ Assert.assertEquals(state_field.get(bsis), 2); // state == READ
+ }
+
+ @Test
+ public void ByteReadStateIsReadTest() throws Exception {
+ bsis.mark(0); // Initialize the capacitor
+ boolean isReset = false;
+ int c;
+ int i = 0;
+ byte output[] = new byte[100];
+ while ((c = bsis.read()) != -1) {
+ output[i++] = (byte)c;
+ if ((i > 5) && !isReset) {
+ // Close the capacitor and start over. This is done for coverage purposes
+ i = 0;
+ isReset = true;
+ bsis.reset(); // Sets state to READ
+ }
+ }
+ Assert.assertEquals(new String(output, 0, i), expected);
+ }
+
+ @Test
+ public void ByteReadStateIsNoneTest() throws Exception {
+ Field state_field = BufferedServletInputStream.class.getDeclaredField("state");
+ state_field.setAccessible(true);
+ bsis.mark(0); // Initialize the capacitor
+ int c;
+ c = bsis.read();
+ // Close the capacitor. This is done for coverage purposes
+ bsis.reset(); // Sets state to READ
+ state_field.setInt(bsis, 0); // state == NONE
+ c = bsis.read();
+ Assert.assertEquals(c, -1);
+ }
+
+ @Test
+ public void ByteArrayReadNoMarkTest() throws Exception {
+ byte output[] = new byte[100];
+ int count = bsis.read(output, 0, expected.length());
+ Assert.assertEquals(new String(output, 0, count), expected);
+ Assert.assertEquals(count, expected.length());
+ }
+
+ @Test
+ public void ByteArrayReadTest() throws Exception {
+ byte[] output = new byte[100];
+ bsis.mark(0);
+ bsis.read(output);
+ Assert.assertEquals(new String(output, 0, expected.length()), expected);
+ }
+
+ @Test
+ public void ByteArrayReadStateIsStoreTest() throws Exception {
+ byte output[] = new byte[100];
+ bsis.mark(0);
+ int count = bsis.read(output, 0, expected.length());
+ Assert.assertEquals(new String(output, 0, count), expected);
+ Assert.assertEquals(count, expected.length());
+
+ count = bsis.read(output, 0, 0);
+ Assert.assertEquals(count, -1);
+ }
+
+ @Test
+ public void ByteArrayReadStateIsReadTest() throws Exception {
+ byte output[] = new byte[200];
+ for(int i = 0; i < 2; ++i) {
+ bsis.mark(0);
+ bsis.read(output, 0, 100);
+ Assert.assertEquals(new String(output, 0, expected.length()), expected);
+
+ bsis.reset();
+ bsis.read(output, 0, output.length);
+ Assert.assertEquals(new String(output, 0, expected.length()), expected);
+ bsis = new BufferedServletInputStream(new ByteArrayInputStream(output));
+ if(i == 0) {
+ output = new byte[200];
+ }
+ }
+
+ Assert.assertEquals(new String(output, 0, expected.length()), expected);
+ }
+
+ @Test
+ public void ByteArrayReadStateIsNoneTest() throws Exception {
+ byte output[] = new byte[100];
+ bsis.mark(0);
+
+ Field state_field = BufferedServletInputStream.class.getDeclaredField("state");
+ state_field.setAccessible(true);
+ state_field.setInt(bsis, 0); // state == NONE
+
+ int count = bsis.read(output, 0, 100);
+ Assert.assertEquals(count, -1);
+ }
+
+ @Test
+ public void skipTest() throws Exception {
+ byte output[] = new byte[100];
+ bsis.mark(0);
+ bsis.read(output, 0, 10);
+ long count = bsis.skip(200);
+ // skip returns the number left _before_ skipping. that number starts at 256
+ Assert.assertEquals(count, 246);
+
+ count = bsis.skip(200);
+ Assert.assertEquals(count, 17);
+ }
+
+ @Test
+ public void availableTest() throws Exception {
+ int count = bsis.available();
+ Assert.assertEquals(count, 27);
+ bsis.mark(0);
+ count = bsis.available();
+ Assert.assertEquals(count, 27);
+ }
+
+ @Test
+ public void bufferedTest() throws Exception {
+ bsis.mark(0);
+ Assert.assertEquals(bsis.buffered(), 0);
+ }
+
+ @Test
+ public void closeTest() throws Exception {
+ Field capacitor_field = BufferedServletInputStream.class.getDeclaredField("capacitor");
+ capacitor_field.setAccessible(true);
+ bsis.mark(0);
+ Assert.assertNotNull(capacitor_field.get(bsis));
+ bsis.close();
+ Assert.assertNull(capacitor_field.get(bsis));
+ }
+
+ @Test
+ public void markTest() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
+ Field state_field = BufferedServletInputStream.class.getDeclaredField("state");
+ Field capacitor_field = BufferedServletInputStream.class.getDeclaredField("capacitor");
+ capacitor_field.setAccessible(true);
+ state_field.setAccessible(true);
+
+ // capacitor is null initially
+ Assert.assertNull(capacitor_field.get(bsis));
+
+ state_field.setInt(bsis, 0); // state == NONE
+ bsis.mark(0); // the value passed into mark is ignored
+ Assert.assertNotNull(capacitor_field.get(bsis));
+ Assert.assertEquals(state_field.get(bsis), 1); // state == STORE
+
+ state_field.setInt(bsis, 1); // state == STORE
+ bsis.mark(0); // the value passed into mark is ignored
+ Assert.assertEquals(state_field.get(bsis), 1); // state == STORE
+
+ state_field.setInt(bsis, 2); // state == READ
+ bsis.mark(0); // the value passed into mark is ignored
+ Assert.assertEquals(state_field.get(bsis), 1); // state == STORE
+ }
+
+ @Test
+ public void resetTest() throws Exception {
+ Field state_field = BufferedServletInputStream.class.getDeclaredField("state");
+ state_field.setAccessible(true);
+
+ bsis.mark(0);
+ Assert.assertEquals(state_field.get(bsis), 1); // state == STORE
+ bsis.reset();
+ Assert.assertEquals(state_field.get(bsis), 2); // state == READ
+ bsis.reset();
+ Assert.assertEquals(state_field.get(bsis), 2); // state == READ
+
+ state_field.setInt(bsis, -1); // state is invalid
+ bsis.reset(); // This call does nothing. It is for coverage alone
+ Assert.assertEquals(state_field.get(bsis), -1); // state doesn't change
+
+ try {
+ state_field.setInt(bsis, 0); // state == NONE
+ bsis.reset();
+ } catch (IOException e) {
+ Assert.assertEquals(e.getMessage(), "InputStream has not been marked");
+ }
+ }
+
+ @Test
+ public void markSupportedTest() {
+ Assert.assertTrue(bsis.markSupported());
+ }
+
+ // "Bug" 4/22/2013
+ // Some XML code expects Buffered InputStream can never return 0... This isn't actually true, but we'll accommodate as far
+ // as we can.
+ // Here, we make sure we set and read the Buffered data, making sure the buffer is empty on the last test...
+ @Test
+ public void issue04_22_2013() throws IOException {
+ String testString = "We want to read in and get out with a Buffered Stream seamlessly.";
+ ByteArrayInputStream bais = new ByteArrayInputStream(testString.getBytes());
+ BufferedServletInputStream bsis = new BufferedServletInputStream(bais);
+ try {
+ bsis.mark(0);
+ byte aa[] = new byte[testString.length()]; // 65 count... important for our test (divisible by 5);
+
+ int read;
+ for(int i=0;i<aa.length;i+=5) {
+ read = bsis.read(aa, i, 5);
+ assertEquals(5,read);
+ }
+ // System.out.println(new String(aa));
+
+ bsis.reset();
+
+ byte bb[] = new byte[aa.length];
+ read = 0;
+ for(int i=0;read>=0;i+=read) {
+ read = bsis.read(bb,i,5);
+ switch(i) {
+ case 65:
+ assertEquals(read,-1);
+ break;
+ default:
+ assertEquals(read,5);
+ }
+ }
+ // System.out.println(new String(bb));
+ assertEquals(testString,new String(aa));
+ assertEquals(testString,new String(bb));
+
+ } finally {
+ bsis.close();
+ bais.close();
+ }
+
+ }
+
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CadiExceptionTest.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CadiExceptionTest.java
new file mode 100644
index 00000000..03b20375
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CadiExceptionTest.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.CadiException;
+
+import static org.hamcrest.CoreMatchers.is;
+
+public class JU_CadiExceptionTest {
+ @Test
+ public void testCadiException() {
+ CadiException exception = new CadiException();
+
+ assertNotNull(exception);
+ }
+
+ @Test
+ public void testCadiExceptionString() {
+ CadiException exception = new CadiException("New Exception");
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("New Exception"));
+ }
+
+ @Test
+ public void testCadiExceptionThrowable() {
+ CadiException exception = new CadiException(new Throwable("New Exception"));
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("java.lang.Throwable: New Exception"));
+ }
+
+ @Test
+ public void testCadiExceptionStringThrowable() {
+ CadiException exception = new CadiException("New Exception",new Throwable("New Exception"));
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("New Exception"));
+
+ }
+
+ @Test
+ public void testCadiException1() {
+ CadiException exception = new CadiException();
+
+ assertNotNull(exception);
+ }
+
+ @Test
+ public void testCadiExceptionString1() {
+ CadiException exception = new CadiException("New Exception");
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("New Exception"));
+ }
+
+ @Test
+ public void testCadiExceptionThrowable1() {
+ CadiException exception = new CadiException(new Throwable("New Exception"));
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("java.lang.Throwable: New Exception"));
+ }
+
+ @Test
+ public void testCadiExceptionStringThrowable1() {
+ CadiException exception = new CadiException("New Exception",new Throwable("New Exception"));
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("New Exception"));
+
+ }
+
+ @Test
+ public void testCadiException2() {
+ CadiException exception = new CadiException();
+
+ assertNotNull(exception);
+ }
+
+ @Test
+ public void testCadiExceptionString2() {
+ CadiException exception = new CadiException("New Exception");
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("New Exception"));
+ }
+
+ @Test
+ public void testCadiExceptionThrowable2() {
+ CadiException exception = new CadiException(new Throwable("New Exception"));
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("java.lang.Throwable: New Exception"));
+ }
+
+ @Test
+ public void testCadiExceptionStringThrowable2() {
+ CadiException exception = new CadiException("New Exception",new Throwable("New Exception"));
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("New Exception"));
+
+ }
+
+
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CadiWrapTest.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CadiWrapTest.java
new file mode 100644
index 00000000..14b2999a
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CadiWrapTest.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.isA;
+import static org.mockito.Mockito.when;
+
+import java.security.Principal;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.aaf.cadi.Access;
+import org.onap.aaf.cadi.CachingLur;
+import org.onap.aaf.cadi.CadiException;
+import org.onap.aaf.cadi.CadiWrap;
+import org.onap.aaf.cadi.Lur;
+import org.onap.aaf.cadi.Permission;
+import org.onap.aaf.cadi.PropAccess;
+import org.onap.aaf.cadi.User;
+import org.onap.aaf.cadi.CachedPrincipal.Resp;
+import org.onap.aaf.cadi.filter.MapPermConverter;
+import org.onap.aaf.cadi.lur.EpiLur;
+import org.onap.aaf.cadi.principal.TaggedPrincipal;
+import org.onap.aaf.cadi.taf.TafResp;
+
+public class JU_CadiWrapTest {
+
+ @Mock
+ private HttpServletRequest request;
+
+ @Mock
+ private TafResp tafResp;
+
+ @Mock
+ private TaggedPrincipal principle;
+
+ @Mock
+ private Lur lur;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ public void testInstantiate() throws CadiException {
+ Access a = new PropAccess();
+ when(tafResp.getAccess()).thenReturn(a);
+
+ lur.fishAll(isA(Principal.class), isA(List.class));
+
+ EpiLur lur1 = new EpiLur(lur);
+
+ CadiWrap wrap = new CadiWrap(request, tafResp, lur1);
+
+ assertNull(wrap.getUserPrincipal());
+ assertNull(wrap.getRemoteUser());
+ assertNull(wrap.getUser());
+ assertEquals(wrap.getPermissions(principle).size(), 0);
+ assertTrue(wrap.access() instanceof PropAccess);
+
+ byte[] arr = {'1','2'};
+ wrap.setCred(arr);
+
+ assertEquals(arr, wrap.getCred());
+
+ wrap.setUser("User1");
+ assertEquals("User1", wrap.getUser());
+
+ wrap.invalidate("1");
+
+ assertFalse(wrap.isUserInRole(null));
+
+ wrap.set(tafResp, lur);
+
+ wrap.invalidate("2");
+
+ wrap.isUserInRole("User1");
+ }
+
+ @Test
+ public void testInstantiateWithPermConverter() throws CadiException {
+ Access a = new PropAccess();
+ when(tafResp.getAccess()).thenReturn(a);
+ when(tafResp.getPrincipal()).thenReturn(principle);
+
+ // Anonymous object for testing purposes
+ CachingLur<Permission> lur1 = new CachingLur<Permission>() {
+ @Override public Permission createPerm(String p) { return null; }
+ @Override public boolean fish(Principal bait, Permission pond) { return true; }
+ @Override public void fishAll(Principal bait, List<Permission> permissions) { }
+ @Override public void destroy() { }
+ @Override public boolean handlesExclusively(Permission pond) { return false; }
+ @Override public boolean handles(Principal principal) { return false; }
+ @Override public void remove(String user) { }
+ @Override public Resp reload(User<Permission> user) { return null; }
+ @Override public void setDebug(String commaDelimIDsOrNull) { }
+ @Override public void clear(Principal p, StringBuilder sb) { }
+ };
+
+ MapPermConverter pc = new MapPermConverter();
+
+ CadiWrap wrap = new CadiWrap(request, tafResp, lur1, pc);
+
+ assertNotNull(wrap.getUserPrincipal());
+ assertNull(wrap.getRemoteUser());
+ assertNull(wrap.getUser());
+
+ byte[] arr = {'1','2'};
+ wrap.setCred(arr);
+
+ assertEquals(arr, wrap.getCred());
+
+ wrap.setUser("User1");
+ assertEquals("User1", wrap.getUser());
+
+ wrap.invalidate("1");
+ wrap.setPermConverter(new MapPermConverter());
+
+ assertTrue(wrap.getLur() instanceof CachingLur);
+ assertTrue(wrap.isUserInRole("User1"));
+
+ wrap.set(tafResp, lur);
+ assertFalse(wrap.isUserInRole("Perm1"));
+ }
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Capacitor.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Capacitor.java
new file mode 100644
index 00000000..e9bceccd
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Capacitor.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.aaf.cadi.Capacitor;
+
+import java.lang.reflect.*;
+
+public class JU_Capacitor {
+ private Capacitor cap;
+ public final static String TEST_DATA =
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +
+ "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" +
+ "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" +
+ "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" +
+ "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" +
+ "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
+
+ @Before
+ public void setup() {
+ cap = new Capacitor();
+ }
+
+ @Test
+ public void singleByteTest() throws Exception {
+ assertEquals(cap.read(), -1);
+ cap.setForRead();
+ Field curr_field = Capacitor.class.getDeclaredField("curr");
+ curr_field.setAccessible(true);
+ Field idx_field = Capacitor.class.getDeclaredField("idx");
+ idx_field.setAccessible(true);
+ assertNull(curr_field.get(cap));
+ assertEquals(idx_field.get(cap), 0);
+
+ for(int iter = 0; iter < 20; ++iter) {
+ for(int i = 0; i < 20; ++i) {
+ cap.put((byte)('a' + i));
+ }
+ cap.setForRead();
+ byte[] array = new byte[20];
+ for(int i = 0; i < 20; ++i) {
+ array[i]=(byte)cap.read();
+ }
+ assertEquals("abcdefghijklmnopqrst", new String(array));
+ assertEquals(-1, cap.read());
+
+ cap.done();
+ }
+
+ for(int i = 0; i < 500; i++) {
+ cap.put((byte)'a');
+ }
+ cap.setForRead();
+ byte[] array = new byte[500];
+ for(int i = 0; i < 500; ++i) {
+ array[i]=(byte)cap.read();
+ }
+ assertEquals((new String(array)).length(), 500);
+ assertEquals(-1, cap.read());
+ }
+
+ @Test
+ public void availableTest() {
+ assertEquals(cap.available(), 0);
+ for(int i = 0; i < 100; ++i) {
+ cap.put((byte)'a');
+ }
+ // The Capacitor can hold 256 bytes. After reading 100 bytes,
+ // it should have 156 available
+ assertEquals(cap.available(), 156);
+ }
+
+ @Test
+ public void byteArrayTest() {
+ byte[] arrayA = TEST_DATA.getBytes();
+ assertEquals(cap.read(arrayA, 0, arrayA.length), -1);
+
+ cap.put(arrayA, 0, arrayA.length);
+
+ byte[] arrayB = new byte[arrayA.length];
+ cap.setForRead();
+ assertEquals(arrayA.length, cap.read(arrayB, 0, arrayB.length));
+ assertEquals(TEST_DATA, new String(arrayB));
+ assertEquals(-1, cap.read());
+ cap.done();
+
+ String b = "This is some content that we want to read";
+ byte[] a = b.getBytes();
+ byte[] c = new byte[b.length()]; // we want to use this to test reading offsets, etc
+
+ for(int i = 0; i < a.length; i += 11) {
+ cap.put(a, i, Math.min(11, a.length-i));
+ }
+ cap.reset();
+ int read;
+ for(int i = 0; i < c.length; i += read) {
+ read = cap.read(c, i, Math.min(3, c.length-i));
+ }
+ assertEquals(b, new String(c));
+ }
+
+ @Test
+ public void resetTest() throws Exception {
+ cap.reset();
+ Field curr_field = Capacitor.class.getDeclaredField("curr");
+ curr_field.setAccessible(true);
+ Field idx_field = Capacitor.class.getDeclaredField("idx");
+ idx_field.setAccessible(true);
+ assertNull(curr_field.get(cap));
+ assertEquals(idx_field.get(cap), 0);
+
+ cap.put((byte)'a');
+ cap.reset();
+ assertNotNull(curr_field.get(cap));
+ assertEquals(idx_field.get(cap), 1);
+ }
+
+ @Test
+ public void skipTest() throws Exception {
+ // capacitor can't skip if nothing has been put into it
+ assertEquals(cap.skip(10), 0);
+ cap.put((byte)'a');
+ // The Capacitor can hold 256 bytes. If we try to skip 100 bytes,
+ // it should only skip 1 byte, leaving 255 remaining
+ assertEquals(cap.skip(100), 255);
+
+ // Skipping 200 bytes leaves 0 remaining
+ assertEquals(cap.skip(200), 0);
+ }
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CmdLine.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CmdLine.java
new file mode 100644
index 00000000..5da67ce0
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_CmdLine.java
@@ -0,0 +1,273 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.mockito.Matchers.*;
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+import org.mockito.*;
+import static org.mockito.Mockito.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Properties;
+
+import org.onap.aaf.cadi.CmdLine;
+import org.onap.aaf.cadi.PropAccess;
+import org.onap.aaf.cadi.Symm;
+
+public class JU_CmdLine {
+
+ @Mock
+ private OutputStream thrower;
+
+ private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
+
+ private String password;
+ private String keyfile;
+ private String quickBrownFoxPlain = "The quick brown fox jumps over the lazy dog";
+ private String quickBrownFoxMD5 = "0x9e107d9d372bb6826bd81d3542a419d6";
+ private String quickBrownFoxSHA256 = "0xd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592";
+ private Symm symm;
+
+ @Before
+ public void setup() throws Exception {
+ MockitoAnnotations.initMocks(this);
+
+ System.setOut(new PrintStream(outContent));
+
+ Properties p = new Properties();
+ p.setProperty("force_exit", "false");
+
+ CmdLine.access = new PropAccess(p);
+
+ password = "password";
+ keyfile = "test/keyfile";
+
+ FileInputStream fis = new FileInputStream(keyfile);
+ try {
+ symm = Symm.obtain(fis);
+ } finally {
+ fis.close();
+ }
+ }
+
+ @After
+ public void restoreStreams() throws IOException {
+ System.setOut(System.out);
+ System.setIn(System.in);
+ }
+
+ @Test
+ public void digestTest() throws Exception {
+ CmdLine.main(new String[]{"digest", password, keyfile});
+ String decrypted = symm.depass(outContent.toString());
+ assertThat(decrypted, is(password));
+
+ System.setIn(new ByteArrayInputStream(password.getBytes()));
+ CmdLine.main(new String[]{"digest", "-i", keyfile});
+ decrypted = symm.depass(outContent.toString());
+ assertThat(decrypted, is(password));
+ }
+
+ @Test
+ public void regurgitateTest() {
+ // TODO: We may still want to remove the regurgitate functionality
+ // from the CmdLine - Ian
+ fail("Tests not yet implemented");
+ }
+
+ @Test
+ public void encode64Test() throws Exception {
+ CmdLine.main(new String[]{"encode64", password});
+ String decrypted = Symm.base64.decode(outContent.toString());
+ assertThat(decrypted, is(password));
+ }
+
+ @Test
+ public void decode64Test() throws Exception {
+ String encrypted = Symm.base64.encode(password);
+ CmdLine.main(new String[]{"decode64", encrypted});
+ assertThat(outContent.toString(), is(password + "\n"));
+ }
+
+ @Test
+ public void encode64urlTest() throws Exception {
+ CmdLine.main(new String[]{"encode64url", password});
+ String decrypted = Symm.base64url.decode(outContent.toString());
+ assertThat(decrypted, is(password));
+ }
+
+ @Test
+ public void decode64urlTest() throws Exception {
+ String encrypted = Symm.base64url.encode(password);
+ CmdLine.main(new String[]{"decode64url", encrypted});
+ assertThat(outContent.toString(), is(password + "\n"));
+ }
+
+ @Test
+ public void md5Test() throws Exception {
+ CmdLine.main(new String[]{"md5", quickBrownFoxPlain});
+ assertThat(outContent.toString(), is(quickBrownFoxMD5 + "\n"));
+ }
+
+ @Test
+ public void sha256Test() throws Exception {
+ CmdLine.main(new String[]{"sha256", quickBrownFoxPlain});
+ assertThat(outContent.toString(), is(quickBrownFoxSHA256 + "\n"));
+
+ outContent.reset();
+ CmdLine.main(new String[]{"sha256", quickBrownFoxPlain, "10"});
+ String hash1 = outContent.toString();
+
+ outContent.reset();
+ CmdLine.main(new String[]{"sha256", quickBrownFoxPlain, "10"});
+ String hash2 = outContent.toString();
+
+ outContent.reset();
+ CmdLine.main(new String[]{"sha256", quickBrownFoxPlain, "11"});
+ String hash3 = outContent.toString();
+
+ assertThat(hash1, is(hash2));
+ assertThat(hash1, is(not(hash3)));
+ }
+
+ @Test
+ public void keygenTest() throws Exception {
+ CmdLine.main(new String[]{"keygen"});
+ assertThat(outContent.toString().length(), is(2074));
+
+ String filePath = "test/output_key";
+ CmdLine.main(new String[]{"keygen", filePath});
+ File keyfile = new File(filePath);
+ assertTrue(Files.isReadable(Paths.get(filePath)));
+ assertFalse(Files.isWritable(Paths.get(filePath)));
+ assertFalse(Files.isExecutable(Paths.get(filePath)));
+ keyfile.delete();
+ }
+
+ @Test
+ public void passgenTest() throws Exception {
+ CmdLine.main(new String[]{"passgen"});
+ String output = outContent.toString().trim();
+ assertThat(output.length(), is(24));
+ assertTrue(containsAny(output, "+!@#$%^&*(){}[]?:;,."));
+ assertTrue(containsAny(output, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
+ assertTrue(containsAny(output, "abcdefghijklmnopqrstuvwxyz"));
+ assertTrue(containsAny(output, "0123456789"));
+
+ int length = 10;
+ outContent.reset();
+ CmdLine.main(new String[]{"passgen", String.valueOf(length)});
+ output = outContent.toString().trim();
+ assertThat(output.length(), is(length));
+
+ length = 5;
+ outContent.reset();
+ CmdLine.main(new String[]{"passgen", String.valueOf(length)});
+ output = outContent.toString().trim();
+ assertThat(output.length(), is(8));
+
+ // Check that the custom hasRepeats method works
+ assertTrue(hasRepeats("aa"));
+ assertTrue(hasRepeats("baa"));
+ assertTrue(hasRepeats("aab"));
+ assertTrue(hasRepeats("baab"));
+ assertFalse(hasRepeats("abc"));
+ assertFalse(hasRepeats("aba"));
+
+ // Run this a bunch of times for coverage
+ for (int i = 0; i < 1000; i++) {
+ outContent.reset();
+ CmdLine.main(new String[]{"passgen"});
+ output = outContent.toString().trim();
+ assertFalse(hasRepeats(output));
+ }
+ }
+
+ @Test
+ public void urlgenTest() throws Exception {
+ CmdLine.main(new String[]{"urlgen"});
+ String output = outContent.toString().trim();
+ assertThat(output.length(), is(24));
+
+ int length = 5;
+ outContent.reset();
+ CmdLine.main(new String[]{"urlgen", String.valueOf(length)});
+ output = outContent.toString().trim();
+ assertThat(output.length(), is(5));
+ }
+
+ @Test
+ public void showHelpTest() {
+ String expected =
+ "Usage: java -jar <this jar> ...\n" +
+ " keygen [<keyfile>] (Generates Key on file, or Std Out)\n" +
+ " digest [<passwd>|-i|] <keyfile> (Encrypts Password with \"keyfile\"\n" +
+ " if passwd = -i, will read StdIin\n" +
+ " if passwd is blank, will ask securely)\n" +
+ " passgen <digits> (Generate Password of given size)\n" +
+ " urlgen <digits> (Generate URL field of given size)\n" +
+ " csptest (Tests for CSP compatibility)\n" +
+ " encode64 <your text> (Encodes to Base64)\n" +
+ " decode64 <base64 encoded text> (Decodes from Base64)\n" +
+ " encode64url <your text> (Encodes to Base64 URL charset)\n" +
+ " decode64url <base64url encoded text> (Decodes from Base64 URL charset)\n" +
+ " sha256 <text> <salts(s)> (Digest String into SHA256 Hash)\n" +
+ " md5 <text> (Digest String into MD5 Hash)\n";
+
+ CmdLine.main(new String[]{});
+
+ assertThat(outContent.toString(), is(expected));
+ }
+
+ private boolean containsAny(String str, String searchChars) {
+ for (char c : searchChars.toCharArray()) {
+ if (str.indexOf(c) >= 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean hasRepeats(String str) {
+ int c = -1;
+ int last;
+ for (int i = 0; i < str.length(); i++) {
+ last = c;
+ c = str.charAt(i);
+ if (c == last) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Hash.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Hash.java
new file mode 100644
index 00000000..f5c4d872
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Hash.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.CadiException;
+import org.onap.aaf.cadi.Hash;
+
+import static org.junit.Assert.*;
+
+import org.junit.BeforeClass;
+
+import static org.hamcrest.CoreMatchers.*;
+
+public class JU_Hash {
+ // Some common test vectors
+ private String quickBrownFoxVector = "The quick brown fox jumps over the lazy dog";
+ private String quickBrownFoxMD5 = "0x9e107d9d372bb6826bd81d3542a419d6";
+ private String quickBrownFoxSHA256 = "0xd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592";
+
+ private String emptyVector = "";
+ private String emptyMD5 = "0xd41d8cd98f00b204e9800998ecf8427e";
+ private String emptySHA256 = "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
+
+
+ private byte[] same1 = "this is a twin".getBytes();
+ private byte[] same2 = "this is a twin".getBytes();
+ private byte[] different1 = "guvf vf n gjva".getBytes();
+ private byte[] different2 = "this is an only child".getBytes();
+
+
+ private String uppersDec = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ private String uppersHex1 = "0x4142434445464748494A4B4C4D4E4F505152535455565758595A";
+ private String uppersHex2 = "0x4142434445464748494a4b4c4d4e4f505152535455565758595a";
+ private String uppersHexNo0x1 = "4142434445464748494a4b4c4d4e4f505152535455565758595a";
+ private String uppersHexNo0x2 = "4142434445464748494A4B4C4D4E4F505152535455565758595A";
+
+ private String lowersDec = "abcdefghijklmnopqrstuvwxyz";
+ private String lowersHex = "0x6162636465666768696a6b6c6d6e6f707172737475767778797a";
+ private String lowersHexNo0x1 = "6162636465666768696a6b6c6d6e6f707172737475767778797a";
+ private String lowersHexNo0x2 = "6162636465666768696A6B6C6D6E6F707172737475767778797A";
+
+ private String numbersDec = "1234567890";
+ private String numbersHex = "0x31323334353637383930";
+ private String numbersHexNo0x = "31323334353637383930";
+
+ @SuppressWarnings("unused")
+ @BeforeClass
+ public static void getCoverage() {
+ // All of this class's methods are static, so we never need to instantiate an object.
+ // That said, we can't get 100% coverage unless we instantiate one
+ Hash hash = new Hash();
+ }
+
+ @Test
+ public void hashMD5Test() throws Exception {
+ byte[] output = Hash.hashMD5(quickBrownFoxVector.getBytes());
+ assertEquals(quickBrownFoxMD5, new String(Hash.toHex(output)));
+
+ output = Hash.hashMD5(emptyVector.getBytes());
+ assertEquals(emptyMD5, new String(Hash.toHex(output)));
+ }
+
+ @Test
+ public void hashMD5WithOffsetTest() throws Exception {
+ byte[] output = Hash.hashMD5(quickBrownFoxVector.getBytes(), 0, quickBrownFoxVector.length());
+ assertEquals(quickBrownFoxMD5, new String(Hash.toHex(output)));
+
+ output = Hash.hashMD5(emptyVector.getBytes(), 0, emptyVector.length());
+ assertEquals(emptyMD5, new String(Hash.toHex(output)));
+ }
+
+ @Test
+ public void hashMD5AsStringHexTest() throws Exception {
+ String output = Hash.hashMD5asStringHex(quickBrownFoxVector);
+ assertEquals(quickBrownFoxMD5, output);
+
+ output = Hash.hashMD5asStringHex(emptyVector);
+ assertEquals(emptyMD5, output);
+ }
+
+ @Test
+ public void hashSHA256Test() throws Exception {
+ byte[] output = Hash.hashSHA256(quickBrownFoxVector.getBytes());
+ assertEquals(quickBrownFoxSHA256, new String(Hash.toHex(output)));
+
+ output = Hash.hashSHA256(emptyVector.getBytes());
+ assertEquals(emptySHA256, new String(Hash.toHex(output)));
+ }
+
+ @Test
+ public void hashSHA256WithOffsetTest() throws Exception {
+ byte[] output = Hash.hashSHA256(quickBrownFoxVector.getBytes(), 0, quickBrownFoxVector.length());
+ assertEquals(quickBrownFoxSHA256, new String(Hash.toHex(output)));
+
+ output = Hash.hashSHA256(emptyVector.getBytes(), 0, emptyVector.length());
+ assertEquals(emptySHA256, new String(Hash.toHex(output)));
+ }
+
+ @Test
+ public void hashSHA256AsStringHexTest() throws Exception {
+ String output = Hash.hashSHA256asStringHex(quickBrownFoxVector);
+ assertEquals(quickBrownFoxSHA256, output);
+
+ output = Hash.hashSHA256asStringHex(emptyVector);
+ assertEquals(emptySHA256, output);
+ }
+
+ @Test
+ public void hashSaltySHA256AsStringHexTest() throws Exception {
+ String input = "password";
+ String hash1 = Hash.hashSHA256asStringHex(input, 10);
+ String hash2 = Hash.hashSHA256asStringHex(input, 10);
+ String hash3 = Hash.hashSHA256asStringHex(input, 11);
+
+ assertEquals(hash1, hash2);
+ assertThat(hash1, not(equalTo(hash3)));
+ }
+
+ @Test
+ public void isEqualTest() throws Exception {
+ assertTrue(Hash.isEqual(same1, same2));
+ assertFalse(Hash.isEqual(same1, different1));
+ assertFalse(Hash.isEqual(same1, different2));
+ }
+
+ @Test
+ public void compareToTest() throws Exception {
+ assertEquals(0, Hash.compareTo(same1, same2));
+ // different1 is rot13(same1), so the difference should be 13
+ assertEquals(13, Hash.compareTo(same1, different1));
+ assertEquals(-78, Hash.compareTo(same1, different2));
+ }
+
+ @Test
+ public void toHexNo0xTest() throws Exception {
+ assertEquals(uppersHexNo0x1, Hash.toHexNo0x(uppersDec.getBytes()));
+ assertEquals(lowersHexNo0x1, Hash.toHexNo0x(lowersDec.getBytes()));
+ assertEquals(numbersHexNo0x, Hash.toHexNo0x(numbersDec.getBytes()));
+ }
+
+ @Test
+ public void toHexTest() throws Exception {
+ assertEquals(uppersHex2, Hash.toHex(uppersDec.getBytes()));
+ assertEquals(lowersHex, Hash.toHex(lowersDec.getBytes()));
+ assertEquals(numbersHex, Hash.toHex(numbersDec.getBytes()));
+ }
+
+ @Test
+ public void toHexWithOffset() throws Exception {
+ assertEquals(uppersHex2, Hash.toHex(uppersDec.getBytes(), 0, uppersDec.length()));
+ assertEquals(lowersHex, Hash.toHex(lowersDec.getBytes(), 0, lowersDec.length()));
+ assertEquals(numbersHex, Hash.toHex(numbersDec.getBytes(), 0, numbersDec.length()));
+ }
+
+ @Test
+ public void fromHexTest() throws Exception {
+ assertEquals(uppersDec, new String(Hash.fromHex(uppersHex1)));
+ assertEquals(lowersDec, new String(Hash.fromHex(lowersHex)));
+ assertEquals(numbersDec, new String(Hash.fromHex(numbersHex)));
+
+ try {
+ // This string doesn't begin with "0x"
+ Hash.fromHex("0X65");
+ fail("Should have thrown CadiException");
+ } catch (CadiException e) {
+ assertEquals("HexString must start with \"0x\"", e.getMessage());
+ }
+
+ try {
+ // This string has invalid hex characters
+ Hash.fromHex("0xQ");
+ fail("Should have thrown CadiException");
+ } catch (CadiException e) {
+ // 81 is dec(Q)
+ assertEquals("Invalid char '81' in HexString", e.getMessage());
+ }
+ }
+
+ @Test
+ public void fromHexNo0xTest() throws Exception {
+ assertEquals(uppersDec, new String(Hash.fromHexNo0x(uppersHexNo0x1)));
+ assertEquals(lowersDec, new String(Hash.fromHexNo0x(lowersHexNo0x1)));
+ assertEquals(uppersDec, new String(Hash.fromHexNo0x(uppersHexNo0x2)));
+ assertEquals(lowersDec, new String(Hash.fromHexNo0x(lowersHexNo0x2)));
+ assertEquals(numbersDec, new String(Hash.fromHexNo0x(numbersHexNo0x)));
+ byte[] output = Hash.fromHexNo0x("ABC");
+ assertEquals(new String(new byte[] {(byte)0x0A, (byte)0xB0}), new String(output));
+ assertNull(Hash.fromHexNo0x("~~"));
+ }
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_LocatorException.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_LocatorException.java
new file mode 100644
index 00000000..96cf8e51
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_LocatorException.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.LocatorException;
+
+import static org.hamcrest.CoreMatchers.is;
+
+public class JU_LocatorException {
+ @Test
+ public void stringTest() {
+ LocatorException exception = new LocatorException("New Exception");
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("New Exception"));
+ }
+
+ @Test
+ public void throwableTest() {
+ LocatorException exception = new LocatorException(new Throwable("New Exception"));
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("java.lang.Throwable: New Exception"));
+ }
+
+ @Test
+ public void stringThrowableTest() {
+ LocatorException exception = new LocatorException("New Exception",new Throwable("New Exception"));
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("New Exception"));
+ }
+
+ @Test
+ public void characterSequenceTest() {
+ CharSequence testCS = new String("New Exception");
+ LocatorException exception = new LocatorException(testCS);
+ assertNotNull(exception);
+ assertThat(exception.getMessage(), is("New Exception"));
+ }
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_PropAccess.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_PropAccess.java
new file mode 100644
index 00000000..d74648a4
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_PropAccess.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+import org.onap.aaf.cadi.PropAccess;
+import org.onap.aaf.cadi.Access.Level;
+import org.onap.aaf.cadi.PropAccess.LogIt;
+
+import static org.mockito.Mockito.*;
+import static org.hamcrest.CoreMatchers.*;
+
+import java.lang.reflect.Field;
+
+import java.io.ByteArrayInputStream;
+import java.io.PrintStream;
+import java.util.Properties;
+
+@SuppressWarnings("unused")
+public class JU_PropAccess {
+ // Note: We can't actually get coverage of the protected constructor -
+ // that will be done later, when testing the child class "ServletContextAccess"
+
+
+ @Test
+ public void ConstructorTest() throws Exception {
+ PropAccess prop = new PropAccess();
+ assertThat(prop.getProperties(), is(not(nullValue())));
+ }
+
+ @Test
+ public void noPrintStreamConstructionTest() throws Exception {
+ // Test for coverage
+ PropAccess prop = new PropAccess((PrintStream)null, new String[]{"Invalid argument"});
+ }
+
+ @Test
+ public void noLogItConstructionTest() throws Exception {
+ // Test for coverage
+ PropAccess prop = new PropAccess((LogIt)null, new String[]{"Invalid argument"});
+ }
+
+ @Test
+ public void propertiesConstructionTest() throws Exception {
+ // Coverage tests
+ PropAccess prop = new PropAccess(System.getProperties());
+ prop = new PropAccess((PrintStream)null, System.getProperties());
+ }
+
+ @Test
+ public void stringConstructionTest() throws Exception {
+ Properties testSystemProps = new Properties(System.getProperties());
+ testSystemProps.setProperty("cadi_name", "user");
+ System.setProperties(testSystemProps);
+ PropAccess prop = new PropAccess("cadi_keyfile=test/keyfile", "cadi_loglevel=DEBUG", "cadi_prop_files=test/cadi.properties:not_a_file");
+ }
+
+ @Test
+ public void loadTest() throws Exception {
+ // Coverage tests
+ Properties props = mock(Properties.class);
+ when(props.getProperty("cadi_prop_files")).thenReturn("test/cadi.properties").thenReturn(null);
+ PropAccess pa = new PropAccess();
+ Field props_field = PropAccess.class.getDeclaredField("props");
+ props_field.setAccessible(true);
+ props_field.set(pa, props);
+ ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
+ pa.load(bais);
+ }
+
+ @Test
+ public void specialConversionsTest() throws Exception {
+ // Coverage tests
+ Properties testSystemProps = new Properties(System.getProperties());
+ testSystemProps.setProperty("java.specification.version", "1.7");
+ System.setProperties(testSystemProps);
+ PropAccess pa = new PropAccess("AFT_LATITUDE=1", "AFT_LONGITUDE=1", "cadi_protocols=TLSv1.2");
+ }
+
+ @Test
+ public void logTest() throws Exception {
+ // Coverage tests
+ PropAccess pa = new PropAccess();
+
+ pa.log(Level.DEBUG);
+ pa.printf(Level.DEBUG, "not a real format string");
+
+ pa.setLogLevel(Level.DEBUG);
+ pa.log(Level.DEBUG);
+ pa.log(Level.DEBUG, 1, " ", null, "");
+ pa.log(Level.DEBUG, "This is a string", "This is another");
+ pa.set(new LogIt() {
+ @Override public void push(Level level, Object ... elements) {}
+ });
+ try {
+ pa.log(new Exception("This exception was thrown intentionally, please ignore it"));
+ } catch(Exception e) {
+ fail("Should have thrown an exception");
+ }
+ }
+
+ @Test
+ public void classLoaderTest() {
+ PropAccess pa = new PropAccess();
+ assertThat(pa.classLoader(), instanceOf(ClassLoader.class));
+ }
+
+ @Test
+ public void encryptionTest() throws Exception {
+ PropAccess pa = new PropAccess();
+ String plainText = "This is a secret message";
+ String secret_message = pa.encrypt(plainText);
+ String modified = secret_message.substring(4);
+ // Plenty of assertions to hit all branches
+ assertThat(pa.decrypt(secret_message, false), is(plainText));
+ assertThat(pa.decrypt(null, false), is(nullValue()));
+ assertThat(pa.decrypt(modified, true), is(plainText));
+ assertThat(pa.decrypt(modified, false), is(modified));
+ }
+
+ @Test
+ public void setPropertyTest() {
+ PropAccess pa = new PropAccess();
+ pa.setProperty("test", null);
+ String prop = "New Property";
+ String val ="And it's faithful value";
+ pa.setProperty(prop, val);
+
+ assertThat(pa.getProperty(prop), is(val));
+ }
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_ServletContextAccess.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_ServletContextAccess.java
new file mode 100644
index 00000000..8531e1d1
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_ServletContextAccess.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.aaf.cadi.PropAccess;
+import org.onap.aaf.cadi.ServletContextAccess;
+import org.onap.aaf.cadi.Access.Level;
+import org.onap.aaf.cadi.PropAccess.LogIt;
+
+import static org.mockito.Mockito.*;
+import static org.hamcrest.CoreMatchers.*;
+
+import java.lang.reflect.Field;
+
+import java.io.ByteArrayInputStream;
+import java.io.PrintStream;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.StringTokenizer;
+
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+
+@SuppressWarnings("unused")
+public class JU_ServletContextAccess {
+
+ private FilterConfig filter_mock;
+ Enumeration<String> enumeration;
+
+ private class CustomEnumeration implements Enumeration<String> {
+ private int idx = 0;
+ private final String[] elements = {"This", "is", "a", "test"};
+ @Override
+ public String nextElement() {
+ return idx >= elements.length ? null : elements[idx++];
+ }
+ @Override
+ public boolean hasMoreElements() {
+ return idx < elements.length;
+ }
+ }
+
+ @Before
+ public void setup() {
+ enumeration = new CustomEnumeration();
+ filter_mock = mock(FilterConfig.class);
+ when(filter_mock.getInitParameterNames()).thenReturn(enumeration);
+ }
+
+ @Test
+ public void ConstructorTest() throws Exception {
+ ServletContextAccess sca = new ServletContextAccess(filter_mock);
+ }
+
+ @Test
+ public void logTest() throws Exception {
+ ServletContext sc_mock = mock(ServletContext.class);
+ when(filter_mock.getServletContext()).thenReturn(sc_mock);
+ ServletContextAccess sca = new ServletContextAccess(filter_mock);
+
+ sca.log(Level.DEBUG);
+
+ sca.setLogLevel(Level.DEBUG);
+ sca.log(Level.DEBUG);
+
+ try {
+ sca.log(new Exception("This exception was thrown intentionally, please ignore it"));
+ } catch(Exception e) {
+ fail("Should have thrown an exception");
+ }
+ }
+
+ @Test
+ public void contextTest() {
+ ServletContext sc_mock = mock(ServletContext.class);
+ when(filter_mock.getServletContext()).thenReturn(sc_mock);
+ ServletContextAccess sca = new ServletContextAccess(filter_mock);
+ assertThat(sca.context(), instanceOf(ServletContext.class));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Symm.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Symm.java
new file mode 100644
index 00000000..34f528f4
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_Symm.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.Arrays;
+
+import java.lang.reflect.*;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.aaf.cadi.CadiException;
+import org.onap.aaf.cadi.PropAccess;
+import org.onap.aaf.cadi.Symm;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+public class JU_Symm {
+ private Symm defaultSymm;
+
+ @Before
+ public void setup() throws Exception {
+ defaultSymm = new Symm(
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray()
+ ,76, "Use default!" ,true);
+ }
+
+ @Test
+ public void constructorTest() throws Exception {
+ Symm myCustomSymm = new Symm(
+ "ACEGIKMOQSUWYacegikmoqsuwy02468+/".toCharArray(), 76, "Default", true);
+ Field convert_field = Symm.class.getDeclaredField("convert");
+ convert_field.setAccessible(true);
+
+ Class<?> Unordered_class = Class.forName("org.onap.aaf.cadi.Symm$Unordered");
+ assertThat(convert_field.get(myCustomSymm), instanceOf(Unordered_class));
+ }
+
+ @SuppressWarnings("unused")
+ @Test
+ public void copyTest() throws Exception {
+ Symm copy = Symm.base64.copy(76);
+ }
+
+ @SuppressWarnings("deprecation")
+ @Test
+ public void deprecatedTest() {
+ assertEquals(Symm.base64(), Symm.base64);
+ assertEquals(Symm.base64noSplit(), Symm.base64noSplit);
+ assertEquals(Symm.base64url(), Symm.base64url);
+ assertEquals(Symm.baseCrypt(), Symm.encrypt);
+ }
+
+ @Test
+ public void encodeDecodeStringTest() throws Exception {
+ String orig = "hello";
+ String b64encrypted = Symm.base64.encode(orig);
+ assertEquals(Symm.base64.decode(b64encrypted), orig);
+
+ String defaultEnrypted = defaultSymm.encode(orig);
+ assertEquals(defaultSymm.decode(defaultEnrypted), orig);
+ }
+
+ @Test
+ public void encodeDecodeByteArrayTest() throws Exception {
+ String orig = "hello";
+ byte[] b64encrypted = Symm.base64.encode(orig.getBytes());
+ assertEquals(new String(Symm.base64.decode(b64encrypted)), orig);
+
+ byte[] empty = null;
+ assertTrue(Arrays.equals(Symm.base64.encode(empty), new byte[0]));
+ }
+
+ @Test
+ public void encodeDecodeStringToStreamTest() throws Exception {
+ String orig = "I'm a password, really";
+ String b64encrypted;
+ String output;
+
+ ByteArrayOutputStream baosEncrypt = new ByteArrayOutputStream();
+ Symm.base64.encode(orig, baosEncrypt);
+ b64encrypted = new String(baosEncrypt.toByteArray());
+
+ ByteArrayOutputStream baosDecrypt = new ByteArrayOutputStream();
+ Symm.base64.decode(b64encrypted, baosDecrypt);
+ output = new String(baosDecrypt.toByteArray());
+
+ assertEquals(orig, output);
+ }
+
+ @Test
+ public void encryptDecryptStreamWithPrefixTest() throws Exception {
+ String orig = "I'm a password, really";
+ byte[] b64encrypted;
+ String output;
+
+ byte[] prefix = "enc:".getBytes();
+
+ ByteArrayInputStream baisEncrypt = new ByteArrayInputStream(orig.getBytes());
+ ByteArrayOutputStream baosEncrypt = new ByteArrayOutputStream();
+ Symm.base64.encode(baisEncrypt, baosEncrypt, prefix);
+
+ b64encrypted = baosEncrypt.toByteArray();
+
+ ByteArrayInputStream baisDecrypt = new ByteArrayInputStream(b64encrypted);
+ ByteArrayOutputStream baosDecrypt = new ByteArrayOutputStream();
+ Symm.base64.decode(baisDecrypt, baosDecrypt, prefix.length);
+
+ output = new String(baosDecrypt.toByteArray());
+ assertEquals(orig, output);
+ }
+
+ @Test
+ public void randomGenTest() {
+ // Ian - There really isn't a great way to test for randomness...
+ String prev = null;
+ for (int i = 0; i < 10; i++) {
+ String current = Symm.randomGen(100);
+ if (current.equals(prev)) {
+ fail("I don't know how, but you generated the exact same random string twice in a row");
+ }
+ prev = current;
+ }
+ assertTrue(true);
+ }
+
+ @Test
+ public void obtainTest() throws Exception {
+ Symm symm = Symm.base64.obtain();
+
+ String orig ="Another Password, please";
+ String encrypted = symm.enpass(orig);
+ String decrypted = symm.depass(encrypted);
+ assertEquals(orig, decrypted);
+ }
+
+ @Test
+ public void InputStreamObtainTest() throws Exception {
+ byte[] keygen = Symm.keygen();
+
+ Symm symm = Symm.obtain(new ByteArrayInputStream(keygen));
+
+ String orig ="Another Password, please";
+ String encrypted = symm.enpass(orig);
+ String decrypted = symm.depass(encrypted);
+ assertEquals(orig, decrypted);
+ }
+
+ @Test
+ public void StringObtainTest() throws Exception {
+ byte[] keygen = Symm.keygen();
+
+ Symm symm = Symm.obtain(new String(keygen));
+
+ String orig ="Another Password, please";
+ String encrypted = symm.enpass(orig);
+ String decrypted = symm.depass(encrypted);
+ assertEquals(orig, decrypted);
+ }
+
+ @Test
+ public void AccessObtainTest() throws Exception {
+ PropAccess pa = new PropAccess("cadi_keyfile=test/keyfile");
+ Symm symm = Symm.obtain(pa);
+ String orig ="Another Password, please";
+ String encrypted = symm.enpass(orig);
+ String decrypted = symm.depass(encrypted);
+ assertEquals(orig, decrypted);
+
+ try {
+ PropAccess badPa = mock(PropAccess.class);
+ when(badPa.getProperty("cadi_keyfile", null)).thenReturn("not_a_real_file.txt");
+ symm = Symm.obtain(badPa);
+ fail("Should have thrown an exception");
+ } catch (CadiException e) {
+ assertTrue(e.getMessage().contains("ERROR: "));
+ assertTrue(e.getMessage().contains("not_a_real_file.txt"));
+ assertTrue(e.getMessage().contains(" does not exist!"));
+ }
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_TrustChecker.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_TrustChecker.java
new file mode 100644
index 00000000..511c6ee3
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_TrustChecker.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+
+import org.onap.aaf.cadi.TrustChecker;
+
+public class JU_TrustChecker {
+
+ @Test
+ public void noTrustTests() {
+ assertThat(TrustChecker.NOTRUST.mayTrust(null, null), is(nullValue()));
+ TrustChecker.NOTRUST.setLur(null);
+ }
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_User.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_User.java
new file mode 100644
index 00000000..25683249
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/JU_User.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.mockito.Mockito.when;
+
+import java.lang.reflect.Field;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Before;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.aaf.cadi.Permission;
+import org.onap.aaf.cadi.User;
+import org.onap.aaf.cadi.lur.LocalPermission;
+
+public class JU_User {
+
+ private final Long SECOND = 1000L;
+ private final String name = "Fakey McFake";
+ private final String cred = "Fake credentials";
+
+ private Field perms_field;
+ private Field count_field;
+
+ @Mock
+ private Principal principal;
+
+ @Mock
+ private LocalPermission permission;
+ @Mock
+ private LocalPermission permission2;
+
+ @Before
+ public void setup() throws NoSuchFieldException, SecurityException {
+ MockitoAnnotations.initMocks(this);
+
+ when(principal.getName()).thenReturn("Principal");
+
+ when(permission.getKey()).thenReturn("NewKey");
+ when(permission.match(permission)).thenReturn(true);
+
+ when(permission2.getKey()).thenReturn("NewKey2");
+ when(permission2.match(permission)).thenReturn(false);
+
+ perms_field = User.class.getDeclaredField("perms");
+ perms_field.setAccessible(true);
+
+ count_field = User.class.getDeclaredField("count");
+ count_field.setAccessible(true);
+ }
+
+ @Test
+ public void constructorPrincipalTest() throws IllegalArgumentException, IllegalAccessException {
+ User<Permission> user = new User<Permission>(principal);
+ assertThat(user.name, is(principal.getName()));
+ assertThat(user.principal, is(principal));
+ assertThat(user.permExpires(), is(Long.MAX_VALUE));
+ assertThat((int)count_field.get(user), is(0));
+ }
+
+ @Test
+ public void constructorNameCredTest() throws IllegalArgumentException, IllegalAccessException {
+ User<Permission> user = new User<Permission>(name, cred.getBytes());
+ assertThat(user.name, is(name));
+ assertThat(user.principal, is(nullValue()));
+ assertThat(user.permExpires(), is(Long.MAX_VALUE));
+ assertThat((int)count_field.get(user), is(0));
+ assertThat(user.getCred(), is(cred.getBytes()));
+ }
+
+ @Test
+ public void constructorPrincipalIntervalTest() throws IllegalArgumentException, IllegalAccessException {
+ User<Permission> user = new User<Permission>(principal, 61 * SECOND);
+ Long approxExpiration = System.currentTimeMillis() + 61 * SECOND;
+ assertThat(user.name, is(principal.getName()));
+ assertThat(user.principal, is(principal));
+ assertTrue(Math.abs(user.permExpires() - approxExpiration) < 10L);
+ assertThat((int)count_field.get(user), is(0));
+ }
+
+ @Test
+ public void constructorNameCredIntervalTest() throws IllegalArgumentException, IllegalAccessException {
+ String name = "Fakey McFake";
+ User<Permission> user = new User<Permission>(name, cred.getBytes(), 61 * SECOND);
+ Long approxExpiration = System.currentTimeMillis() + 61 * SECOND;
+ assertThat(user.name, is(name));
+ assertThat(user.principal, is(nullValue()));
+ assertTrue(Math.abs(user.permExpires() - approxExpiration) < 10L);
+ assertThat((int)count_field.get(user), is(0));
+ assertThat(user.getCred(), is(cred.getBytes()));
+ }
+
+ @Test
+ public void countCheckTest() throws IllegalArgumentException, IllegalAccessException {
+ User<Permission> user = new User<Permission>(principal);
+ user.resetCount();
+ assertThat((int)count_field.get(user), is(0));
+ user.incCount();
+ assertThat((int)count_field.get(user), is(1));
+ user.incCount();
+ assertThat((int)count_field.get(user), is(2));
+ user.resetCount();
+ assertThat((int)count_field.get(user), is(0));
+ }
+
+ @Test
+ public void permTest() throws InterruptedException, IllegalArgumentException, IllegalAccessException {
+ User<Permission> user = new User<Permission>(principal);
+ assertThat(user.permExpires(), is(Long.MAX_VALUE));
+ user.renewPerm();
+ Thread.sleep(1); // Let it expire
+ assertThat(user.permExpired(), is(true));
+
+ user = new User<Permission>(principal,100);
+ assertTrue(user.noPerms());
+ user.add(permission);
+ assertFalse(user.permsUnloaded());
+ assertFalse(user.noPerms());
+ user.setNoPerms();
+ assertThat(user.permExpired(), is(false));
+ assertTrue(user.permsUnloaded());
+ assertTrue(user.noPerms());
+ perms_field.set(user, null);
+ assertTrue(user.permsUnloaded());
+ assertTrue(user.noPerms());
+ }
+
+ @Test
+ public void addValuesToNewMapTest() {
+ User<Permission> user = new User<Permission>(principal);
+ Map<String, Permission> newMap = new HashMap<String,Permission>();
+
+ assertFalse(user.contains(permission));
+
+ user.add(newMap, permission);
+ user.setMap(newMap);
+
+ assertTrue(user.contains(permission));
+
+ List<Permission> sink = new ArrayList<Permission>();
+ user.copyPermsTo(sink);
+
+ assertThat(sink.size(), is(1));
+ assertTrue(sink.contains(permission));
+
+ assertThat(user.toString(), is("Principal|:NewKey"));
+
+ user.add(newMap, permission2);
+ user.setMap(newMap);
+ assertFalse(user.contains(permission2));
+
+ assertThat(user.toString(), is("Principal|:NewKey2,NewKey"));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/filter/JU_FCGetTest.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/filter/JU_FCGetTest.java
new file mode 100644
index 00000000..5aa9d79c
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/filter/JU_FCGetTest.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.filter;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.when;
+
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.aaf.cadi.PropAccess;
+
+public class JU_FCGetTest {
+
+ @Test
+ public void netYetTested() {
+ fail("Tests not yet implemented");
+ }
+
+// @Mock
+// private ServletContext context;
+
+// @Mock
+// private FilterConfig config;
+
+// @Mock
+// private PropAccess access = new PropAccess();
+
+// @Before
+// public void setUp() {
+// MockitoAnnotations.initMocks(this);
+// }
+
+// @Test
+// public void testGetStringFromDef() {
+// PropAccess access = new PropAccess();
+
+// FCGet fcGet = new FCGet(access, context, config);
+
+// String user = fcGet.get("user", "DefaultUser", true);
+
+// assertEquals(user, "DefaultUser");
+// }
+
+// @Test
+// public void testGetStringFromContext() {
+// PropAccess access = new PropAccess();
+// when(context.getInitParameter("user")).thenReturn("ContextUser");
+
+// FCGet fcGet = new FCGet(access, context, null);
+
+// String user = fcGet.get("user", "DefaultUser", true);
+
+// assertEquals(user,"ContextUser");
+// }
+
+// @Test
+// public void testGetStringFromFilter() {
+// PropAccess access = new PropAccess();
+// when(config.getInitParameter("user")).thenReturn("FilterUser");
+
+// FCGet fcGet = new FCGet(access, null, config);
+
+// String user = fcGet.get("user", "DefaultUser", true);
+
+// assertEquals(user,"FilterUser");
+// }
+
+// @Test
+// public void testGetStringWithNullContextFilter() {
+
+// when(access.getProperty("user", "DefaultUser")).thenReturn(null);
+
+// FCGet fcGet = new FCGet(access, null, null);
+
+// String user = fcGet.get("user", "DefaultUser", true);
+
+// assertEquals(user,"DefaultUser");
+// }
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_ConfigPrincipal.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_ConfigPrincipal.java
new file mode 100644
index 00000000..897744ec
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_ConfigPrincipal.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.lur;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import java.lang.reflect.Field;
+
+import java.io.IOException;
+
+import org.onap.aaf.cadi.lur.ConfigPrincipal;
+
+public class JU_ConfigPrincipal {
+
+ private final String name = "User";
+ private final String pass = "pass";
+
+ // Expected output of base64("User:pass")
+ private final String b64encoded = "VXNlcjpwYXNz";
+
+ private Field content_field;
+
+ @Before
+ public void setup() throws NoSuchFieldException {
+ content_field = ConfigPrincipal.class.getDeclaredField("content");
+ content_field.setAccessible(true);
+ }
+
+ @Test
+ public void testConfigPrincipalStringString() throws IOException, IllegalArgumentException, IllegalAccessException {
+ ConfigPrincipal p = new ConfigPrincipal(name, pass);
+
+ assertThat(p.getName(), is(name));
+ assertThat(p.toString(), is(name));
+ assertThat(p.getCred(), is(pass.getBytes()));
+ assertThat(p.getAsBasicAuthHeader(), is("Basic " + b64encoded));
+ content_field.set(p, "pass");
+ assertThat(p.getAsBasicAuthHeader(), is("Basic " + b64encoded));
+
+ // One more time for coverage purposes
+ assertThat(p.getAsBasicAuthHeader(), is("Basic " + b64encoded));
+ }
+
+ @Test
+ public void testConfigPrincipalStringByteArray() throws IOException, IllegalArgumentException, IllegalAccessException {
+ ConfigPrincipal p = new ConfigPrincipal(name, pass.getBytes());
+
+ assertThat(p.getName(), is(name));
+ assertThat(p.toString(), is(name));
+ assertThat(p.getCred(), is(pass.getBytes()));
+ assertThat(p.getAsBasicAuthHeader(), is("Basic " + b64encoded));
+ content_field.set(p, "pass");
+ assertThat(p.getAsBasicAuthHeader(), is("Basic " + b64encoded));
+
+ // One more time for coverage purposes
+ assertThat(p.getAsBasicAuthHeader(), is("Basic " + b64encoded));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_LocalLur.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_LocalLur.java
new file mode 100644
index 00000000..8388fa5f
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_LocalLur.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.lur;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.Lur;
+import org.onap.aaf.cadi.Permission;
+import org.onap.aaf.cadi.PropAccess;
+import org.onap.aaf.cadi.Symm;
+import org.onap.aaf.cadi.CredVal.Type;
+import org.onap.aaf.cadi.config.UsersDump;
+import org.onap.aaf.cadi.lur.LocalLur;
+import org.onap.aaf.cadi.lur.LocalPermission;
+
+public class JU_LocalLur {
+
+ @Test
+ public void test() throws IOException {
+ Symm symmetric = Symm.baseCrypt().obtain();
+ LocalLur up;
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ baos.write(Symm.ENC.getBytes());
+ symmetric.enpass("<pass>", baos);
+ PropAccess ta = new PropAccess();
+ Lur ml = up = new LocalLur(ta,"myname:groupA,groupB","admin:myname,yourname;suser:hisname,hername,m1234%"+baos.toString());
+
+
+// Permission admin = new LocalPermission("admin");
+// Permission suser = new LocalPermission("suser");
+//
+// // Check User fish
+// assertTrue(ml.fish(new JUPrincipal("myname"),admin));
+// assertTrue(ml.fish(new JUPrincipal("hisname"),admin));
+// assertFalse(ml.fish(new JUPrincipal("noname"),admin));
+// assertTrue(ml.fish(new JUPrincipal("itsname"),suser));
+// assertTrue(ml.fish(new JUPrincipal("hername"),suser));
+// assertFalse(ml.fish(new JUPrincipal("myname"),suser));
+//
+// // Check validate password
+// assertTrue(up.validate("m1234",Type.PASSWORD, "<pass>".getBytes()));
+// assertFalse(up.validate("m1234",Type.PASSWORD, "badPass".getBytes()));
+//
+ // Check fishAll
+ Set<String> set = new TreeSet<String>();
+ List<Permission> perms = new ArrayList<Permission>();
+ ml.fishAll(new JUPrincipal("myname"), perms);
+ for(Permission p : perms) {
+ set.add(p.getKey());
+ }
+// assertEquals("[admin, groupA, groupB]",set.toString());
+ UsersDump.write(System.out, up);
+ System.out.flush();
+
+ }
+
+ // Simplistic Principal for testing purposes
+ private static class JUPrincipal implements Principal {
+ private String name;
+ public JUPrincipal(String name) {
+ this.name = name;
+ }
+// @Override
+ public String getName() {
+ return name;
+ }
+ }
+
+
+
+
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_LocalPermission.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_LocalPermission.java
new file mode 100644
index 00000000..abc178a8
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_LocalPermission.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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,Z
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.lur;
+
+import static org.junit.Assert.*;
+
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import static org.mockito.Mockito.*;
+
+import org.onap.aaf.cadi.lur.LocalPermission;
+import org.onap.aaf.cadi.Permission;
+
+public class JU_LocalPermission {
+
+ @Mock
+ Permission perm;
+
+ private LocalPermission localPerm;
+ private String role = "Fake Role";
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ when(perm.getKey()).thenReturn(role);
+
+ localPerm = new LocalPermission(role);
+ }
+
+ @Test
+ public void getKeyTest() {
+ assertThat(localPerm.getKey(), is(role));
+ }
+
+ @Test
+ public void toStringTest() {
+ assertThat(localPerm.toString(), is(role));
+ }
+
+ @Test
+ public void matchTest() {
+ assertTrue(localPerm.match(perm));
+ }
+
+ @Test
+ public void permTypeTest() {
+ assertThat(localPerm.permType(), is("LOCAL"));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_NullLur.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_NullLur.java
new file mode 100644
index 00000000..d5740b3a
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/lur/JU_NullLur.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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,Z
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.lur;
+
+import java.security.Principal;
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.*;
+import org.junit.*;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import java.lang.reflect.*;
+
+import org.onap.aaf.cadi.Permission;
+import org.onap.aaf.cadi.lur.NullLur;
+
+public class JU_NullLur {
+
+ @Mock
+ Principal p;
+
+ @Mock
+ Permission perm;
+
+ @Mock
+ List<Permission> perms;
+
+ private NullLur nullLur;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+
+ nullLur = new NullLur();
+ }
+
+ @Test
+ public void coverageTests() throws Exception {
+
+ Field nullClass = NullLur.class.getDeclaredField("NULL");
+ nullClass.setAccessible(true);
+ assertThat(((Permission) nullClass.get(NullLur.class)).permType(), is(""));
+ assertThat(((Permission) nullClass.get(NullLur.class)).getKey(), is(""));
+ assertFalse(((Permission) nullClass.get(NullLur.class)).match(perm));
+
+ nullLur.fishAll(p, perms);
+ nullLur.destroy();
+
+ assertFalse(nullLur.fish(p, perm));
+ assertFalse(nullLur.handlesExclusively(perm));
+ assertFalse(nullLur.handles(p));
+ assertThat(nullLur.createPerm(""), is(nullClass.get(NullLur.class)));
+
+ StringBuilder sb = new StringBuilder();
+ nullLur.clear(p, sb);
+ assertThat(sb.toString(), is("NullLur\n"));
+ assertThat(nullLur.toString(), is("NullLur\n"));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_BasicPrincipal.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_BasicPrincipal.java
new file mode 100644
index 00000000..0faaca1a
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_BasicPrincipal.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.principal;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import static org.mockito.Mockito.*;
+import org.junit.*;
+
+import java.io.IOException;
+import java.util.Date;
+
+import org.onap.aaf.cadi.BasicCred;
+import org.onap.aaf.cadi.Symm;
+import org.onap.aaf.cadi.principal.BasicPrincipal;
+import org.onap.aaf.cadi.principal.StringTagLookup;
+import org.onap.aaf.cadi.principal.TaggedPrincipal;
+import org.onap.aaf.cadi.principal.TaggedPrincipal.TagLookup;
+
+public class JU_BasicPrincipal {
+
+ @Test
+ public void Constructor1Test() throws Exception {
+ // Test that everything works when the content doesn't contain "Basic"
+ BasicPrincipal bp = new BasicPrincipal("content", "domain");
+ assertThat(bp.getName(), is("content"));
+ assertThat(bp.getCred(), is(nullValue()));
+
+ // Test sending a user without an implicit domain
+ String name = "User";
+ String password = "password";
+ String content = name + ":" + password;
+ String domain = "exampledomain.com";
+ String encrypted = new String(Symm.base64.encode(content.getBytes()));
+ bp = new BasicPrincipal("Basic " + encrypted, domain);
+ assertThat(bp.getShortName(), is(name));
+ assertThat(bp.getName(), is(name + "@" + domain));
+ assertThat(bp.getCred(), is(password.getBytes()));
+
+ // Test sending a user with an implicit domain
+ String longName = name + "@" + domain + ":" + password;
+ encrypted = new String(Symm.base64.encode(longName.getBytes()));
+ bp = new BasicPrincipal("Basic " + encrypted, domain);
+ assertThat(bp.getShortName(), is(name));
+ assertThat(bp.getName(), is(name + "@" + domain));
+ assertThat(bp.getCred(), is(password.getBytes()));
+
+ // Check that an exception is throw if no name is given in the content
+ try {
+ bp = new BasicPrincipal("Basic " + new String(Symm.base64.encode("no name".getBytes())), "");
+ fail("Should have thrown an exception");
+ } catch (IOException e) {
+ assertThat(e.getMessage(), is("Invalid Coding"));
+ }
+ }
+
+ @Test
+ public void Constructor2Test() {
+ String name = "User";
+ String password = "password";
+ BasicCred bc = mock(BasicCred.class);
+ when(bc.getUser()).thenReturn(name);
+ when(bc.getCred()).thenReturn(password.getBytes());
+
+ BasicPrincipal bp = new BasicPrincipal(bc, "domain");
+ assertThat(bp.getName(), is(name));
+ assertThat(bp.getCred(), is(password.getBytes()));
+ }
+
+ @Test
+ public void accessorsTest() throws IOException {
+ String name = "User";
+ String password = "password";
+ String content = name + ":" + password;
+ String domain = "exampledomain.com";
+ String encrypted = new String(Symm.base64.encode(content.getBytes()));
+ String bearer = "bearer";
+ long created = System.currentTimeMillis();
+ BasicPrincipal bp = new BasicPrincipal("Basic " + encrypted, domain);
+ bp.setBearer(bearer);
+
+ String expected = "Basic Authorization for " + name + "@" + domain + " evaluated on " + new Date(bp.created()).toString();
+ assertTrue(Math.abs(bp.created() - created) < 10);
+ assertThat(bp.toString(), is(expected));
+ assertThat(bp.tag(), is("BAth"));
+ assertThat(bp.personalName(), is(nullValue()));
+
+ // This test hits the abstract class BearerPrincipal
+ assertThat(bp.getBearer(), is(bearer));
+ }
+
+
+ @Test
+ public void coverageTest() throws IOException {
+ String name = "User";
+ String password = "password:with:colons";
+ String content = name + ":" + password;
+ String encrypted = new String(Symm.base64.encode(content.getBytes()));
+ @SuppressWarnings("unused")
+ BasicPrincipal bp = new BasicPrincipal("Basic " + encrypted, "domain");
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_CachedBasicPrincipal.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_CachedBasicPrincipal.java
new file mode 100644
index 00000000..39da6c09
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_CachedBasicPrincipal.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.principal;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import static org.mockito.Mockito.*;
+import org.junit.*;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.Date;
+
+import org.onap.aaf.cadi.BasicCred;
+import org.onap.aaf.cadi.CachedPrincipal;
+import org.onap.aaf.cadi.CachedPrincipal.Resp;
+import org.onap.aaf.cadi.Symm;
+import org.onap.aaf.cadi.principal.CachedBasicPrincipal;
+import org.onap.aaf.cadi.principal.StringTagLookup;
+import org.onap.aaf.cadi.principal.TaggedPrincipal;
+import org.onap.aaf.cadi.principal.TaggedPrincipal.TagLookup;
+import org.onap.aaf.cadi.taf.HttpTaf;
+
+public class JU_CachedBasicPrincipal {
+ private Field creatorField;
+ private Field timeToLiveField;
+
+ @Mock
+ private HttpTaf creator;
+
+ private CachedPrincipal.Resp resp;
+
+ @Before
+ public void setup() throws NoSuchFieldException, SecurityException {
+ MockitoAnnotations.initMocks(this);
+
+ creatorField = CachedBasicPrincipal.class.getDeclaredField("creator");
+ timeToLiveField = CachedBasicPrincipal.class.getDeclaredField("timeToLive");
+
+ creatorField.setAccessible(true);
+ timeToLiveField.setAccessible(true);
+ }
+
+ @Test
+ public void Constructor1Test() throws IllegalArgumentException, IllegalAccessException {
+ String name = "User";
+ String password = "password";
+ BasicCred bc = mock(BasicCred.class);
+ when(bc.getUser()).thenReturn(name);
+ when(bc.getCred()).thenReturn(password.getBytes());
+
+ long timeToLive = 10000L;
+ long expires = System.currentTimeMillis() + timeToLive;
+ CachedBasicPrincipal cbp = new CachedBasicPrincipal(creator, bc, "domain", timeToLive);
+
+ assertThat((HttpTaf)creatorField.get(cbp), is(creator));
+ assertThat((Long)timeToLiveField.get(cbp), is(timeToLive));
+ assertTrue(Math.abs(cbp.expires() - expires) < 10);
+ }
+
+ @Test
+ public void Constructor2Test() throws Exception {
+ String name = "User";
+ String password = "password";
+ String content = name + ":" + password;
+ long timeToLive = 10000L;
+ long expires = System.currentTimeMillis() + timeToLive;
+ CachedBasicPrincipal cbp = new CachedBasicPrincipal(creator, content, "domain", timeToLive);
+
+ assertThat((HttpTaf)creatorField.get(cbp), is(creator));
+ assertThat((Long)timeToLiveField.get(cbp), is(timeToLive));
+ assertTrue(Math.abs(cbp.expires() - expires) < 10);
+ }
+
+ @Test
+ public void revalidateTest() throws IOException, IllegalArgumentException, IllegalAccessException, InterruptedException {
+ resp = CachedPrincipal.Resp.REVALIDATED;
+ when(creator.revalidate((CachedPrincipal)any(), any())).thenReturn(resp);
+
+ String name = "User";
+ String password = "password";
+ String content = name + ":" + password;
+ long timeToLive = 10000L;
+ long expires = System.currentTimeMillis() + timeToLive;
+ CachedBasicPrincipal cbp = new CachedBasicPrincipal(creator, content, "domain", timeToLive);
+
+ assertTrue(Math.abs(cbp.expires() - expires) < 10);
+
+ Thread.sleep(1);
+ expires = System.currentTimeMillis() + timeToLive;
+ assertThat(cbp.revalidate(new Object()), is(resp));
+ assertTrue(Math.abs(cbp.expires() - expires) < 10);
+
+ resp = CachedPrincipal.Resp.UNVALIDATED;
+ when(creator.revalidate((CachedPrincipal)any(), any())).thenReturn(resp);
+ expires = System.currentTimeMillis() + timeToLive;
+ cbp = new CachedBasicPrincipal(creator, content, "domain", timeToLive);
+
+ assertThat(cbp.revalidate(new Object()), is(resp));
+ assertTrue(Math.abs(cbp.expires() - expires) < 10);
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_Kind.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_Kind.java
new file mode 100644
index 00000000..c66539c4
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_Kind.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.principal;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import org.onap.aaf.cadi.principal.BasicPrincipal;
+import org.onap.aaf.cadi.principal.Kind;
+import org.onap.aaf.cadi.principal.OAuth2FormPrincipal;
+import org.onap.aaf.cadi.principal.TrustPrincipal;
+import org.onap.aaf.cadi.principal.X509Principal;
+
+public class JU_Kind {
+
+ @Mock
+ private TrustPrincipal trust;
+
+ @Mock
+ private X509Principal x509;
+
+ @Mock
+ private OAuth2FormPrincipal oauth;
+
+ @Mock
+ private BasicPrincipal basic;
+
+ @Before
+ public void setup() throws SecurityException {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ public void getKind() {
+ assertThat(Kind.getKind(trust), is('U'));
+ assertThat(Kind.getKind(x509), is('X'));
+ assertThat(Kind.getKind(oauth), is('O'));
+ assertThat(Kind.getKind(basic), is('B'));
+ }
+
+ @Test
+ public void coverageTest() {
+ @SuppressWarnings("unused")
+ Kind kind = new Kind();
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_OAuth2FormPrincipal.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_OAuth2FormPrincipal.java
new file mode 100644
index 00000000..a7c14aa8
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_OAuth2FormPrincipal.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.principal;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+
+import org.onap.aaf.cadi.principal.OAuth2FormPrincipal;
+
+public class JU_OAuth2FormPrincipal {
+
+ private String username = "user";
+ private String id = "id";
+
+ @Test
+ public void accessorsTest() {
+ OAuth2FormPrincipal oauth = new OAuth2FormPrincipal(id, username);
+ assertThat(oauth.getName(), is(username));
+ assertThat(oauth.client_id(), is(id));
+ assertThat(oauth.tag(), is("OAuth"));
+ }
+
+ @Test
+ public void personalNameTest() {
+ OAuth2FormPrincipal oauth = new OAuth2FormPrincipal(id, username);
+ assertThat(oauth.personalName(), is(username + "|" + id));
+
+ oauth = new OAuth2FormPrincipal(id, null);
+ assertThat(oauth.personalName(), is(id));
+
+ oauth = new OAuth2FormPrincipal(id, id);
+ assertThat(oauth.personalName(), is(id));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_StringTagLookup.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_StringTagLookup.java
new file mode 100644
index 00000000..ff1f3f8a
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_StringTagLookup.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.principal;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+
+import org.onap.aaf.cadi.principal.StringTagLookup;
+
+public class JU_StringTagLookup {
+
+ @Test
+ public void accessorsTest() throws Exception {
+ String tag = "tag";
+ StringTagLookup stl = new StringTagLookup(tag);
+ assertThat(stl.lookup(), is(tag));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_TaggedPrincipal.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_TaggedPrincipal.java
new file mode 100644
index 00000000..4674db70
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_TaggedPrincipal.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.principal;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+
+import org.onap.aaf.cadi.principal.TaggedPrincipal;
+import org.onap.aaf.cadi.principal.TaggedPrincipal.TagLookup;
+import org.onap.aaf.cadi.CadiException;
+import org.onap.aaf.cadi.principal.StringTagLookup;
+
+public class JU_TaggedPrincipal {
+
+ private final String name = "stubbedName";
+ private final String tag = "tag";
+
+ private class TaggedPrincipalStub extends TaggedPrincipal {
+ public TaggedPrincipalStub() { super(); }
+ public TaggedPrincipalStub(final TagLookup tl) { super(tl); }
+ @Override public String getName() { return name; }
+ @Override public String tag() { return null; }
+ }
+
+ private class WhinyTagLookup implements TagLookup {
+ public WhinyTagLookup(final String tag) { }
+ @Override
+ public String lookup() throws CadiException {
+ throw new CadiException();
+ }
+ }
+
+ @Test
+ public void personalNameTest() {
+ TaggedPrincipal tp = new TaggedPrincipalStub();
+ assertThat(tp.personalName(), is(name));
+
+ StringTagLookup stl = new StringTagLookup(tag);
+ tp = new TaggedPrincipalStub(stl);
+ assertThat(tp.personalName(), is(tag));
+
+ WhinyTagLookup wtl = new WhinyTagLookup(tag);
+ tp.setTagLookup(wtl);
+ assertThat(tp.personalName(), is(name));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_TrustPrincipal.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_TrustPrincipal.java
new file mode 100644
index 00000000..4a7333e2
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_TrustPrincipal.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.principal;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+
+import java.security.Principal;
+
+import org.onap.aaf.cadi.UserChain;
+import org.onap.aaf.cadi.principal.TaggedPrincipal;
+import org.onap.aaf.cadi.principal.TrustPrincipal;
+
+public class JU_TrustPrincipal {
+
+ private final String ucName = "UserChain";
+ private final String uc = "This is a UserChain";
+ private final String taggedName = "TaggedPrincipal";
+ private final String tag = "tag";
+ private final String pName = "Principal";
+
+ private class UserChainPrincipalStub implements Principal, UserChain {
+ @Override public String userChain() { return uc; }
+ @Override public String getName() { return ucName; }
+ }
+
+ private class TaggedPrincipalStub extends TaggedPrincipal {
+ public TaggedPrincipalStub() { super(); }
+ @Override public String getName() { return taggedName; }
+ @Override public String tag() { return tag; }
+ }
+
+ private class PrincipalStub implements Principal {
+ @Override public String getName() { return pName; }
+ }
+
+ @Test
+ public void userChainConstructorTest() {
+ UserChainPrincipalStub ucps = new UserChainPrincipalStub();
+ TrustPrincipal tp = new TrustPrincipal(ucps, taggedName);
+ assertThat(tp.getName(), is(taggedName));
+ assertThat(tp.userChain(), is(uc));
+ assertSame(tp.original(), ucps);
+ assertThat(tp.tag(), is(uc));
+ assertThat(tp.personalName(), is(ucName + '[' + uc + ']'));
+ }
+
+ @Test
+ public void taggedPrincipalConstructorTest() {
+ TaggedPrincipal tagged = new TaggedPrincipalStub();
+ TrustPrincipal tp = new TrustPrincipal(tagged, taggedName);
+ assertThat(tp.getName(), is(taggedName));
+ assertThat(tp.userChain(), is(tag));
+ assertSame(tp.original(), tagged);
+ assertThat(tp.tag(), is(tag));
+ assertThat(tp.personalName(), is(taggedName + '[' + tag + ']'));
+ }
+
+ @Test
+ public void principalConstructorTest() {
+ Principal principal = new PrincipalStub();
+ TrustPrincipal tp = new TrustPrincipal(principal, pName);
+ assertThat(tp.getName(), is(pName));
+ assertThat(tp.userChain(), is(principal.getClass().getSimpleName()));
+ assertSame(tp.original(), principal);
+ assertThat(tp.tag(), is(principal.getClass().getSimpleName()));
+ assertThat(tp.personalName(), is(pName + '[' + principal.getClass().getSimpleName() + ']'));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_UnAuthPrincipal.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_UnAuthPrincipal.java
new file mode 100644
index 00000000..9d694a53
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_UnAuthPrincipal.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.principal;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+
+import org.onap.aaf.cadi.principal.UnAuthPrincipal;
+
+public class JU_UnAuthPrincipal {
+
+ private final String name = "name";
+
+ @Test
+ public void accessorsTest() {
+ UnAuthPrincipal up = new UnAuthPrincipal(name);
+ assertThat(up.getName(), is(name));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_X509Principal.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_X509Principal.java
new file mode 100644
index 00000000..a45ce24e
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/principal/JU_X509Principal.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.principal;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import static org.mockito.Mockito.*;
+import org.junit.*;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.io.IOException;
+import java.security.Principal;
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.X509Certificate;
+
+import org.onap.aaf.cadi.principal.X509Principal;
+
+public class JU_X509Principal {
+
+ private final String name = "x509 name";
+ private final byte[] cred = "super duper secret password".getBytes();
+
+ @Mock
+ X509Certificate cert;
+
+ @Mock
+ Principal subject;
+
+ @Before
+ public void setup() throws CertificateEncodingException {
+ MockitoAnnotations.initMocks(this);
+ when(cert.getEncoded()).thenReturn(cred);
+ }
+
+ @Test
+ public void constructor1Test() throws IOException {
+ X509Principal x509 = new X509Principal(name, cert);
+ // Call twice to hit both branches
+ assertThat(x509.getAsHeader(), is("X509 " + cred));
+ assertThat(x509.getAsHeader(), is("X509 " + cred));
+ assertThat(x509.toString(), is("X509 Authentication for " + name));
+ assertTrue(x509.getCred().equals(cred));
+ assertThat(x509.getName(), is(name));
+ assertThat(x509.tag(), is("x509"));
+ }
+
+ @Test
+ public void constructor2Test() throws IOException {
+ X509Principal x509 = new X509Principal(name, cert, cred);
+ // Call twice to hit both branches
+ assertThat(x509.getAsHeader(), is("X509 " + cred));
+ assertThat(x509.toString(), is("X509 Authentication for " + name));
+ assertTrue(x509.getCred().equals(cred));
+ assertThat(x509.getName(), is(name));
+ assertThat(x509.tag(), is("x509"));
+ }
+
+ @Test
+ public void constructor3Test() throws IOException {
+ final String longName = "name@domain";
+ when(subject.getName()).thenReturn("OU=" + longName + ",extra");
+ when(cert.getSubjectDN()).thenReturn(subject);
+ X509Principal x509 = new X509Principal(cert, cred);
+ // Call twice to hit both branches
+ assertThat(x509.getAsHeader(), is("X509 " + cred));
+ assertThat(x509.toString(), is("X509 Authentication for " + longName));
+ assertTrue(x509.getCred().equals(cred));
+ assertThat(x509.getName(), is(longName));
+
+ when(subject.getName()).thenReturn(longName + ",extra");
+ when(cert.getSubjectDN()).thenReturn(subject);
+ try {
+ x509 = new X509Principal(cert, cred);
+ fail("Should have thrown an Exception");
+ } catch(IOException e) {
+ assertThat(e.getMessage(), is("X509 does not have Identity as CN"));
+ }
+
+ when(subject.getName()).thenReturn("OU=" + longName);
+ when(cert.getSubjectDN()).thenReturn(subject);
+ try {
+ x509 = new X509Principal(cert, cred);
+ fail("Should have thrown an Exception");
+ } catch(IOException e) {
+ assertThat(e.getMessage(), is("X509 does not have Identity as CN"));
+ }
+
+ when(subject.getName()).thenReturn("OU=" + name + ",exta");
+ when(cert.getSubjectDN()).thenReturn(subject);
+ try {
+ x509 = new X509Principal(cert, cred);
+ fail("Should have thrown an Exception");
+ } catch(IOException e) {
+ assertThat(e.getMessage(), is("X509 does not have Identity as CN"));
+ }
+
+ }
+
+ @Test
+ public void throwsTest() throws CertificateEncodingException {
+ when(cert.getEncoded()).thenThrow(new CertificateEncodingException());
+ X509Principal x509 = new X509Principal(name, cert);
+ assertThat(x509.getCred(), is(nullValue()));
+ try {
+ x509.getAsHeader();
+ fail("Should have thrown an Exception");
+ } catch (IOException e) {
+ }
+ }
+
+ @Test
+ public void getCredTest() {
+ X509Principal x509 = new X509Principal(name, cert);
+ // Call twice to hit both branches
+ assertTrue(x509.getCred().equals(cred));
+ assertTrue(x509.getCred().equals(cred));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/taf/JU_NullTafRespTest.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/taf/JU_NullTafRespTest.java
new file mode 100644
index 00000000..aabed1ed
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/taf/JU_NullTafRespTest.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.taf;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.aaf.cadi.Access;
+import org.onap.aaf.cadi.taf.TafResp;
+import org.onap.aaf.cadi.taf.TafResp.RESP;
+
+public class JU_NullTafRespTest {
+
+// @Before
+// public void setUp() throws Exception {
+// }
+
+// @Test
+// public void test() throws IOException {
+// TafResp singleton = NullTafResp.singleton();
+// TafResp singleton1 = NullTafResp.singleton();
+
+// assertEquals(singleton, singleton1);
+
+// assertFalse(singleton.isValid());
+
+// assertEquals(singleton.isAuthenticated(), RESP.NO_FURTHER_PROCESSING);
+
+// assertEquals(singleton.desc(), "All Authentication denied");
+
+// assertEquals(singleton.authenticate(), RESP.NO_FURTHER_PROCESSING);
+
+// assertNull(singleton.getPrincipal());
+
+// assertEquals(singleton.getAccess(), Access.NULL);
+
+// assertEquals(singleton.isFailedAttempt(), true);
+// }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_FQI.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_FQI.java
new file mode 100644
index 00000000..57177839
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_FQI.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.util;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+
+import org.onap.aaf.cadi.util.FQI;
+
+public class JU_FQI {
+
+ @Test
+ public void reverseDomainTest() {
+ assertThat(FQI.reverseDomain("user@att.com"), is("com.att"));
+ }
+
+ @Test
+ public void coverageTest() {
+ @SuppressWarnings("unused")
+ FQI fqi = new FQI();
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_JsonOutputStream.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_JsonOutputStream.java
new file mode 100644
index 00000000..d07652a1
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_JsonOutputStream.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.util;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+
+import java.io.ByteArrayOutputStream;
+
+import org.junit.*;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+
+import org.onap.aaf.cadi.util.JsonOutputStream;
+
+public class JU_JsonOutputStream {
+
+ private JsonOutputStream jos;
+
+ @Before
+ public void setup() {
+ jos = new JsonOutputStream(new ByteArrayOutputStream());
+ }
+
+ @Test
+ public void constructorTest() {
+ jos = new JsonOutputStream(System.out);
+ jos = new JsonOutputStream(System.err);
+ }
+
+ @Test
+ public void writeTest() throws IOException {
+ byte[] json = ("{" +
+ "name: user," +
+ "password: pass," +
+ "contact: {" +
+ "email: user@att.com," +
+ "phone: 555-5555" +
+ "}," +
+ "list: [" +
+ "item1," +
+ "item2" +
+ "],[],{}," +
+ "list:" +
+ "[" +
+ "item1," +
+ "item2" +
+ "]" +
+ "}").getBytes();
+ jos.write(json);
+ }
+
+ @Test
+ public void resetIndentTest() throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
+ Field indentField = JsonOutputStream.class.getDeclaredField("indent");
+ indentField.setAccessible(true);
+
+ assertThat((int)indentField.get(jos), is(0));
+ jos.resetIndent();
+ assertThat((int)indentField.get(jos), is(1));
+ }
+
+ @Test
+ public void coverageTest() throws IOException {
+ jos.flush();
+ jos.close();
+
+ jos = new JsonOutputStream(System.out);
+ jos.close();
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_MaskFormatException.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_MaskFormatException.java
new file mode 100644
index 00000000..6a60df68
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_MaskFormatException.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+
+package org.onap.aaf.cadi.test.util;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+
+import org.onap.aaf.cadi.util.MaskFormatException;
+
+public class JU_MaskFormatException {
+
+ @Test
+ public void throwsTest() {
+ String errorMessage = "This is a MaskFormatException";
+ try {
+ throw new MaskFormatException(errorMessage);
+ } catch (Exception e) {
+ assertThat(e.getMessage(), is(errorMessage));
+ assertTrue(e instanceof MaskFormatException);
+ }
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_NetMask.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_NetMask.java
new file mode 100644
index 00000000..be3b1b32
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_NetMask.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.util;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.util.NetMask;
+
+public class JU_NetMask {
+
+ @Test
+ public void deriveTest() {
+ String test = "test";
+ assertEquals(NetMask.derive(test.getBytes()), 0);
+ }
+
+ @Test
+ public void deriveTest2() {
+ String test = "1.2.3.4";
+ assertEquals(NetMask.derive(test.getBytes()), 0);
+ }
+
+ @Test
+ public void deriveTest3() {
+ String test = "1.2.4";
+ assertEquals(NetMask.derive(test.getBytes()), 0);
+ }
+
+ @Test
+ public void deriveTest4() {
+ String test = "1.3.4";
+ assertEquals(NetMask.derive(test.getBytes()), 0);
+ }
+
+ @Test
+ public void deriveTest5() {
+ String test = "2.3.4";
+ assertEquals(NetMask.derive(test.getBytes()), 0);
+ }
+
+ @Test
+ public void deriveTest6() {
+ String test = "3.4";
+ assertEquals(NetMask.derive(test.getBytes()), 0);
+ }
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_Split.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_Split.java
new file mode 100644
index 00000000..e375f6c0
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_Split.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.util;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.*;
+
+import org.onap.aaf.cadi.util.Split;
+
+public class JU_Split {
+
+ @Test
+ public void splitTest() {
+ String[] output = Split.split('c', "ctestctc", 0, "ctestctc".length());
+ assertThat(output.length, is(4));
+ assertThat(output[0], is(""));
+ assertThat(output[1], is("test"));
+ assertThat(output[2], is("t"));
+ assertThat(output[3], is(""));
+
+ output = Split.split('c', "ctestctc", 0, 4);
+ assertThat(output.length, is(2));
+ assertThat(output[0], is(""));
+ assertThat(output[1], is("tes"));
+
+ output = Split.split('c', "test", 0, "test".length());
+ assertThat(output.length, is(1));
+ assertThat(output[0], is("test"));
+
+ assertThat(Split.split('c', null, 0, 0).length, is(0));
+
+ // Test with fewer arguments
+ output = Split.split('c', "ctestctc");
+ assertThat(output.length, is(4));
+ assertThat(output[0], is(""));
+ assertThat(output[1], is("test"));
+ assertThat(output[2], is("t"));
+ assertThat(output[3], is(""));
+ }
+
+ @Test
+ public void splitTrimTest() {
+ String[] output = Split.splitTrim('c', " cte stc ctc ", 0, " cte stc ctc ".length());
+ assertThat(output.length, is(5));
+ assertThat(output[0], is(""));
+ assertThat(output[1], is("te st"));
+ assertThat(output[2], is(""));
+ assertThat(output[3], is("t"));
+ assertThat(output[4], is(""));
+
+ output = Split.splitTrim('c', " cte stc ctc ", 0, 5);
+ assertThat(output.length, is(2));
+ assertThat(output[0], is(""));
+ assertThat(output[1], is("te"));
+
+ assertThat(Split.splitTrim('c', " te st ", 0, " te st ".length())[0], is("te st"));
+
+ assertThat(Split.splitTrim('c', null, 0, 0).length, is(0));
+
+ // Test with 2 arguments
+ output = Split.splitTrim('c', " cte stc ctc ");
+ assertThat(output.length, is(5));
+ assertThat(output[0], is(""));
+ assertThat(output[1], is("te st"));
+ assertThat(output[2], is(""));
+ assertThat(output[3], is("t"));
+ assertThat(output[4], is(""));
+
+ // Tests with 1 argument
+ output = Split.splitTrim('c', " cte stc ctc ", 1);
+ assertThat(output.length, is(1));
+ assertThat(output[0], is("cte stc ctc"));
+
+ output = Split.splitTrim('c', "testctest2", 2);
+ assertThat(output.length, is(2));
+ assertThat(output[0], is("test"));
+ assertThat(output[1], is("test2"));
+
+ output = Split.splitTrim('c', " cte stc ctc ", 4);
+ assertThat(output.length, is(4));
+ assertThat(output[0], is(""));
+ assertThat(output[1], is("te st"));
+ assertThat(output[2], is(""));
+
+ assertThat(Split.splitTrim('c', null, 0).length, is(0));
+ }
+
+ @Test
+ public void coverageTest() {
+ @SuppressWarnings("unused")
+ Split split = new Split();
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_TheConsole.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_TheConsole.java
new file mode 100644
index 00000000..f168c7f4
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_TheConsole.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.util;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.util.TheConsole;
+
+public class JU_TheConsole {
+
+ @Test
+ public void implemented(){
+ assertEquals(TheConsole.implemented(),false);
+ }
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_UserChainManip.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_UserChainManip.java
new file mode 100644
index 00000000..d335edae
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_UserChainManip.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.util;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.UserChain;
+import org.onap.aaf.cadi.util.UserChainManip;
+
+public class JU_UserChainManip {
+
+ @Test
+ public void build(){
+ UserChain.Protocol baseAuth=UserChain.Protocol.BasicAuth;
+ assertEquals(UserChainManip.build(new StringBuilder(""), "app", "id", baseAuth, true).toString(), "app:id:BasicAuth:AS");
+ }
+
+
+ @Test
+ public void idToNS(){
+ assertEquals(UserChainManip.idToNS(null), "");
+ }
+
+ @Test
+ public void idToNS1(){
+ assertEquals(UserChainManip.idToNS("t@st"), "st");
+ }
+
+ @Test
+ public void test() {
+ assertEquals("",UserChainManip.idToNS(null));
+ assertEquals("",UserChainManip.idToNS(""));
+ assertEquals("",UserChainManip.idToNS("something"));
+ assertEquals("",UserChainManip.idToNS("something@@"));
+ assertEquals("",UserChainManip.idToNS("something@@."));
+ assertEquals("com",UserChainManip.idToNS("something@com"));
+ assertEquals("com.random",UserChainManip.idToNS("something@random.com"));
+ assertEquals("com.random",UserChainManip.idToNS("@random.com"));
+ assertEquals("com.random",UserChainManip.idToNS("something@random.com."));
+ assertEquals("com.random",UserChainManip.idToNS("something@..random...com..."));
+ assertEquals("com.random.this",UserChainManip.idToNS("something@this.random.com"));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_Vars.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_Vars.java
new file mode 100644
index 00000000..345c8ca2
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/util/JU_Vars.java
@@ -0,0 +1,150 @@
+/*******************************************************************************
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.util;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.util.Vars;
+
+public class JU_Vars {
+
+ @Test
+ public void coverage() {
+ @SuppressWarnings("unused")
+ Vars my_nonstatic_object_for_coverage = new Vars();
+ }
+
+ @Test
+ public void convert() {
+ String test = "test";
+ List<String> list = new ArrayList<String>();
+ list.add("method");
+ assertEquals(Vars.convert(test, list), test);
+ }
+
+ @Test
+ public void convertTest1() {
+ String test = "te%t";
+ List<String> list = new ArrayList<String>();
+ list.add("method");
+ assertEquals(Vars.convert("test", list), "test");
+ }
+
+ @Test
+ public void convertTest2() {
+ String test = "te%s%t";
+ List<String> list = new ArrayList<String>();
+ list.add("method");
+ assertEquals(Vars.convert("test", list), "test");
+ }
+
+ @Test
+ public void test() {
+ StringBuilder holder = new StringBuilder();
+ String str,bstr;
+ assertEquals(str = "set %1 to %2",Vars.convert(holder,str, "a","b"));
+ assertEquals("set a to b",holder.toString());
+ assertEquals(str,Vars.convert(null,str, "a","b"));
+ holder.setLength(0);
+ assertEquals(str,Vars.convert(holder,bstr="set %s to %s", "a","b"));
+ assertEquals("set a to b",holder.toString());
+ assertEquals(str,Vars.convert(null,bstr, "a","b"));
+
+ holder.setLength(0);
+ assertEquals(str = "%1=%2",Vars.convert(holder,str, "a","b"));
+ assertEquals("a=b",holder.toString());
+ assertEquals(str,Vars.convert(null,str, "a","b"));
+ holder.setLength(0);
+ assertEquals(str,Vars.convert(holder,bstr="%s=%s", "a","b"));
+ assertEquals("a=b",holder.toString());
+ assertEquals(str,Vars.convert(null,bstr, "a","b"));
+
+ holder.setLength(0);
+ assertEquals(str = "%1%2",Vars.convert(holder,str, "a","b"));
+ assertEquals("ab",holder.toString());
+ assertEquals(str ,Vars.convert(null,str, "a","b"));
+ holder.setLength(0);
+ assertEquals(str,Vars.convert(holder,bstr="%s%s", "a","b"));
+ assertEquals("ab",holder.toString());
+ assertEquals(str ,Vars.convert(null,bstr, "a","b"));
+
+
+ holder.setLength(0);
+ assertEquals(str = " %1=%2 ",Vars.convert(holder,str, "a","b"));
+ assertEquals(" a=b ",holder.toString());
+ assertEquals(str ,Vars.convert(null,str, "a","b"));
+ holder.setLength(0);
+ assertEquals(str,Vars.convert(holder,bstr = " %s=%s ", "a","b"));
+ assertEquals(" a=b ",holder.toString());
+ assertEquals(str ,Vars.convert(null,bstr, "a","b"));
+
+ holder.setLength(0);
+ assertEquals(str = " %1%2%10 ",Vars.convert(holder,str, "a","b","c","d","e","f","g","h","i","j"));
+ assertEquals(" abj ",holder.toString());
+ assertEquals(str,Vars.convert(null,str, "a","b","c","d","e","f","g","h","i","j"));
+ holder.setLength(0);
+ assertEquals(str=" %1%2%3 ",Vars.convert(holder,bstr = " %s%s%s ", "a","b","c","d","e","f","g","h","i","j"));
+ assertEquals(" abc ",holder.toString());
+ assertEquals(str,Vars.convert(null,bstr, "a","b","c","d","e","f","g","h","i","j"));
+
+
+ holder.setLength(0);
+ assertEquals(str = "set %1 to %2",Vars.convert(holder,str, "Something much","larger"));
+ assertEquals("set Something much to larger",holder.toString());
+ assertEquals(str,Vars.convert(null,str,"Something much","larger"));
+ holder.setLength(0);
+ assertEquals(str,Vars.convert(holder,bstr="set %s to %s", "Something much","larger"));
+ assertEquals("set Something much to larger",holder.toString());
+ assertEquals(str,Vars.convert(null,bstr, "Something much","larger"));
+
+ holder.setLength(0);
+ assertEquals(str = "Text without Vars",Vars.convert(holder,str));
+ assertEquals(str,holder.toString());
+ assertEquals(str = "Text without Vars",Vars.convert(null,str));
+
+
+ holder.setLength(0);
+ assertEquals(str = "Not %1 Enough %2 Vars %3",Vars.convert(holder,str, "a","b"));
+ assertEquals("Not a Enough b Vars ",holder.toString());
+ assertEquals(str ,Vars.convert(null,str, "a","b"));
+ holder.setLength(0);
+ assertEquals(str,Vars.convert(holder,bstr="Not %s Enough %s Vars %s", "a","b"));
+ assertEquals("Not a Enough b Vars ",holder.toString());
+ assertEquals(str ,Vars.convert(null,bstr, "a","b"));
+
+ holder.setLength(0);
+ assertEquals(str = "!@#$%^*()-+?/,:;.",Vars.convert(holder,str, "a","b"));
+ assertEquals(str,holder.toString());
+ assertEquals(str ,Vars.convert(null,str, "a","b"));
+
+ holder.setLength(0);
+ bstr = "%s !@#$%^*()-+?/,:;.";
+ str = "%1 !@#$%^*()-+?/,:;.";
+ assertEquals(str,Vars.convert(holder,bstr, "Not Acceptable"));
+ assertEquals("Not Acceptable !@#$%^*()-+?/,:;.",holder.toString());
+ assertEquals(str ,Vars.convert(null,bstr, "Not Acceptable"));
+ }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/wsse/JU_WSSE_Read.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/wsse/JU_WSSE_Read.java
new file mode 100644
index 00000000..26dd43b1
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/wsse/JU_WSSE_Read.java
@@ -0,0 +1,189 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.wsse;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.BasicCred;
+import org.onap.aaf.cadi.BufferedServletInputStream;
+import org.onap.aaf.cadi.wsse.WSSEParser;
+
+public class JU_WSSE_Read {
+
+// @Test
+// public void test() {
+// try {
+// final BasicCred bc = new BasicCred() {
+
+// private String user;
+// private byte[] password;
+
+// public void setUser(String user) {
+// this.user = user;
+// }
+
+// public void setCred(byte[] passwd) {
+// this.password = passwd;
+// }
+
+// public String getUser() {
+// return user;
+// }
+
+// public byte[] getCred() {
+// return password;
+// }
+// };
+
+// WSSEParser wp = new WSSEParser();
+
+// FileInputStream fis;
+// fis = new FileInputStream("test/example.xml");
+// BufferedServletInputStream is = new BufferedServletInputStream(fis);
+// try {
+// is.mark(1536);
+// try {
+// assertNull(wp.parse(bc, is));
+// } finally {
+// is.reset();
+// assertEquals(814,is.buffered());
+// }
+// String password = new String(bc.getCred());
+// System.out.println("CadiWrap credentials are: " + bc.getUser() + ", " + password);
+// assertEquals("some_user", bc.getUser());
+// assertEquals("some_password", password);
+
+// } finally {
+// fis.close();
+// }
+
+// // CBUS (larger)
+// fis = new FileInputStream("test/CBUSevent.xml");
+// is = new BufferedServletInputStream(fis);
+// try {
+// is.mark(1536);
+// try {
+// assertNull(wp.parse(bc, is));
+// } finally {
+// is.reset();
+// assertEquals(667,is.buffered());
+// }
+// String password = new String(bc.getCred());
+// System.out.println("CadiWrap credentials are: " + bc.getUser() + ", " + password);
+// assertEquals("none", bc.getUser());
+// assertEquals("none", password);
+
+// } finally {
+// fis.close();
+// }
+
+// // Closed Stream
+// fis = new FileInputStream("test/example.xml");
+// fis.close();
+// bc.setCred(null);
+// bc.setUser(null);
+// XMLStreamException ex = wp.parse(bc, fis);
+// assertNotNull(ex);
+// assertNull(bc.getUser());
+// assertNull(bc.getCred());
+
+
+// fis = new FileInputStream("test/exampleNoSecurity.xml");
+// try {
+// bc.setCred(null);
+// bc.setUser(null);
+// assertNull(wp.parse(bc, fis));
+// assertNull(bc.getUser());
+// assertNull(bc.getCred());
+// } finally {
+// fis.close();
+// }
+
+// fis = new FileInputStream("test/exampleBad1.xml");
+// try {
+// bc.setCred(null);
+// bc.setUser(null);
+// assertNull(wp.parse(bc, fis));
+// assertNull(bc.getUser());
+// assertNull(bc.getCred());
+// } finally {
+// fis.close();
+// }
+
+// XMLStreamException e = wp.parse(bc, new ByteArrayInputStream("Not XML".getBytes())); // empty
+// assertNotNull(e);
+
+// e = wp.parse(bc, new ByteArrayInputStream("".getBytes())); // empty
+// assertNotNull(e);
+
+
+// long start, count = 0L;
+// int iter = 30000;
+// File f = new File("test/CBUSevent.xml");
+// fis = new FileInputStream(f);
+// is = new BufferedServletInputStream(fis);
+// is.mark(0);
+// try {
+// while(is.read()>=0);
+// } finally {
+// fis.close();
+// }
+
+// for(int i=0;i<iter;++i) {
+// start = System.nanoTime();
+// is.reset();
+// try {
+// assertNull(wp.parse(bc, is));
+// } finally {
+// count += System.nanoTime()-start;
+// }
+// }
+// float ms = count/1000000f;
+// System.out.println("Executed " + iter + " WSSE reads from Memory Stream in " + ms + "ms. " + ms/iter + "ms per trans");
+
+// // SPECIFIC ISSUES
+
+// fis = new FileInputStream("test/error2013_04_23.xml");
+// try {
+// bc.setCred(null);
+// bc.setUser(null);
+// assertNull(wp.parse(bc, fis));
+// assertNull(bc.getUser());
+// assertNull(bc.getCred());
+// } finally {
+// fis.close();
+// }
+// } catch(Exception e) {
+// e.printStackTrace(System.err);
+// }
+// }
+
+}
diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/test/wsse/JU_XReader.java b/cadi/core/src/test/java/org/onap/aaf/cadi/test/wsse/JU_XReader.java
new file mode 100644
index 00000000..5d765c5a
--- /dev/null
+++ b/cadi/core/src/test/java/org/onap/aaf/cadi/test/wsse/JU_XReader.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * ============LICENSE_START====================================================
+ * * org.onap.aaf
+ * * ===========================================================================
+ * * 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====================================================
+ * *
+ * *
+ ******************************************************************************/
+package org.onap.aaf.cadi.test.wsse;
+
+import java.io.FileInputStream;
+
+import javax.xml.stream.events.XMLEvent;
+
+import org.junit.Test;
+import org.onap.aaf.cadi.wsse.XEvent;
+import org.onap.aaf.cadi.wsse.XReader;
+
+public class JU_XReader {
+ //TODO: Gabe [JUnit] Class not found error
+ @Test
+ public void test() throws Exception {
+ FileInputStream fis = new FileInputStream("test/CBUSevent.xml");
+ try {
+ XReader xr = new XReader(fis);
+ while(xr.hasNext()) {
+ XEvent xe = xr.nextEvent();
+ switch(xe.getEventType()) {
+ case XMLEvent.START_DOCUMENT:
+ System.out.println("Start Document");
+ break;
+ case XMLEvent.START_ELEMENT:
+ System.out.println("Start Event: " + xe.asStartElement().getName());
+ break;
+ case XMLEvent.END_ELEMENT:
+ System.out.println("End Event: " + xe.asEndElement().getName());
+ break;
+ case XMLEvent.CHARACTERS:
+ System.out.println("Characters: " + xe.asCharacters().getData());
+ break;
+ case XMLEvent.COMMENT:
+ System.out.println("Comment: " + ((XEvent.Comment)xe).value);
+ break;
+ }
+ }
+ } finally {
+ fis.close();
+ }
+
+ }
+
+}