From 4a51a8f96715ffb2a42189b93b9fa91b453b8530 Mon Sep 17 00:00:00 2001 From: sg481n Date: Thu, 3 Aug 2017 17:39:12 -0400 Subject:  [AAF-21] Initial code import MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ia1dd196befd061f6ba0c2be6bf4456a30ea50f97 Signed-off-by: sg481n --- core/src/test/java/com/att/cadi/JU_AES.java | 87 ++++++++++ .../java/com/att/cadi/lur/test/JU_LocalLur.java | 102 +++++++++++ .../java/com/att/cadi/lur/test/TestAccess.java | 92 ++++++++++ .../src/test/java/com/att/cadi/test/JU_Base64.java | 158 +++++++++++++++++ .../cadi/test/JU_BufferedServletInputStream.java | 192 +++++++++++++++++++++ .../test/java/com/att/cadi/test/JU_Capacitor.java | 145 ++++++++++++++++ core/src/test/java/com/att/cadi/test/JU_Hash.java | 62 +++++++ .../test/java/com/att/cadi/test/JU_Passcode.java | 91 ++++++++++ .../java/com/att/cadi/test/JU_UserChainManip.java | 49 ++++++ core/src/test/java/com/att/cadi/test/JU_Vars.java | 127 ++++++++++++++ core/src/test/java/com/att/cadi/test/Test.java | 71 ++++++++ .../java/com/att/cadi/wsse/test/JU_WSSE_Read.java | 192 +++++++++++++++++++++ .../java/com/att/cadi/wsse/test/JU_XReader.java | 67 +++++++ 13 files changed, 1435 insertions(+) create mode 100644 core/src/test/java/com/att/cadi/JU_AES.java create mode 100644 core/src/test/java/com/att/cadi/lur/test/JU_LocalLur.java create mode 100644 core/src/test/java/com/att/cadi/lur/test/TestAccess.java create mode 100644 core/src/test/java/com/att/cadi/test/JU_Base64.java create mode 100644 core/src/test/java/com/att/cadi/test/JU_BufferedServletInputStream.java create mode 100644 core/src/test/java/com/att/cadi/test/JU_Capacitor.java create mode 100644 core/src/test/java/com/att/cadi/test/JU_Hash.java create mode 100644 core/src/test/java/com/att/cadi/test/JU_Passcode.java create mode 100644 core/src/test/java/com/att/cadi/test/JU_UserChainManip.java create mode 100644 core/src/test/java/com/att/cadi/test/JU_Vars.java create mode 100644 core/src/test/java/com/att/cadi/test/Test.java create mode 100644 core/src/test/java/com/att/cadi/wsse/test/JU_WSSE_Read.java create mode 100644 core/src/test/java/com/att/cadi/wsse/test/JU_XReader.java (limited to 'core/src/test/java/com/att') diff --git a/core/src/test/java/com/att/cadi/JU_AES.java b/core/src/test/java/com/att/cadi/JU_AES.java new file mode 100644 index 0000000..2143e5b --- /dev/null +++ b/core/src/test/java/com/att/cadi/JU_AES.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * ============LICENSE_START==================================================== + * * org.onap.aai + * * =========================================================================== + * * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * * Copyright © 2017 Amdocs + * * =========================================================================== + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * * ============LICENSE_END==================================================== + * * + * * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * * + ******************************************************************************/ +package com.att.cadi; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; + +import javax.crypto.CipherInputStream; +import javax.crypto.CipherOutputStream; + +import org.junit.Test; + +import junit.framework.Assert; + +public class JU_AES { + + @Test + public void test() throws Exception { + AES aes = new AES(); + String orig = "I'm a password, really"; + byte[] passin = orig.getBytes(); + byte[] encrypted = aes.encrypt(passin); + byte[] b64enc = Symm.base64.encode(encrypted); + System.out.println(new String(b64enc)); + + encrypted = Symm.base64.decode(b64enc); + passin = aes.decrypt(encrypted); + Assert.assertEquals(orig, new String(passin)); + } + + @Test + public void testInputStream() throws Exception { + AES aes = new AES(); + String orig = "I'm a password, really"; + ByteArrayInputStream bais = new ByteArrayInputStream(orig.getBytes()); + CipherInputStream cis = aes.inputStream(bais, true); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + Symm.base64.encode(cis, baos); + cis.close(); + + byte[] b64encrypted; + System.out.println(new String(b64encrypted=baos.toByteArray())); + + + baos.reset(); + CipherOutputStream cos = aes.outputStream(baos, false); + Symm.base64.decode(new ByteArrayInputStream(b64encrypted),cos); + cos.close(); + Assert.assertEquals(orig, new String(baos.toByteArray())); + } + + @Test + public void testObtain() throws Exception { + byte[] keygen = Symm.baseCrypt().keygen(); + + Symm symm = Symm.obtain(new ByteArrayInputStream(keygen)); + + String orig ="Another Password, please"; + String encrypted = symm.enpass(orig); + System.out.println(encrypted); + String decrypted = symm.depass(encrypted); + System.out.println(decrypted); + Assert.assertEquals(orig, decrypted); + } + +} diff --git a/core/src/test/java/com/att/cadi/lur/test/JU_LocalLur.java b/core/src/test/java/com/att/cadi/lur/test/JU_LocalLur.java new file mode 100644 index 0000000..a4ada86 --- /dev/null +++ b/core/src/test/java/com/att/cadi/lur/test/JU_LocalLur.java @@ -0,0 +1,102 @@ +/******************************************************************************* + * ============LICENSE_START==================================================== + * * org.onap.aai + * * =========================================================================== + * * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * * Copyright © 2017 Amdocs + * * =========================================================================== + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * * ============LICENSE_END==================================================== + * * + * * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * * + ******************************************************************************/ +package com.att.cadi.lur.test; + +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 com.att.cadi.CredVal.Type; +import com.att.cadi.Lur; +import com.att.cadi.Permission; +import com.att.cadi.PropAccess; +import com.att.cadi.Symm; +import com.att.cadi.config.UsersDump; +import com.att.cadi.lur.LocalLur; +import com.att.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("", 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, "".getBytes())); + assertFalse(up.validate("m1234",Type.PASSWORD, "badPass".getBytes())); + + // Check fishAll + Set set = new TreeSet(); + List perms = new ArrayList(); + 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/core/src/test/java/com/att/cadi/lur/test/TestAccess.java b/core/src/test/java/com/att/cadi/lur/test/TestAccess.java new file mode 100644 index 0000000..f8e911c --- /dev/null +++ b/core/src/test/java/com/att/cadi/lur/test/TestAccess.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * ============LICENSE_START==================================================== + * * org.onap.aai + * * =========================================================================== + * * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * * Copyright © 2017 Amdocs + * * =========================================================================== + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * * ============LICENSE_END==================================================== + * * + * * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * * + ******************************************************************************/ +package com.att.cadi.lur.test; + +import java.io.IOException; +import java.io.InputStream; + +import com.att.cadi.Access; +import com.att.cadi.Symm; + +public class TestAccess implements Access { + private Symm symm; + + public TestAccess() { + symm = Symm.obtain(this); + } + + public TestAccess(Symm symmetric) { + symm = symmetric; + } + + public void log(Level level, Object... elements) { + boolean first = true; + for(int i=0;i=0) { + aa[i]=(byte)c; + } + } + System.out.println(new String(aa)); + + bsis.reset(); + + byte bb[] = new byte[400]; + for(int i=0;i=0) { + bb[i]=(byte)c; + } + } + System.out.println(new String(bb)); + + } finally { + bsis.close(); + fis.close(); + } + } + + @Test + public void testByteArray() throws Exception { + FileInputStream fis = new FileInputStream("test/CBUSevent.xml"); + BufferedServletInputStream bsis = new BufferedServletInputStream(fis); + try { + bsis.mark(0); + byte aa[] = new byte[260]; + bsis.read(aa); + System.out.println(new String(aa)); + + bsis.reset(); + + byte bb[] = new byte[400]; + bsis.read(bb); + System.out.println(new String(bb)); + + } finally { + bsis.close(); + fis.close(); + } + } + + @Test + public void testDoubleRead() throws Exception { + FileInputStream fis = new FileInputStream("test/CBUSevent.xml"); + BufferedServletInputStream bsis = new BufferedServletInputStream(fis); + try { + bsis.mark(0); + byte aa[] = new byte[260]; + bsis.read(aa); + System.out.println(new String(aa)); + + bsis.reset(); + + byte bb[] = new byte[400]; + bsis.read(bb); + System.out.println(new String(bb)); + + } finally { + bsis.close(); + fis.close(); + } + } + + @Test + public void testByteArray2() throws Exception { + FileInputStream fis = new FileInputStream("test/CBUSevent.xml"); + try { + BufferedServletInputStream bsis = new BufferedServletInputStream(fis); + byte[] content = null; + byte aa[] = new byte[500]; + for(int i=0;i<2000;++i) { + bsis.mark(0); + bsis.read(aa,0,260); + if(i==0)System.out.println(new String(aa)); + + bsis.reset(); + + bsis.read(aa,0,aa.length); + if(i==0) { + System.out.println(new String(aa)); + content = aa; + aa = new byte[400]; + } + bsis = new BufferedServletInputStream(new ByteArrayInputStream(content)); + + } + + System.out.println(new String(aa)); + + } finally { + fis.close(); + } + } + + // "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=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/core/src/test/java/com/att/cadi/test/JU_Capacitor.java b/core/src/test/java/com/att/cadi/test/JU_Capacitor.java new file mode 100644 index 0000000..c3f6d77 --- /dev/null +++ b/core/src/test/java/com/att/cadi/test/JU_Capacitor.java @@ -0,0 +1,145 @@ +/******************************************************************************* + * ============LICENSE_START==================================================== + * * org.onap.aai + * * =========================================================================== + * * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * * Copyright © 2017 Amdocs + * * =========================================================================== + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * * ============LICENSE_END==================================================== + * * + * * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * * + ******************************************************************************/ +package com.att.cadi.test; + +import static junit.framework.Assert.assertEquals; + +import org.junit.Test; + +import com.att.cadi.Capacitor; + +public class JU_Capacitor { + @Test + public void testA() { + Capacitor cap = new Capacitor(); + + for(int iter=0;iter<200;++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(); + } + } + + public final static String TEST_DATA = + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + + "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" + + "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" + + "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" + + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; + @Test + public void testB() { + Capacitor cap = new Capacitor(); + byte[] arrayA = TEST_DATA.getBytes(); + System.out.println(arrayA.length); + for(int iter=0;iter<200;++iter) { + for(int i=0;i=0); + } finally { + fis.close(); + } + + for(int i=0;i