X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cadi%2Fcore%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Faaf%2Fcadi%2Fconfig%2Ftest%2FJU_MapBathConverter.java;h=7ea8e6fc01b70c5e14f492d1c0f9abafcaceb354;hb=1296352d8eafee57f982a4342ad79ada4aa56d28;hp=d9a5a0eba3c578ff9985d2d90b6f90e9053c27b9;hpb=59ffb7d529245c3bd0233dbf6cb0ae9fe9ccb856;p=aaf%2Fauthz.git diff --git a/cadi/core/src/test/java/org/onap/aaf/cadi/config/test/JU_MapBathConverter.java b/cadi/core/src/test/java/org/onap/aaf/cadi/config/test/JU_MapBathConverter.java index d9a5a0eb..7ea8e6fc 100644 --- a/cadi/core/src/test/java/org/onap/aaf/cadi/config/test/JU_MapBathConverter.java +++ b/cadi/core/src/test/java/org/onap/aaf/cadi/config/test/JU_MapBathConverter.java @@ -7,9 +7,9 @@ * 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. @@ -45,204 +45,204 @@ import junit.framework.Assert; /** * Test a simple Migration conversion tool for CADI - * + * * @author Instrumental(Jonathan) * */ public class JU_MapBathConverter { - private static final String NEW_USER_SOMETHING_ORG = "NEW_USER@Something.org"; - private static final String OLD_ID = "OLD_ID"; - private static final String SHARED_PASS = "SHARED_PASS"; - private static CSV csv; - private static ArrayList expected; - private static final Access access = new PropAccess(); + private static final String NEW_USER_SOMETHING_ORG = "NEW_USER@Something.org"; + private static final String OLD_ID = "OLD_ID"; + private static final String SHARED_PASS = "SHARED_PASS"; + private static CSV csv; + private static ArrayList expected; + private static final Access access = new PropAccess(); private final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - @BeforeClass - public static void createFile() throws IOException { - // Note, you cate a "MapBathConverter" by access to a File. - // We will create that file now. Local is fine. - csv = new CSV(access,"JU_MapBathConverter.csv"); - } - - @BeforeClass - public static void beforeClass() { - expected = new ArrayList<>(); - } - - @Before - public void before() { - expected.clear(); - } - - @Test - public void test() throws IOException, CadiException { - CSV.Writer cw = csv.writer(); - GregorianCalendar gc = new GregorianCalendar(); - gc.add(GregorianCalendar.MONTH, 6); - try { - try { - // CSV can simply be OLD ID and NEW, no passwords - cw.row(exp(OLD_ID), exp(NEW_USER_SOMETHING_ORG),sdf.format(gc.getTime())); - - // Style 1 - Incoming ID/pass, create new cred with NweID and same Pass - cw.row(exp(bath(OLD_ID,SHARED_PASS)), exp(NEW_USER_SOMETHING_ORG),sdf.format(gc.getTime())); - // the response should be Basic with NEW_ID and OLD_PASS - - // Style 2 - cw.row(exp(bath(OLD_ID,"OLD_PASS")), exp(bath(NEW_USER_SOMETHING_ORG,"NEW_PASS")),sdf.format(gc.getTime())); - - } finally { - cw.close(); - } - - final Iterator exp = expected.iterator(); - csv.visit(new Visitor() { - @Override - public void visit(List row) { - int i=0; - for(String s : row) { - switch(i++) { - case 0: - case 1: - Assert.assertEquals(exp.next(), s); - break; - case 2: - try { - Date.valueOf(s); - } catch (Exception e) { - Assert.assertTrue("Last entry should be a date",false); - } - break; - default: - Assert.fail("There should only be 3 columns in this test case."); - } - } - } - }); - - MapBathConverter mbc = new MapBathConverter(access, csv); - - // Check no lookup just returns the same - Assert.assertEquals("NonKey", "NonKey"); // if not in map, expect same value - - Iterator exp1 = expected.iterator(); - // there's no passwords in CSV - String old = exp1.next(); - String nw = exp1.next(); - Assert.assertEquals(nw, mbc.convert(access,old)); - - Assert.assertEquals(bath(NEW_USER_SOMETHING_ORG,SHARED_PASS), mbc.convert(access,bath(OLD_ID,SHARED_PASS))); - - // Style 1 (new cred, old password) - old = exp1.next(); - nw = bath(exp1.next(),SHARED_PASS); - Assert.assertEquals(nw, mbc.convert(access,old)); - - // Style 2 - old = exp1.next(); - nw = exp1.next(); - Assert.assertEquals(nw, mbc.convert(access,old)); - - } finally { - csv.delete(); - } - } - - @Test - public void testInsecureRole() throws IOException { - CSV.Writer cw = csv.writer(); - GregorianCalendar gc = new GregorianCalendar(); - gc.add(GregorianCalendar.MONTH, 6); - try { - try { - // Invalid Scenario - Non Authenticated ID to authenticated User - cw.row(exp(OLD_ID), exp(bath(NEW_USER_SOMETHING_ORG,"NEW_PASS")),sdf.format(gc.getTime())); - - } finally { - cw.close(); - } - - try { - new MapBathConverter(access, csv); - Assert.fail("Invalid Data should throw Exception"); - } catch (CadiException e) { - Assert.assertTrue("Invalid Data should throw Exception",true); - } - - } finally { - csv.delete(); - } - } - - @Test - public void testTooFewColumns() throws IOException, CadiException { - CSV.Writer cw = csv.writer(); - try { - try { - cw.row(exp(bath(OLD_ID,"OLD_PASS")), exp(bath(NEW_USER_SOMETHING_ORG,"NEW_PASS"))); - } finally { - cw.close(); - } - - try { - new MapBathConverter(access, csv); - Assert.fail("file with too few rows should throw exception"); - } catch(CadiException | IOException e) { - Assert.assertTrue("Correctly thrown Exception",true); - } - } finally { - csv.delete(); - } - } - - @Test - public void testNoFile() { - try { - new MapBathConverter(access, new CSV(access,"Bogus")); - Assert.fail("Non Existent File should throw exception"); - } catch(CadiException | IOException e) { - Assert.assertTrue("Correctly thrown Exception",true); - } - } - - @Test - public void testBadRows() throws IOException { - try { - Writer cw = csv.writer(); - try { - cw.row("Single Column"); - } finally { - cw.close(); - } - - try { - new MapBathConverter(access,csv); - Assert.fail("Non Existent File should throw exception"); - } catch(CadiException | IOException e) { - Assert.assertTrue("Correctly thrown Exception",true); - } - } finally { - csv.delete(); - } - - // Check for deletion - Assert.assertFalse(csv.toString() + "should have been deleted",new File(csv.toString()).exists()); - } - - private String bath(String user, String password) throws IOException { - StringBuilder sb = new StringBuilder(user); - sb.append(':'); - sb.append(password); - byte[] encoded = Symm.base64noSplit.encode(sb.toString().getBytes()); - sb.setLength(0); - sb.append("Basic "); - sb.append(new String(encoded)); - return sb.toString(); - } - - private String exp(String s) { - expected.add(s); - return s; - } + @BeforeClass + public static void createFile() throws IOException { + // Note, you cate a "MapBathConverter" by access to a File. + // We will create that file now. Local is fine. + csv = new CSV(access,"JU_MapBathConverter.csv"); + } + + @BeforeClass + public static void beforeClass() { + expected = new ArrayList<>(); + } + + @Before + public void before() { + expected.clear(); + } + + @Test + public void test() throws IOException, CadiException { + CSV.Writer cw = csv.writer(); + GregorianCalendar gc = new GregorianCalendar(); + gc.add(GregorianCalendar.MONTH, 6); + try { + try { + // CSV can simply be OLD ID and NEW, no passwords + cw.row(exp(OLD_ID), exp(NEW_USER_SOMETHING_ORG),sdf.format(gc.getTime())); + + // Style 1 - Incoming ID/pass, create new cred with NweID and same Pass + cw.row(exp(bath(OLD_ID,SHARED_PASS)), exp(NEW_USER_SOMETHING_ORG),sdf.format(gc.getTime())); + // the response should be Basic with NEW_ID and OLD_PASS + + // Style 2 + cw.row(exp(bath(OLD_ID,"OLD_PASS")), exp(bath(NEW_USER_SOMETHING_ORG,"NEW_PASS")),sdf.format(gc.getTime())); + + } finally { + cw.close(); + } + + final Iterator exp = expected.iterator(); + csv.visit(new Visitor() { + @Override + public void visit(List row) { + int i=0; + for(String s : row) { + switch(i++) { + case 0: + case 1: + Assert.assertEquals(exp.next(), s); + break; + case 2: + try { + Date.valueOf(s); + } catch (Exception e) { + Assert.assertTrue("Last entry should be a date",false); + } + break; + default: + Assert.fail("There should only be 3 columns in this test case."); + } + } + } + }); + + MapBathConverter mbc = new MapBathConverter(access, csv); + + // Check no lookup just returns the same + Assert.assertEquals("NonKey", "NonKey"); // if not in map, expect same value + + Iterator exp1 = expected.iterator(); + // there's no passwords in CSV + String old = exp1.next(); + String nw = exp1.next(); + Assert.assertEquals(nw, mbc.convert(access,old)); + + Assert.assertEquals(bath(NEW_USER_SOMETHING_ORG,SHARED_PASS), mbc.convert(access,bath(OLD_ID,SHARED_PASS))); + + // Style 1 (new cred, old password) + old = exp1.next(); + nw = bath(exp1.next(),SHARED_PASS); + Assert.assertEquals(nw, mbc.convert(access,old)); + + // Style 2 + old = exp1.next(); + nw = exp1.next(); + Assert.assertEquals(nw, mbc.convert(access,old)); + + } finally { + csv.delete(); + } + } + + @Test + public void testInsecureRole() throws IOException { + CSV.Writer cw = csv.writer(); + GregorianCalendar gc = new GregorianCalendar(); + gc.add(GregorianCalendar.MONTH, 6); + try { + try { + // Invalid Scenario - Non Authenticated ID to authenticated User + cw.row(exp(OLD_ID), exp(bath(NEW_USER_SOMETHING_ORG,"NEW_PASS")),sdf.format(gc.getTime())); + + } finally { + cw.close(); + } + + try { + new MapBathConverter(access, csv); + Assert.fail("Invalid Data should throw Exception"); + } catch (CadiException e) { + Assert.assertTrue("Invalid Data should throw Exception",true); + } + + } finally { + csv.delete(); + } + } + + @Test + public void testTooFewColumns() throws IOException, CadiException { + CSV.Writer cw = csv.writer(); + try { + try { + cw.row(exp(bath(OLD_ID,"OLD_PASS")), exp(bath(NEW_USER_SOMETHING_ORG,"NEW_PASS"))); + } finally { + cw.close(); + } + + try { + new MapBathConverter(access, csv); + Assert.fail("file with too few rows should throw exception"); + } catch(CadiException | IOException e) { + Assert.assertTrue("Correctly thrown Exception",true); + } + } finally { + csv.delete(); + } + } + + @Test + public void testNoFile() { + try { + new MapBathConverter(access, new CSV(access,"Bogus")); + Assert.fail("Non Existent File should throw exception"); + } catch(CadiException | IOException e) { + Assert.assertTrue("Correctly thrown Exception",true); + } + } + + @Test + public void testBadRows() throws IOException { + try { + Writer cw = csv.writer(); + try { + cw.row("Single Column"); + } finally { + cw.close(); + } + + try { + new MapBathConverter(access,csv); + Assert.fail("Non Existent File should throw exception"); + } catch(CadiException | IOException e) { + Assert.assertTrue("Correctly thrown Exception",true); + } + } finally { + csv.delete(); + } + + // Check for deletion + Assert.assertFalse(csv.toString() + "should have been deleted",new File(csv.toString()).exists()); + } + + private String bath(String user, String password) throws IOException { + StringBuilder sb = new StringBuilder(user); + sb.append(':'); + sb.append(password); + byte[] encoded = Symm.base64noSplit.encode(sb.toString().getBytes()); + sb.setLength(0); + sb.append("Basic "); + sb.append(new String(encoded)); + return sb.toString(); + } + + private String exp(String s) { + expected.add(s); + return s; + } }