From: IanHowell Date: Tue, 17 Apr 2018 13:17:47 +0000 (-0500) Subject: Improve coverage of Cadi X-Git-Tag: Beijing-2.1.1~104 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=0b8d6377d7d67800f5059d56352c017f712ccbc2;p=aaf%2Fauthz.git Improve coverage of Cadi Improved coverage of tests in cadi-core, cadi-aaf, and cadi-client Issue-ID: AAF-128 Change-Id: Ie7df52ede1586d127098937f8d42cc6314e7eaa7 Signed-off-by: IanHowell --- diff --git a/cadi/aaf/src/test/java/org/onap/aaf/cadi/lur/aaf/test/JU_TestAccess.java b/cadi/aaf/src/test/java/org/onap/aaf/cadi/lur/aaf/test/JU_TestAccess.java deleted file mode 100644 index 1d19a425..00000000 --- a/cadi/aaf/src/test/java/org/onap/aaf/cadi/lur/aaf/test/JU_TestAccess.java +++ /dev/null @@ -1,127 +0,0 @@ -/******************************************************************************* - * ============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.lur.aaf.test; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintStream; -import java.util.Properties; - -import org.onap.aaf.cadi.Access; -import org.onap.aaf.cadi.Symm; -import org.onap.aaf.cadi.config.Config; - -public class JU_TestAccess implements Access { - private Symm symm; - private PrintStream out; - - public JU_TestAccess(PrintStream out) { - this.out = out; - InputStream is = ClassLoader.getSystemResourceAsStream("cadi.properties"); - try { - System.getProperties().load(is); - } catch (IOException e) { - e.printStackTrace(out); - } finally { - try { - is.close(); - } catch (IOException e) { - e.printStackTrace(out); - } - } - - String keyfile = System.getProperty(Config.CADI_KEYFILE); - if(keyfile==null) { - System.err.println("No " + Config.CADI_KEYFILE + " in Classpath"); - } else { - try { - is = new FileInputStream(keyfile); - try { - symm = Symm.obtain(is); - } finally { - is.close(); - } - } catch (IOException e) { - e.printStackTrace(out); - } - } - - - - } - - public void log(Level level, Object... elements) { - boolean first = true; - for(int i=0;i { @Override public synchronized void invalidate(Item item) throws LocatorException { - if(--end<=0) { + if(--end<0) { refresh(); return; } @@ -186,7 +186,7 @@ public class PropertyLocator implements Locator { URI o,n; for(int j=0;j { return false; } } + + protected Socket createSocket() { + return new Socket(); + } private class PLItem implements Item { public int idx,order; diff --git a/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java b/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java index 614cafbb..d9f75ff1 100644 --- a/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java +++ b/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java @@ -39,6 +39,7 @@ public class JU_DNSLocator { @Test public void test() { + // TODO: Actually test this class - Ian DNSLocator dl = new DNSLocator(new PropAccess(), "https", "aaf.it.att.com","8150-8152"); try { @@ -48,7 +49,6 @@ public class JU_DNSLocator { URLConnection conn = url.openConnection(); conn.connect(); } catch (Exception e) { - e.printStackTrace(); } } diff --git a/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_PropertyLocator.java b/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_PropertyLocator.java index 5b13d277..b7558c02 100644 --- a/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_PropertyLocator.java +++ b/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_PropertyLocator.java @@ -21,80 +21,94 @@ package org.onap.aaf.cadi.locator.test; +import static org.junit.Assert.*; +import static org.hamcrest.CoreMatchers.*; +import static org.mockito.Mockito.*; +import org.junit.*; +import org.mockito.*; + +import java.net.Socket; import java.net.URI; -import org.junit.AfterClass; -import org.junit.Test; import org.onap.aaf.cadi.Locator.Item; +import org.onap.aaf.cadi.LocatorException; import org.onap.aaf.cadi.locator.PropertyLocator; -import static org.junit.Assert.*; - public class JU_PropertyLocator { - @AfterClass - public static void tearDownAfterClass() throws Exception { + @Mock + Socket socketMock; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + + when(socketMock.isConnected()).thenReturn(true); + when(socketMock.isClosed()).thenReturn(true).thenReturn(false); } @Test public void test() throws Exception { + String uris = "https://fred.wilma.com:26444,https://tom.jerry.com:[534-535]"; + PropertyLocator pl = new PropertyLocator(uris, 0L, 1000*60*20L) { + @Override protected Socket createSocket() { return socketMock; } + }; + String str = pl.toString(); + assertThat(str.contains("https://fred.wilma.com:26444"), is(true)); + assertThat(str.contains("https://tom.jerry.com:534"), is(true)); + assertThat(str.contains("https://tom.jerry.com:535"), is(true)); + + Item item = pl.first(); + assertThat(item.toString(), is("Item: 0 order: 0")); + + URI uri = pl.get(item); + assertThat(uri.toString(), is("https://fred.wilma.com:26444")); + + assertThat(pl.get(null), is(nullValue())); + + assertThat(pl.hasItems(), is(true)); + + assertThat(countItems(pl), is(3)); + pl.invalidate(pl.best()); - // TODO: Ian - Fix this test - assertTrue(true); + assertThat(countItems(pl), is(2)); + pl.invalidate(pl.best()); - // PropertyLocator pl = new PropertyLocator("https://localhost:2345,https://fred.wilma.com:26444,https://tom.jerry.com:534"); + assertThat(countItems(pl), is(1)); + + pl.invalidate(pl.best()); + + assertThat(pl.hasItems(), is(false)); + assertThat(countItems(pl), is(0)); + + pl.refresh(); + + assertThat(pl.hasItems(), is(true)); - // Item i; - // int count; - // boolean print = false; - // for(int j=0;j<900000;++j) { - // count = 0; - // for(i = pl.first();i!=null;i=pl.next(i)) { - // URI loc = pl.get(i); - // if(print)System.out.println(loc.toString()); - // ++count; - // } - // assertEquals(3,count); - // assertTrue(pl.hasItems()); - // if(print)System.out.println("---"); - // pl.invalidate(pl.best()); - - // count = 0; - // for(i = pl.first();i!=null;i=pl.next(i)) { - // URI loc = pl.get(i); - // if(print)System.out.println(loc.toString()); - // ++count; - // } - - // assertEquals(2,count); - // assertTrue(pl.hasItems()); - // if(print)System.out.println("---"); - // pl.invalidate(pl.best()); - - // count = 0; - // for(i = pl.first();i!=null;i=pl.next(i)) { - // URI loc = pl.get(i); - // if(print)System.out.println(loc.toString()); - // ++count; - // } - - // assertEquals(1,count); - // assertTrue(pl.hasItems()); - // if(print)System.out.println("---"); - // pl.invalidate(pl.best()); - - // count = 0; - // for(i = pl.first();i!=null;i=pl.next(i)) { - // URI loc = pl.get(i); - // if(print)System.out.println(loc.toString()); - // ++count; - // } - - // assertEquals(0,count); - // assertFalse(pl.hasItems()); - - // pl.refresh(); - // } + assertThat(pl.next(null), is(nullValue())); + + // coverage... + pl.invalidate(null); + pl.invalidate(null); + pl.invalidate(null); + pl.invalidate(null); + + pl.destroy(); + + pl = new PropertyLocator(uris); + } + + @Test(expected=LocatorException.class) + public void exceptionTest() throws LocatorException { + new PropertyLocator(null); + } + + private int countItems(PropertyLocator pl) throws LocatorException { + int count = 0; + for(Item i = pl.first(); i != null; i = pl.next(i)) { + ++count; + } + return count; } } diff --git a/cadi/client/src/test/java/org/onap/aaf/client/test/JU_TestAccess.java b/cadi/client/src/test/java/org/onap/aaf/client/test/JU_TestAccess.java deleted file mode 100644 index 7c65fd0c..00000000 --- a/cadi/client/src/test/java/org/onap/aaf/client/test/JU_TestAccess.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * ============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.client.test; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -import org.onap.aaf.cadi.Access; -import org.onap.aaf.cadi.CadiException; -import org.onap.aaf.cadi.Symm; - -// TODO: Ian [JUnit] JU_TestAccess isn't implementing all abstract methdods of Access -public class JU_TestAccess implements Access { - private Symm symm; - - public JU_TestAccess() throws CadiException { - symm = Symm.obtain(this); - } - - public void log(Level level, Object... elements) { - boolean first = true; - for(int i=0;i\n" + + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n"; + + private final static String groups = "myname:groupA,groupB"; + private final static String names = "admin:myname,yourname;suser:hisname,hername,m1234"; + + private AbsUserCache lur; + + @Before + public void setup() throws IOException { + outStream = new ByteArrayOutputStream(); + stdoutSuppressor = new ByteArrayOutputStream(); + + System.setOut(new PrintStream(stdoutSuppressor)); + + lur = new LocalLur(new PropAccess(), groups, names); + } + + @After + public void tearDown() { + System.setOut(System.out); + } + + @Test + public void writeTest() throws IOException { + UsersDump.write(outStream, lur); + String[] actualLines = Split.splitTrim('\n', outStream.toString()); + String[] expectedLines = Split.splitTrim('\n', expected); + + assertThat(actualLines.length, is(expectedLines.length)); + + // Check that the output starts with an XML tag + assertThat(actualLines[0], is(expectedLines[0])); + // Check that lines 2-4 are a comment + assertThat(actualLines[1], is(expectedLines[1])); + assertThat(actualLines[3], is(expectedLines[3])); + + // Check that the rest of the output matches the expected output + for (int i = 4; i < actualLines.length; i++) { + assertThat(actualLines[i], is(expectedLines[i])); + } + + // Run the test again with outStream as a PrintStream (for coverage) + outStream.reset(); + UsersDump.write(new PrintStream(outStream), lur); + actualLines = Split.splitTrim('\n', outStream.toString()); + + assertThat(actualLines.length, is(expectedLines.length)); + + // Check that the output starts with an XML tag + assertThat(actualLines[0], is(expectedLines[0])); + // Check that lines 2-4 are a comment + assertThat(actualLines[1], is(expectedLines[1])); + assertThat(actualLines[3], is(expectedLines[3])); + + // Check that the rest of the output matches the expected output + for (int i = 4; i < actualLines.length; i++) { + assertThat(actualLines[i], is(expectedLines[i])); + } + } + + @Test + public void updateUsersTest() { + String output; + File outputFile = new File("src/test/resources/userdump.xml"); + assertThat(outputFile.exists(), is(false)); + + output = UsersDump.updateUsers("src/test/resources/userdump.xml", (LocalLur) lur); + assertThat(output, is(nullValue())); + assertThat(outputFile.exists(), is(true)); + + output = UsersDump.updateUsers("src/test/resources/userdump.xml", (LocalLur) lur); + assertThat(output, is(nullValue())); + assertThat(outputFile.exists(), is(true)); + + outputFile.delete(); + } + +} 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 index b07cd296..dd90e220 100644 --- 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 @@ -39,7 +39,7 @@ import org.onap.aaf.cadi.wsse.XReader; public class JU_XReader { - private final static String TEST_DIR_NAME = "test"; + private final static String TEST_DIR_NAME = "src/test/resources"; private final static String TEST_XML_NAME = "test.xml"; private static File testXML; diff --git a/cadi/core/test/AESKeyFile b/cadi/core/src/test/resources/AESKeyFile similarity index 100% rename from cadi/core/test/AESKeyFile rename to cadi/core/src/test/resources/AESKeyFile diff --git a/cadi/core/test/CBUSevent.xml b/cadi/core/src/test/resources/CBUSevent.xml similarity index 100% rename from cadi/core/test/CBUSevent.xml rename to cadi/core/src/test/resources/CBUSevent.xml diff --git a/cadi/core/test/cadi.properties b/cadi/core/src/test/resources/cadi.properties similarity index 100% rename from cadi/core/test/cadi.properties rename to cadi/core/src/test/resources/cadi.properties diff --git a/cadi/core/test/cadi.properties.duplicate b/cadi/core/src/test/resources/cadi.properties.duplicate similarity index 100% rename from cadi/core/test/cadi.properties.duplicate rename to cadi/core/src/test/resources/cadi.properties.duplicate diff --git a/cadi/core/test/keyfile b/cadi/core/src/test/resources/keyfile similarity index 100% rename from cadi/core/test/keyfile rename to cadi/core/src/test/resources/keyfile