diff options
15 files changed, 2372 insertions, 41 deletions
diff --git a/auth/auth-batch/file b/auth/auth-batch/file new file mode 100644 index 00000000..4055fcda --- /dev/null +++ b/auth/auth-batch/file @@ -0,0 +1,4 @@ +instructions +instructions +promptinstructions +promptinstructions diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/InputIterator.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/InputIterator.java index 954d6b47..b8b96187 100644 --- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/InputIterator.java +++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/InputIterator.java @@ -33,7 +33,8 @@ import org.onap.aaf.auth.env.AuthzTrans; public class InputIterator implements Iterable<String> { private BufferedReader in; private final PrintStream out; - private final String prompt, instructions; + private final String prompt; + private final String instructions; private static AuthzTrans trans; public InputIterator(BufferedReader in, PrintStream out, String prompt, String instructions) { @@ -71,6 +72,7 @@ public class InputIterator implements Iterable<String> { @Override public void remove() { + // To Do } }; } diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Notification.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Notification.java index ac6cb67d..ae0d37b5 100644 --- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Notification.java +++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Notification.java @@ -84,6 +84,23 @@ public class Notification { private int current; public Organization org; public int count; + + public static Creator<Notification> v2_0_18 = new Creator<Notification>() { + @Override + public Notification create(Row row) { + int idx =row.getInt(1); + TYPE typeCreator = TYPE.get(idx); + if (typeCreator==null) { + return null; + } + return new Notification(row.getString(0), typeCreator, row.getTimestamp(2), row.getInt(3)); + } + + @Override + public String select() { + return "SELECT user,type,last,checksum FROM authz.notify LIMIT 100000"; + } + }; private Notification(String user, TYPE nt, Date last, int checksum) { this.user = user; @@ -144,23 +161,6 @@ public class Notification { public static Notification create(String user, TYPE type) { return new Notification(user,type,null,0); } - - public static Creator<Notification> v2_0_18 = new Creator<Notification>() { - @Override - public Notification create(Row row) { - int idx =row.getInt(1); - TYPE typeCreator = TYPE.get(idx); - if (typeCreator==null) { - return null; - } - return new Notification(row.getString(0), typeCreator, row.getTimestamp(2), row.getInt(3)); - } - - @Override - public String select() { - return "SELECT user,type,last,checksum FROM authz.notify LIMIT 100000"; - } - }; public void set(Message msg) { diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/NotifyApprovals.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/NotifyApprovals.java index 4acf269d..7138a7c9 100644 --- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/NotifyApprovals.java +++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/NotifyApprovals.java @@ -3,6 +3,8 @@ * org.onap.aaf * =========================================================================== * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. + * + * Modifications Copyright (C) 2018 IBM. * =========================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -107,14 +109,16 @@ public class NotifyApprovals extends Batch { Message msg = new Message(); int emailCount = 0; List<Approval> pending = new ArrayList<>(); - boolean isOwner,isSupervisor; + boolean isOwner; + boolean isSupervisor; for (Entry<String, List<Approval>> es : Approval.byApprover.entrySet()) { isOwner = isSupervisor = false; String approver = es.getKey(); if (approver.indexOf('@')<0) { approver += org.getRealm(); } - Date latestNotify=null, soonestExpire=null; + Date latestNotify=null; + Date soonestExpire=null; GregorianCalendar latest=new GregorianCalendar(); GregorianCalendar soonest=new GregorianCalendar(); pending.clear(); @@ -165,8 +169,7 @@ public class NotifyApprovals extends Batch { } } } - if (go) { - if (maxEmails>emailCount++) { + if (go && (maxEmails>emailCount++)) { try { Organization org = OrganizationFactory.obtain(env, approver); Identity user = org.getIdentity(noAvg, approver); @@ -222,7 +225,6 @@ public class NotifyApprovals extends Batch { } catch (OrganizationException e) { trans.info().log(e); } - } } } } diff --git a/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_ActionDAO.java b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_ActionDAO.java index 9376da4b..39743896 100644 --- a/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_ActionDAO.java +++ b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_ActionDAO.java @@ -21,37 +21,46 @@ package org.onap.aaf.auth.batch.actions.test; -import static org.junit.Assert.*; -import org.junit.After; +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.io.IOException; +import java.util.Properties; + import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.onap.aaf.auth.batch.actions.ActionDAO; +import org.onap.aaf.auth.common.Define; +import org.onap.aaf.auth.dao.hl.Function; +import org.onap.aaf.auth.dao.hl.Question; import org.onap.aaf.auth.env.AuthzTrans; import org.onap.aaf.auth.layer.Result; +import org.onap.aaf.cadi.CadiException; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.config.Config; import org.onap.aaf.misc.env.APIException; +import org.onap.aaf.misc.env.LogTarget; +import org.onap.aaf.misc.env.TimeTaken; import com.datastax.driver.core.Cluster; -import com.datastax.driver.core.Configuration; -import com.datastax.driver.core.Cluster.Initializer; -import com.datastax.driver.core.Host.StateListener; - -import static org.mockito.Mockito.*; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.util.Collection; -import java.util.List; - -import org.junit.Test; +import com.datastax.driver.core.ColumnDefinitions; +import com.datastax.driver.core.PreparedId; +import com.datastax.driver.core.PreparedStatement; +import com.datastax.driver.core.Session; public class JU_ActionDAO { - AuthzTrans aTrans; - Cluster cluster; - ActionDAOStub actionDAOStub; - ActionDAOStub actionDAOStub1; + @Mock + AuthzTrans trans; + @Mock + Cluster cluster; + @Mock + PropAccess access; + + @Mock + ActionDAO actionObj; private class ActionDAOStub extends ActionDAO { @@ -75,6 +84,34 @@ public class JU_ActionDAO { @Before public void setUp() throws APIException, IOException { + initMocks(this); + Session sessionObj=Mockito.mock(Session.class); + PreparedStatement psObj =Mockito.mock(PreparedStatement.class); + try { + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug(); + Mockito.doReturn("10").when(trans).getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF); + Mockito.doReturn(Mockito.mock(TimeTaken.class)).when(trans).start(Mockito.anyString(),Mockito.anyInt()); + Mockito.doReturn(sessionObj).when(cluster).connect("authz"); + Mockito.doReturn(psObj).when(sessionObj).prepare(Mockito.anyString()); + + Mockito.doReturn(Mockito.mock(ColumnDefinitions.class)).when(psObj).getVariables(); + Mockito.doReturn(Mockito.mock(PreparedId.class)).when(psObj).getPreparedId(); + Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties(); + Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS,"org.osaaf.aaf"); + Define.set(access); + actionObj = new ActionDAOStub(trans, cluster, true); + } catch (APIException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CadiException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } // Cluster.Initializer cInit = mock(Cluster.Initializer.class); // Cluster.Builder cBuild = new Cluster.Builder(); // cBuild.addContactPoint("test"); @@ -91,5 +128,44 @@ public class JU_ActionDAO { // actionDAOStub = new ActionDAOStub(aTrans,cluster,true); // actionDAOStub1 = new ActionDAOStub(aTrans, actionDAOStub); } + + @Test + public void testGetSession() { + try { + Session session = actionObj.getSession(trans); + assertTrue(session.toString().contains("Mock for Session")); + } catch (APIException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testQuestion() { + Question retVal = actionObj.question(); + assertTrue(retVal.toString().contains("org.onap.aaf.auth.dao.hl.Question")); + } + + @Test + public void testFunction() { + Function retVal = actionObj.function(); + assertTrue(retVal.toString().contains("org.onap.aaf.auth.dao.hl.Function")); + } + + @Test + public void testClose() { + actionObj.close(trans); +// assertTrue(session.toString().contains("Mock for Session")); + } + + @Test + public void testCloseFalse() { + actionObj = new ActionDAOStub(trans, Mockito.mock(ActionDAO.class)); + actionObj.close(trans); +// assertTrue(session.toString().contains("Mock for Session")); + } } diff --git a/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_CacheTouch.java b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_CacheTouch.java new file mode 100644 index 00000000..99e11a5a --- /dev/null +++ b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_CacheTouch.java @@ -0,0 +1,124 @@ +/** + * ============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.auth.batch.actions.test; + +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.io.IOException; +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aaf.auth.batch.actions.ActionDAO; +import org.onap.aaf.auth.batch.actions.CacheTouch; +import org.onap.aaf.auth.common.Define; +import org.onap.aaf.auth.env.AuthzTrans; +import org.onap.aaf.auth.layer.Result; +import org.onap.aaf.cadi.CadiException; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.config.Config; +import org.onap.aaf.misc.env.APIException; +import org.onap.aaf.misc.env.LogTarget; +import org.onap.aaf.misc.env.TimeTaken; + +import com.datastax.driver.core.Cluster; +import com.datastax.driver.core.ColumnDefinitions; +import com.datastax.driver.core.PreparedId; +import com.datastax.driver.core.PreparedStatement; +import com.datastax.driver.core.Session; + +public class JU_CacheTouch { + + @Mock + AuthzTrans trans; + @Mock + Cluster cluster; + @Mock + PropAccess access; + + @Mock + CacheTouch actionObj; + + + @Before + public void setUp() throws APIException, IOException { + initMocks(this); + Session sessionObj=Mockito.mock(Session.class); + PreparedStatement psObj =Mockito.mock(PreparedStatement.class); + try { + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info(); + Mockito.doReturn("10").when(trans).getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF); + Mockito.doReturn(Mockito.mock(TimeTaken.class)).when(trans).start(Mockito.anyString(),Mockito.anyInt()); + Mockito.doReturn(sessionObj).when(cluster).connect("authz"); + Mockito.doReturn(psObj).when(sessionObj).prepare(Mockito.anyString()); + + Mockito.doReturn(Mockito.mock(ColumnDefinitions.class)).when(psObj).getVariables(); + Mockito.doReturn(Mockito.mock(PreparedId.class)).when(psObj).getPreparedId(); + Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties(); + Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS,"org.osaaf.aaf"); + Define.set(access); + actionObj = new CacheTouch(trans, cluster, true); + } catch (APIException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CadiException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testExec() { + Result<Void> session = actionObj.exec(trans,"test","test"); + assertTrue(session.toString().contains("Success")); + + } + @Test + public void testExecElse() { + try { + actionObj = new CacheTouch(trans, cluster, false); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Result<Void> session = actionObj.exec(trans,"test","test"); + assertTrue(session.toString().contains("No Cache Data named test")); + + } + + @Test + public void test2Argonstructor() { + actionObj = new CacheTouch(trans, Mockito.mock(ActionDAO.class)); + + + } + +} diff --git a/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_RoleCreate.java b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_RoleCreate.java new file mode 100644 index 00000000..cf563fdf --- /dev/null +++ b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_RoleCreate.java @@ -0,0 +1,249 @@ +/** + * ============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.auth.batch.actions.test; + +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aaf.auth.batch.actions.ActionDAO; +import org.onap.aaf.auth.batch.actions.RoleCreate; +import org.onap.aaf.auth.batch.helpers.Role; +import org.onap.aaf.auth.batch.helpers.UserRole; +import org.onap.aaf.auth.common.Define; +import org.onap.aaf.auth.dao.cached.CachedRoleDAO; +import org.onap.aaf.auth.dao.cass.RoleDAO; +import org.onap.aaf.auth.dao.cass.UserRoleDAO.Data; +import org.onap.aaf.auth.dao.hl.Question; +import org.onap.aaf.auth.env.AuthzTrans; +import org.onap.aaf.auth.layer.Result; +import org.onap.aaf.cadi.CadiException; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.config.Config; +import org.onap.aaf.misc.env.APIException; +import org.onap.aaf.misc.env.LogTarget; +import org.onap.aaf.misc.env.TimeTaken; + +import com.datastax.driver.core.Cluster; +import com.datastax.driver.core.ColumnDefinitions; +import com.datastax.driver.core.PreparedId; +import com.datastax.driver.core.PreparedStatement; +import com.datastax.driver.core.Session; + +public class JU_RoleCreate { + + @Mock + AuthzTrans trans; + @Mock + Cluster cluster; + @Mock + PropAccess access; + + @Mock + RoleCreate createObj; + + + @Before + public void setUp() throws APIException, IOException { + initMocks(this); + Session sessionObj=Mockito.mock(Session.class); + PreparedStatement psObj =Mockito.mock(PreparedStatement.class); + try { + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error(); + Mockito.doReturn("10").when(trans).getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF); + Mockito.doReturn(Mockito.mock(TimeTaken.class)).when(trans).start(Mockito.anyString(),Mockito.anyInt()); + Mockito.doReturn(sessionObj).when(cluster).connect("authz"); + Mockito.doReturn(psObj).when(sessionObj).prepare(Mockito.anyString()); + + Mockito.doReturn(Mockito.mock(ColumnDefinitions.class)).when(psObj).getVariables(); + Mockito.doReturn(Mockito.mock(PreparedId.class)).when(psObj).getPreparedId(); + Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties(); + Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS,"org.osaaf.aaf"); + Define.set(access); + createObj = new RoleCreate(trans, cluster, true); + } catch (APIException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CadiException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testExec() { + Result<RoleDAO.Data> retVal = createObj.exec(trans,Mockito.mock(Role.class),"test"); + assertTrue(retVal.toString().contains("Success")); + + } + @Test + public void testExecElse() { + Question ques = Mockito.mock(Question.class); + try { + Role roleObj = new Role("test","test","test",new HashSet()); + + CachedRoleDAO roleDaoObj = Mockito.mock(CachedRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + data.expires = new Date(); + dataAL.add(data); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL,0,"test",new String[0]); + + Mockito.doReturn(retVal1).when(roleDaoObj).create(Mockito.any(), Mockito.any()); + + createObj = new RoleCreateImpl(trans, cluster, false, ques, roleDaoObj); + Result<RoleDAO.Data> session = createObj.exec(trans, roleObj, "test"); + assertTrue(0 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseDateLess() { + Question ques = Mockito.mock(Question.class); + try { + Role roleObj = new Role("test","test","test",new HashSet()); + + CachedRoleDAO userRoleDaoObj = Mockito.mock(CachedRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + DateFormat sdf = new SimpleDateFormat("mm/dd/yyyy"); + try { + data.expires = sdf.parse("01/01/2100"); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + dataAL.add(data); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL,0,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).create(Mockito.any(), Mockito.any()); + + createObj = new RoleCreateImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<RoleDAO.Data> session = createObj.exec(trans, roleObj, "test"); + assertTrue(0 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseNok() { + Question ques = Mockito.mock(Question.class); + try { + Role roleObj = new Role("test","test","test",new HashSet()); + + CachedRoleDAO userRoleDaoObj = Mockito.mock(CachedRoleDAO.class); + + Result<Void> retVal1 = new Result<Void>(null,1,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).create(Mockito.any(), Mockito.any()); + + createObj = new RoleCreateImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<RoleDAO.Data> session = createObj.exec(trans, roleObj, "test"); + assertTrue(session.toString().contains("test")); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void test2Argonstructor() { + createObj = new RoleCreate(trans, Mockito.mock(ActionDAO.class)); + } + + class RoleCreateImpl extends RoleCreate{ + + public RoleCreateImpl(AuthzTrans trans, Cluster cluster, boolean dryRun, Question ques, CachedRoleDAO userRoleDaoObj) throws APIException, IOException { + super(trans, cluster, dryRun); + setQuestion(ques, userRoleDaoObj); + } + + public void setQuestion(Question ques, CachedRoleDAO userRoleDaoObj) { + Field field, nsDaoField; + try { + field = RoleCreateImpl.class.getSuperclass().getSuperclass().getDeclaredField("q"); + nsDaoField = Question.class.getDeclaredField("roleDAO"); + + field.setAccessible(true); + nsDaoField.setAccessible(true); + // remove final modifier from field + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); + modifiersField.setInt(nsDaoField, field.getModifiers() & ~Modifier.FINAL); + + field.set(this, ques); + nsDaoField.set(ques, userRoleDaoObj); + } catch (NoSuchFieldException | SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } +} diff --git a/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_RoleDeleteTest.java b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_RoleDeleteTest.java new file mode 100644 index 00000000..83899fd9 --- /dev/null +++ b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_RoleDeleteTest.java @@ -0,0 +1,249 @@ +/** + * ============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.auth.batch.actions.test; + +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aaf.auth.batch.actions.ActionDAO; +import org.onap.aaf.auth.batch.actions.RoleDelete; +import org.onap.aaf.auth.batch.helpers.Role; +import org.onap.aaf.auth.batch.helpers.UserRole; +import org.onap.aaf.auth.common.Define; +import org.onap.aaf.auth.dao.cached.CachedRoleDAO; +import org.onap.aaf.auth.dao.cass.RoleDAO; +import org.onap.aaf.auth.dao.cass.UserRoleDAO.Data; +import org.onap.aaf.auth.dao.hl.Question; +import org.onap.aaf.auth.env.AuthzTrans; +import org.onap.aaf.auth.layer.Result; +import org.onap.aaf.cadi.CadiException; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.config.Config; +import org.onap.aaf.misc.env.APIException; +import org.onap.aaf.misc.env.LogTarget; +import org.onap.aaf.misc.env.TimeTaken; + +import com.datastax.driver.core.Cluster; +import com.datastax.driver.core.ColumnDefinitions; +import com.datastax.driver.core.PreparedId; +import com.datastax.driver.core.PreparedStatement; +import com.datastax.driver.core.Session; + +public class JU_RoleDeleteTest { + + @Mock + AuthzTrans trans; + @Mock + Cluster cluster; + @Mock + PropAccess access; + + @Mock + RoleDelete createObj; + + + @Before + public void setUp() throws APIException, IOException { + initMocks(this); + Session sessionObj=Mockito.mock(Session.class); + PreparedStatement psObj =Mockito.mock(PreparedStatement.class); + try { + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error(); + Mockito.doReturn("10").when(trans).getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF); + Mockito.doReturn(Mockito.mock(TimeTaken.class)).when(trans).start(Mockito.anyString(),Mockito.anyInt()); + Mockito.doReturn(sessionObj).when(cluster).connect("authz"); + Mockito.doReturn(psObj).when(sessionObj).prepare(Mockito.anyString()); + + Mockito.doReturn(Mockito.mock(ColumnDefinitions.class)).when(psObj).getVariables(); + Mockito.doReturn(Mockito.mock(PreparedId.class)).when(psObj).getPreparedId(); + Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties(); + Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS,"org.osaaf.aaf"); + Define.set(access); + createObj = new RoleDelete(trans, cluster, true); + } catch (APIException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CadiException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testExec() { + Result<Void> retVal = createObj.exec(trans,Mockito.mock(Role.class),"test"); + assertTrue(retVal.toString().contains("Success")); + + } + @Test + public void testExecElse() { + Question ques = Mockito.mock(Question.class); + try { + Role roleObj = new Role("test","test","test",new HashSet()); + + CachedRoleDAO roleDaoObj = Mockito.mock(CachedRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + data.expires = new Date(); + dataAL.add(data); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL,0,"test",new String[0]); + + Mockito.doReturn(retVal1).when(roleDaoObj).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean()); + + createObj = new RoleDeleteImpl(trans, cluster, false, ques, roleDaoObj); + Result<Void> session = createObj.exec(trans, roleObj, "test"); + assertTrue(0 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseDateLess() { + Question ques = Mockito.mock(Question.class); + try { + Role roleObj = new Role("test","test","test",new HashSet()); + + CachedRoleDAO userRoleDaoObj = Mockito.mock(CachedRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + DateFormat sdf = new SimpleDateFormat("mm/dd/yyyy"); + try { + data.expires = sdf.parse("01/01/2100"); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + dataAL.add(data); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL,0,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean()); + + createObj = new RoleDeleteImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Void> session = createObj.exec(trans, roleObj, "test"); + assertTrue(0 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseNok() { + Question ques = Mockito.mock(Question.class); + try { + Role roleObj = new Role("test","test","test",new HashSet()); + + CachedRoleDAO userRoleDaoObj = Mockito.mock(CachedRoleDAO.class); + + Result<Void> retVal1 = new Result<Void>(null,1,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean()); + + createObj = new RoleDeleteImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Void> session = createObj.exec(trans, roleObj, "test"); + assertTrue(session.toString().contains("test")); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void test2Argonstructor() { + createObj = new RoleDelete(trans, Mockito.mock(ActionDAO.class)); + } + + class RoleDeleteImpl extends RoleDelete{ + + public RoleDeleteImpl(AuthzTrans trans, Cluster cluster, boolean dryRun, Question ques, CachedRoleDAO userRoleDaoObj) throws APIException, IOException { + super(trans, cluster, dryRun); + setQuestion(ques, userRoleDaoObj); + } + + public void setQuestion(Question ques, CachedRoleDAO userRoleDaoObj) { + Field field, nsDaoField; + try { + field = RoleDeleteImpl.class.getSuperclass().getSuperclass().getDeclaredField("q"); + nsDaoField = Question.class.getDeclaredField("roleDAO"); + + field.setAccessible(true); + nsDaoField.setAccessible(true); + // remove final modifier from field + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); + modifiersField.setInt(nsDaoField, field.getModifiers() & ~Modifier.FINAL); + + field.set(this, ques); + nsDaoField.set(ques, userRoleDaoObj); + } catch (NoSuchFieldException | SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } +} diff --git a/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URAdd.java b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URAdd.java new file mode 100644 index 00000000..50fb962b --- /dev/null +++ b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URAdd.java @@ -0,0 +1,246 @@ +/** + * ============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.auth.batch.actions.test; + +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aaf.auth.batch.actions.ActionDAO; +import org.onap.aaf.auth.batch.actions.URAdd; +import org.onap.aaf.auth.batch.helpers.UserRole; +import org.onap.aaf.auth.common.Define; +import org.onap.aaf.auth.dao.cached.CachedUserRoleDAO; +import org.onap.aaf.auth.dao.cass.UserRoleDAO.Data; +import org.onap.aaf.auth.dao.hl.Question; +import org.onap.aaf.auth.env.AuthzTrans; +import org.onap.aaf.auth.layer.Result; +import org.onap.aaf.cadi.CadiException; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.config.Config; +import org.onap.aaf.misc.env.APIException; +import org.onap.aaf.misc.env.LogTarget; +import org.onap.aaf.misc.env.TimeTaken; + +import com.datastax.driver.core.Cluster; +import com.datastax.driver.core.ColumnDefinitions; +import com.datastax.driver.core.PreparedId; +import com.datastax.driver.core.PreparedStatement; +import com.datastax.driver.core.Session; + +public class JU_URAdd { + + @Mock + AuthzTrans trans; + @Mock + Cluster cluster; + @Mock + PropAccess access; + + @Mock + URAdd addObj; + + + @Before + public void setUp() throws APIException, IOException { + initMocks(this); + Session sessionObj=Mockito.mock(Session.class); + PreparedStatement psObj =Mockito.mock(PreparedStatement.class); + try { + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error(); + Mockito.doReturn("10").when(trans).getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF); + Mockito.doReturn(Mockito.mock(TimeTaken.class)).when(trans).start(Mockito.anyString(),Mockito.anyInt()); + Mockito.doReturn(sessionObj).when(cluster).connect("authz"); + Mockito.doReturn(psObj).when(sessionObj).prepare(Mockito.anyString()); + + Mockito.doReturn(Mockito.mock(ColumnDefinitions.class)).when(psObj).getVariables(); + Mockito.doReturn(Mockito.mock(PreparedId.class)).when(psObj).getPreparedId(); + Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties(); + Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS,"org.osaaf.aaf"); + Define.set(access); + addObj = new URAdd(trans, cluster, true); + } catch (APIException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CadiException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testExec() { + Result<Data> retVal = addObj.exec(trans,Mockito.mock(UserRole.class),"test"); + assertTrue(retVal.toString().contains("Success")); + + } + @Test + public void testExecElse() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test","test","test",new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + data.expires = new Date(); + dataAL.add(data); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL,0,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).create(trans, userRoleObj.urdd()); + + addObj = new URAddImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Data> session = addObj.exec(trans, userRoleObj, "test"); + assertTrue(0 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseDateLess() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test","test","test",new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + DateFormat sdf = new SimpleDateFormat("mm/dd/yyyy"); + try { + data.expires = sdf.parse("01/01/2100"); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + dataAL.add(data); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL,0,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).create(trans, userRoleObj.urdd()); + + addObj = new URAddImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Data> session = addObj.exec(trans, userRoleObj, "test"); + assertTrue(0 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseNok() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test","test","test",new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + Result<Void> retVal1 = new Result<Void>(null,1,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).create(trans, userRoleObj.urdd()); + + addObj = new URAddImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Data> session = addObj.exec(trans, userRoleObj, "test"); + assertTrue(session.toString().contains("test")); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void test2Argonstructor() { + addObj = new URAdd(trans, Mockito.mock(ActionDAO.class)); + } + + class URAddImpl extends URAdd{ + + public URAddImpl(AuthzTrans trans, Cluster cluster, boolean dryRun, Question ques, CachedUserRoleDAO userRoleDaoObj) throws APIException, IOException { + super(trans, cluster, dryRun); + setQuestion(ques, userRoleDaoObj); +// q =new Question(trans, cluster, CassAccess.KEYSPACE, false); +// q = ques; + // TODO Auto-generated constructor stub + } + + public void setQuestion(Question ques, CachedUserRoleDAO userRoleDaoObj) { + Field field, nsDaoField; + try { + field = URAddImpl.class.getSuperclass().getSuperclass().getDeclaredField("q"); + nsDaoField = Question.class.getDeclaredField("userRoleDAO"); + + field.setAccessible(true); + nsDaoField.setAccessible(true); + // remove final modifier from field + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); + modifiersField.setInt(nsDaoField, field.getModifiers() & ~Modifier.FINAL); + + field.set(this, ques); + nsDaoField.set(ques, userRoleDaoObj); + } catch (NoSuchFieldException | SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } +} diff --git a/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URDelete.java b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URDelete.java new file mode 100644 index 00000000..6e92591a --- /dev/null +++ b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URDelete.java @@ -0,0 +1,246 @@ +/** + * ============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.auth.batch.actions.test; + +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aaf.auth.batch.actions.ActionDAO; +import org.onap.aaf.auth.batch.actions.URDelete; +import org.onap.aaf.auth.batch.helpers.UserRole; +import org.onap.aaf.auth.common.Define; +import org.onap.aaf.auth.dao.cached.CachedUserRoleDAO; +import org.onap.aaf.auth.dao.cass.UserRoleDAO.Data; +import org.onap.aaf.auth.dao.hl.Question; +import org.onap.aaf.auth.env.AuthzTrans; +import org.onap.aaf.auth.layer.Result; +import org.onap.aaf.cadi.CadiException; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.config.Config; +import org.onap.aaf.misc.env.APIException; +import org.onap.aaf.misc.env.LogTarget; +import org.onap.aaf.misc.env.TimeTaken; + +import com.datastax.driver.core.Cluster; +import com.datastax.driver.core.ColumnDefinitions; +import com.datastax.driver.core.PreparedId; +import com.datastax.driver.core.PreparedStatement; +import com.datastax.driver.core.Session; + +public class JU_URDelete { + + @Mock + AuthzTrans trans; + @Mock + Cluster cluster; + @Mock + PropAccess access; + + @Mock + URDelete deleteObj; + + + @Before + public void setUp() throws APIException, IOException { + initMocks(this); + Session sessionObj=Mockito.mock(Session.class); + PreparedStatement psObj =Mockito.mock(PreparedStatement.class); + try { + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error(); + Mockito.doReturn("10").when(trans).getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF); + Mockito.doReturn(Mockito.mock(TimeTaken.class)).when(trans).start(Mockito.anyString(),Mockito.anyInt()); + Mockito.doReturn(sessionObj).when(cluster).connect("authz"); + Mockito.doReturn(psObj).when(sessionObj).prepare(Mockito.anyString()); + + Mockito.doReturn(Mockito.mock(ColumnDefinitions.class)).when(psObj).getVariables(); + Mockito.doReturn(Mockito.mock(PreparedId.class)).when(psObj).getPreparedId(); + Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties(); + Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS,"org.osaaf.aaf"); + Define.set(access); + deleteObj = new URDelete(trans, cluster, true); + } catch (APIException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CadiException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testExec() { + Result<Void> retVal = deleteObj.exec(trans,Mockito.mock(UserRole.class),"test"); + assertTrue(retVal.toString().contains("Success")); + + } + @Test + public void testExecElse() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test","test","test",new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + data.expires = new Date(); + dataAL.add(data); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL,0,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).delete(trans, userRoleObj.urdd(), true); + + deleteObj = new URDeleteImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Void> session = deleteObj.exec(trans, userRoleObj, "test"); + assertTrue(0 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseDateLess() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test","test","test",new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + DateFormat sdf = new SimpleDateFormat("mm/dd/yyyy"); + try { + data.expires = sdf.parse("01/01/2100"); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + dataAL.add(data); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL,0,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).delete(trans, userRoleObj.urdd(), true); + + deleteObj = new URDeleteImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Void> session = deleteObj.exec(trans, userRoleObj, "test"); + assertTrue(0 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseNok() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test","test","test",new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + Result<Void> retVal1 = new Result<Void>(null,1,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).delete(trans, userRoleObj.urdd(), true); + + deleteObj = new URDeleteImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Void> session = deleteObj.exec(trans, userRoleObj, "test"); + assertTrue(session.toString().contains("test")); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void test2Argonstructor() { + deleteObj = new URDelete(trans, Mockito.mock(ActionDAO.class)); + } + + class URDeleteImpl extends URDelete{ + + public URDeleteImpl(AuthzTrans trans, Cluster cluster, boolean dryRun, Question ques, CachedUserRoleDAO userRoleDaoObj) throws APIException, IOException { + super(trans, cluster, dryRun); + setQuestion(ques, userRoleDaoObj); +// q =new Question(trans, cluster, CassAccess.KEYSPACE, false); +// q = ques; + // TODO Auto-generated constructor stub + } + + public void setQuestion(Question ques, CachedUserRoleDAO userRoleDaoObj) { + Field field, nsDaoField; + try { + field = URDeleteImpl.class.getSuperclass().getSuperclass().getDeclaredField("q"); + nsDaoField = Question.class.getDeclaredField("userRoleDAO"); + + field.setAccessible(true); + nsDaoField.setAccessible(true); + // remove final modifier from field + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); + modifiersField.setInt(nsDaoField, field.getModifiers() & ~Modifier.FINAL); + + field.set(this, ques); + nsDaoField.set(ques, userRoleDaoObj); + } catch (NoSuchFieldException | SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } +} diff --git a/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URFutureApproveExec.java b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URFutureApproveExec.java new file mode 100644 index 00000000..35409042 --- /dev/null +++ b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URFutureApproveExec.java @@ -0,0 +1,264 @@ +/** + * ============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.auth.batch.actions.test; + +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aaf.auth.batch.actions.ActionDAO; +import org.onap.aaf.auth.batch.actions.URFutureApproveExec; +import org.onap.aaf.auth.batch.actions.test.JU_URPunt.URPuntImpl; +import org.onap.aaf.auth.batch.helpers.Approval; +import org.onap.aaf.auth.batch.helpers.Future; +import org.onap.aaf.auth.common.Define; +import org.onap.aaf.auth.dao.cass.FutureDAO; +import org.onap.aaf.auth.dao.hl.Function; +import org.onap.aaf.auth.dao.hl.Function.FUTURE_OP; +import org.onap.aaf.auth.dao.hl.Function.OP_STATUS; +import org.onap.aaf.auth.dao.hl.Question; +import org.onap.aaf.auth.env.AuthzTrans; +import org.onap.aaf.auth.layer.Result; +import org.onap.aaf.cadi.CadiException; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.config.Config; +import org.onap.aaf.misc.env.APIException; +import org.onap.aaf.misc.env.LogTarget; +import org.onap.aaf.misc.env.TimeTaken; + +import com.datastax.driver.core.Cluster; +import com.datastax.driver.core.ColumnDefinitions; +import com.datastax.driver.core.PreparedId; +import com.datastax.driver.core.PreparedStatement; +import com.datastax.driver.core.Session; + +import io.netty.util.internal.SystemPropertyUtil; + + + +public class JU_URFutureApproveExec { + + @Mock + AuthzTrans trans; + @Mock + Cluster cluster; + @Mock + PropAccess access; + + @Mock + URFutureApproveExec actionObj; + + + @Before + public void setUp() throws APIException, IOException { + initMocks(this); + Session sessionObj=Mockito.mock(Session.class); + PreparedStatement psObj =Mockito.mock(PreparedStatement.class); + try { + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error(); + Mockito.doReturn("10").when(trans).getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF); + Mockito.doReturn(Mockito.mock(TimeTaken.class)).when(trans).start(Mockito.anyString(),Mockito.anyInt()); + Mockito.doReturn(sessionObj).when(cluster).connect("authz"); + Mockito.doReturn(psObj).when(sessionObj).prepare(Mockito.anyString()); + + Mockito.doReturn(Mockito.mock(ColumnDefinitions.class)).when(psObj).getVariables(); + Mockito.doReturn(Mockito.mock(PreparedId.class)).when(psObj).getPreparedId(); + Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties(); + Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS,"org.osaaf.aaf"); + Define.set(access); + } catch (CadiException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testExec() { + try { + actionObj = new URFutureApproveExec(trans, cluster, true); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Approval approval = Mockito.mock(Approval.class); + List<Approval> approvalAL = new ArrayList<>(); + approvalAL.add(approval); + Result<OP_STATUS> retVal = actionObj.exec(trans,approvalAL,Mockito.mock(Future.class)); + assertTrue(8 == retVal.status); + + } + + @Test + public void testExecElseOpStatusD() { + Result<OP_STATUS> retValD = new Result<OP_STATUS>(OP_STATUS.D, 0, "test", new String[0]); + try { + actionObj = new URFutureApproveExecImpl(trans, cluster, false, retValD); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Approval approval = new Approval(null, null, "", new Date(), "test", "", "", "", "", 0L); + List<Approval> approvalAL = new ArrayList<>(); + + Future futureObj = new Future(null, "", "", new Date(), new Date(), null); + + approvalAL.add(approval); + Result<OP_STATUS> retVal = actionObj.exec(trans,approvalAL,futureObj); + assertTrue(0 == retVal.status && "test".equals(retVal.toString())); + + } + + @Test + public void testExecElseOpStatusE() { + Result<OP_STATUS> retValD = new Result<OP_STATUS>(OP_STATUS.E, 0, "test", new String[0]); + try { + actionObj = new URFutureApproveExecImpl(trans, cluster, false, retValD); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Approval approval = new Approval(null, null, "", new Date(), "test", "", "", "", "", 0L); + List<Approval> approvalAL = new ArrayList<>(); + + Future futureObj = new Future(null, "", "", new Date(), new Date(), null); + + approvalAL.add(approval); + Result<OP_STATUS> retVal = actionObj.exec(trans,approvalAL,futureObj); + assertTrue(0 == retVal.status && "test".equals(retVal.toString())); + + } + + @Test + public void testExecElseOpStatusL() { + Result<OP_STATUS> retValD = new Result<OP_STATUS>(OP_STATUS.L, 0, "test", new String[0]); + try { + actionObj = new URFutureApproveExecImpl(trans, cluster, false, retValD); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Approval approval = new Approval(null, null, "", new Date(), "test", "", "", "", "", 0L); + List<Approval> approvalAL = new ArrayList<>(); + + Future futureObj = new Future(null, "", "", new Date(), new Date(), null); + + approvalAL.add(approval); + Result<OP_STATUS> retVal = actionObj.exec(trans,approvalAL,futureObj); + assertTrue(0 == retVal.status && "test".equals(retVal.toString())); + + } + + @Test + public void testExecElseOpStatusP() { + Result<OP_STATUS> retValD = new Result<OP_STATUS>(OP_STATUS.P, 0, "test", new String[0]); + try { + actionObj = new URFutureApproveExecImpl(trans, cluster, false, retValD); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Approval approval = new Approval(null, null, "", new Date(), "test", "", "", "", "", 0L); + List<Approval> approvalAL = new ArrayList<>(); + + Future futureObj = new Future(null, "", "", new Date(), new Date(), null); + + approvalAL.add(approval); + Result<OP_STATUS> retVal = actionObj.exec(trans,approvalAL,futureObj); + assertTrue(0 == retVal.status && "test".equals(retVal.toString())); + + } + + @Test + public void testExecElseNok() { + Result<OP_STATUS> retValD = new Result<OP_STATUS>(null, 1, "test", new String[0]); + try { + actionObj = new URFutureApproveExecImpl(trans, cluster, false, retValD); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Approval approval = new Approval(null, null, "", new Date(), "test", "", "", "", "", 0L); + List<Approval> approvalAL = new ArrayList<>(); + + Future futureObj = new Future(null, "", "", new Date(), new Date(), null); + + approvalAL.add(approval); + Result<OP_STATUS> retVal = actionObj.exec(trans,approvalAL,futureObj); + System.out.println(retVal); + assertTrue(1 == retVal.status); + + } + + @Test + public void test2Argonstructor() { + actionObj = new URFutureApproveExec(trans, Mockito.mock(ActionDAO.class)); + } + + class URFutureApproveExecImpl extends URFutureApproveExec{ + + public URFutureApproveExecImpl(AuthzTrans trans, Cluster cluster, boolean dryRun, Result<OP_STATUS> retValD) + throws APIException, IOException { + super(trans, cluster, dryRun); + setFunction(Mockito.mock(Function.class)); + Mockito.doReturn(retValD).when(f).performFutureOp(Mockito.any(), Mockito.any(), Mockito.any(),Mockito.any(),Mockito.any()); + } + + public void setFunction(Function f) { + Field field; + try { + field = URFutureApproveExecImpl.class.getSuperclass().getSuperclass().getDeclaredField("f"); + + field.setAccessible(true); + // remove final modifier from field + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); + + field.set(this, f); + } catch (NoSuchFieldException | SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } +} diff --git a/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URModify.java b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URModify.java new file mode 100644 index 00000000..eb9a4bf9 --- /dev/null +++ b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URModify.java @@ -0,0 +1,281 @@ +/** + * ============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.auth.batch.actions.test; + +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aaf.auth.batch.actions.ActionDAO; +import org.onap.aaf.auth.batch.actions.URModify; +import org.onap.aaf.auth.batch.actions.URPunt; +import org.onap.aaf.auth.batch.actions.URModify.Modify; +import org.onap.aaf.auth.batch.actions.test.JU_URPunt.URPuntImpl; +import org.onap.aaf.auth.batch.helpers.UserRole; +import org.onap.aaf.auth.common.Define; +import org.onap.aaf.auth.dao.cached.CachedUserRoleDAO; +import org.onap.aaf.auth.dao.cass.Status; +import org.onap.aaf.auth.dao.cass.UserRoleDAO.Data; +import org.onap.aaf.auth.dao.hl.Question; +import org.onap.aaf.auth.env.AuthzTrans; +import org.onap.aaf.auth.layer.Result; +import org.onap.aaf.cadi.CadiException; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.config.Config; +import org.onap.aaf.misc.env.APIException; +import org.onap.aaf.misc.env.LogTarget; +import org.onap.aaf.misc.env.TimeTaken; + +import com.datastax.driver.core.Cluster; +import com.datastax.driver.core.ColumnDefinitions; +import com.datastax.driver.core.PreparedId; +import com.datastax.driver.core.PreparedStatement; +import com.datastax.driver.core.Session; + +public class JU_URModify { + @Mock + AuthzTrans trans; + @Mock + Cluster cluster; + @Mock + PropAccess access; + + @Mock + URModify modifyObj; + + @Before + public void setUp() throws APIException, IOException { + initMocks(this); + Session sessionObj = Mockito.mock(Session.class); + PreparedStatement psObj = Mockito.mock(PreparedStatement.class); + try { + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error(); + Mockito.doReturn("10").when(trans).getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF); + Mockito.doReturn(Mockito.mock(TimeTaken.class)).when(trans).start(Mockito.anyString(), Mockito.anyInt()); + Mockito.doReturn(sessionObj).when(cluster).connect("authz"); + Mockito.doReturn(psObj).when(sessionObj).prepare(Mockito.anyString()); + + Mockito.doReturn(Mockito.mock(ColumnDefinitions.class)).when(psObj).getVariables(); + Mockito.doReturn(Mockito.mock(PreparedId.class)).when(psObj).getPreparedId(); + Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties(); + Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS, "org.osaaf.aaf"); + Define.set(access); + modifyObj = new URModify(trans, cluster, true); + } catch (APIException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CadiException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testURPrint() { + UserRole ur = new UserRole("user", "ns", "rname", Calendar.getInstance().getTime()); + Result<Void> retVal = modifyObj.exec(trans, ur, Mockito.mock(Modify.class)); + assertTrue(retVal.toString().contains("Success")); + } + + @Test + public void testExecElse() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test", "test", "test", new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + data.expires = new Date(); + data.user="test"; + data.role="test.test"; + dataAL.add(data); + Result<List<Data>> retVal = new Result<List<Data>>(dataAL, 0, "test", new String[0]); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL, 0, "test", new String[0]); + + Mockito.doReturn(retVal).when(userRoleDaoObj).read(trans, userRoleObj.user(), userRoleObj.role()); + Mockito.doReturn(retVal1).when(userRoleDaoObj).update(trans, data); + + modifyObj = new URModifyImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Void> session = modifyObj.exec(trans, userRoleObj, Mockito.mock(Modify.class)); + assertTrue(Status.ERR_UserRoleNotFound == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseUpdateFail() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test", "test", "test", new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + data.expires = new Date(); + data.user="test"; + data.role="test.test"; + dataAL.add(data); + Result<List<Data>> retVal = new Result<List<Data>>(dataAL, 0, "test", new String[0]); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL, 1, "test", new String[0]); + + Mockito.doReturn(retVal).when(userRoleDaoObj).read(trans, userRoleObj.user(), userRoleObj.role()); + Mockito.doReturn(retVal1).when(userRoleDaoObj).update(trans, data); + + modifyObj = new URModifyImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Void> session = modifyObj.exec(trans, userRoleObj, Mockito.mock(Modify.class)); + assertTrue(Status.ERR_UserRoleNotFound == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseUserDiff() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test", "test", "test", new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + data.expires = new Date(); + dataAL.add(data); + Result<List<Data>> retVal = new Result<List<Data>>(dataAL, 0, "test", new String[0]); + + Mockito.doReturn(retVal).when(userRoleDaoObj).read(trans, userRoleObj.user(), userRoleObj.role()); + + modifyObj = new URModifyImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Void> session = modifyObj.exec(trans, userRoleObj, Mockito.mock(Modify.class)); + assertTrue(Status.ERR_Denied == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseReadNOK() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test", "test", "test", new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + data.expires = new Date(); + dataAL.add(data); + Result<List<Data>> retVal = new Result<List<Data>>(dataAL, 1, "test", new String[0]); + + Mockito.doReturn(retVal).when(userRoleDaoObj).read(trans, userRoleObj.user(), userRoleObj.role()); + + modifyObj = new URModifyImpl(trans, cluster, false, ques, userRoleDaoObj); + Result<Void> session = modifyObj.exec(trans, userRoleObj, Mockito.mock(Modify.class)); + assertTrue(1 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void test2Argonstructor() { + modifyObj = new URModify(trans, Mockito.mock(ActionDAO.class)); + } + + class URModifyImpl extends URModify{ + + public URModifyImpl(AuthzTrans trans, Cluster cluster, boolean dryRun, Question ques, CachedUserRoleDAO userRoleDaoObj) throws APIException, IOException { + super(trans, cluster, dryRun); + setQuestion(ques, userRoleDaoObj); +// q =new Question(trans, cluster, CassAccess.KEYSPACE, false); +// q = ques; + // TODO Auto-generated constructor stub + } + + public void setQuestion(Question ques, CachedUserRoleDAO userRoleDaoObj) { + Field field, nsDaoField; + try { + field = URPuntImpl.class.getSuperclass().getSuperclass().getSuperclass().getDeclaredField("q"); + nsDaoField = Question.class.getDeclaredField("userRoleDAO"); + + field.setAccessible(true); + nsDaoField.setAccessible(true); + // remove final modifier from field + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); + modifiersField.setInt(nsDaoField, field.getModifiers() & ~Modifier.FINAL); + + field.set(this, ques); + nsDaoField.set(ques, userRoleDaoObj); + } catch (NoSuchFieldException | SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } +} diff --git a/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URPunt.java b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URPunt.java new file mode 100644 index 00000000..434ec418 --- /dev/null +++ b/auth/auth-batch/src/test/java/org/onap/aaf/auth/batch/actions/test/JU_URPunt.java @@ -0,0 +1,246 @@ +/** + * ============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.auth.batch.actions.test; + +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aaf.auth.batch.actions.ActionDAO; +import org.onap.aaf.auth.batch.actions.URPunt; +import org.onap.aaf.auth.batch.helpers.UserRole; +import org.onap.aaf.auth.common.Define; +import org.onap.aaf.auth.dao.cached.CachedUserRoleDAO; +import org.onap.aaf.auth.dao.cass.UserRoleDAO.Data; +import org.onap.aaf.auth.dao.hl.Question; +import org.onap.aaf.auth.env.AuthzTrans; +import org.onap.aaf.auth.layer.Result; +import org.onap.aaf.cadi.CadiException; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.config.Config; +import org.onap.aaf.misc.env.APIException; +import org.onap.aaf.misc.env.LogTarget; +import org.onap.aaf.misc.env.TimeTaken; + +import com.datastax.driver.core.Cluster; +import com.datastax.driver.core.ColumnDefinitions; +import com.datastax.driver.core.PreparedId; +import com.datastax.driver.core.PreparedStatement; +import com.datastax.driver.core.Session; + +public class JU_URPunt { + + @Mock + AuthzTrans trans; + @Mock + Cluster cluster; + @Mock + PropAccess access; + + @Mock + URPunt actionObj; + + + @Before + public void setUp() throws APIException, IOException { + initMocks(this); + Session sessionObj=Mockito.mock(Session.class); + PreparedStatement psObj =Mockito.mock(PreparedStatement.class); + try { + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info(); + Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error(); + Mockito.doReturn("10").when(trans).getProperty(Config.AAF_USER_EXPIRES, Config.AAF_USER_EXPIRES_DEF); + Mockito.doReturn(Mockito.mock(TimeTaken.class)).when(trans).start(Mockito.anyString(),Mockito.anyInt()); + Mockito.doReturn(sessionObj).when(cluster).connect("authz"); + Mockito.doReturn(psObj).when(sessionObj).prepare(Mockito.anyString()); + + Mockito.doReturn(Mockito.mock(ColumnDefinitions.class)).when(psObj).getVariables(); + Mockito.doReturn(Mockito.mock(PreparedId.class)).when(psObj).getPreparedId(); + Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties(); + Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS,"org.osaaf.aaf"); + Define.set(access); + actionObj = new URPunt(trans, cluster, 10, 10, true); + } catch (APIException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CadiException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testExec() { + Result<Void> retVal = actionObj.exec(trans,Mockito.mock(UserRole.class),"test"); + assertTrue(retVal.toString().contains("Success")); + + } + @Test + public void testExecElse() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test","test","test",new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + data.expires = new Date(); + dataAL.add(data); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL,0,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).read(trans, userRoleObj.user(), userRoleObj.role()); + + actionObj = new URPuntImpl(trans, cluster, false, 10, 10, ques, userRoleDaoObj); + Result<Void> session = actionObj.exec(trans, userRoleObj, "test"); + assertTrue(0 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseDateLess() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test","test","test",new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + List<Data> dataAL = new ArrayList<Data>(); + Data data = new Data(); + DateFormat sdf = new SimpleDateFormat("mm/dd/yyyy"); + try { + data.expires = sdf.parse("01/01/2100"); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + dataAL.add(data); + Result<List<Data>> retVal1 = new Result<List<Data>>(dataAL,0,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).read(trans, userRoleObj.user(), userRoleObj.role()); + + actionObj = new URPuntImpl(trans, cluster, false, 0, 0,ques, userRoleDaoObj); + Result<Void> session = actionObj.exec(trans, userRoleObj, "test"); + assertTrue(0 == session.status); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void testExecElseNok() { + Question ques = Mockito.mock(Question.class); + try { + UserRole userRoleObj = new UserRole("test","test","test",new Date()); + CachedUserRoleDAO userRoleDaoObj = Mockito.mock(CachedUserRoleDAO.class); + + Result<Void> retVal1 = new Result<Void>(null,1,"test",new String[0]); + + Mockito.doReturn(retVal1).when(userRoleDaoObj).read(trans, userRoleObj.user(), userRoleObj.role()); + + actionObj = new URPuntImpl(trans, cluster, false, 10, 10, ques, userRoleDaoObj); + Result<Void> session = actionObj.exec(trans, userRoleObj, "test"); + assertTrue(session.toString().contains("test")); + } catch (APIException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + @Test + public void test2Argonstructor() { + actionObj = new URPunt(trans, Mockito.mock(ActionDAO.class), 10, 10); + } + + class URPuntImpl extends URPunt{ + + public URPuntImpl(AuthzTrans trans, Cluster cluster, boolean dryRun, int months, int range,Question ques, CachedUserRoleDAO userRoleDaoObj) throws APIException, IOException { + super(trans, cluster, months, range, dryRun); + setQuestion(ques, userRoleDaoObj); +// q =new Question(trans, cluster, CassAccess.KEYSPACE, false); +// q = ques; + // TODO Auto-generated constructor stub + } + + public void setQuestion(Question ques, CachedUserRoleDAO userRoleDaoObj) { + Field field, nsDaoField; + try { + field = URPuntImpl.class.getSuperclass().getSuperclass().getSuperclass().getDeclaredField("q"); + nsDaoField = Question.class.getDeclaredField("userRoleDAO"); + + field.setAccessible(true); + nsDaoField.setAccessible(true); + // remove final modifier from field + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); + modifiersField.setInt(nsDaoField, field.getModifiers() & ~Modifier.FINAL); + + field.set(this, ques); + nsDaoField.set(ques, userRoleDaoObj); + } catch (NoSuchFieldException | SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } +} diff --git a/cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/v2_0/JU_AAFAuthn.java b/cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/v2_0/JU_AAFAuthn.java new file mode 100644 index 00000000..41b519b1 --- /dev/null +++ b/cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/v2_0/JU_AAFAuthn.java @@ -0,0 +1,204 @@ +/** + * ============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.aaf.v2_0; + +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.io.IOException; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aaf.cadi.AbsUserCache; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.User; +import org.onap.aaf.cadi.aaf.AAFPermission; +import org.onap.aaf.cadi.client.Future; +import org.onap.aaf.cadi.client.Rcli; +import org.onap.aaf.cadi.principal.BasicPrincipal; + +public class JU_AAFAuthn { + + @Mock + AAFCon con; + + @Mock + AbsUserCache<AAFPermission> cache; + + @Mock + PropAccess propaccess; + + @Before + public void setUp() { + initMocks(this); + } + + @Test + public void testGetRealm() { + AAFAuthn authnObj = new AAFAuthn(con); + String realm = authnObj.getRealm(); + assertNull(realm); + } + + @Test + public void testValidateFailure() { + AAFAuthnImplWithGetUserNull authnObj = new AAFAuthnImplWithGetUserNull(con, cache); + String realm=""; + try { + Mockito.doReturn("test").when(propaccess).decrypt("test", false); + realm = authnObj.validate("test", "test"); + assertNull(realm); + } catch (Exception e) { + // TODO Auto-generated catch block + assertNull( e.getLocalizedMessage()); + } + } + + @Test + public void testValidate() { + AAFAuthnImpl authnObj = new AAFAuthnImpl(con); + String realm=""; + try { + Mockito.doReturn("test").when(propaccess).decrypt("test", false); + Rcli rcliObj = Mockito.mock(Rcli.class); + Mockito.doReturn(rcliObj).when(con).client(); + Mockito.doReturn(rcliObj).when(rcliObj).forUser(null); + Future<String> futureObj = Mockito.mock(Future.class); + Mockito.doReturn(futureObj).when(rcliObj).read( "/authn/basicAuth","text/plain"); + realm = authnObj.validate("test", "test","test"); + assertTrue(realm.contains("User/Pass combo invalid")); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testValidateRevalidate() { + AAFAuthnImpl authnObj = new AAFAuthnImpl(con); + String realm=""; + try { + Mockito.doReturn("test").when(propaccess).decrypt("test", false); + Rcli rcliObj = Mockito.mock(Rcli.class); + Mockito.doReturn(rcliObj).when(con).client(); + Mockito.doReturn(rcliObj).when(rcliObj).forUser(null); + Future<String> futureObj = Mockito.mock(Future.class); + Mockito.doReturn(futureObj).when(rcliObj).read( "/authn/basicAuth","text/plain"); + Mockito.doReturn(true).when(futureObj).get( 0); + realm = authnObj.validate("test", "test","test"); + assertNull(realm); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testValidateValidUser() { + AAFAuthnImplWithGetUser authnObj = new AAFAuthnImplWithGetUser(con); + String realm=""; + try { + Mockito.doReturn("test").when(propaccess).decrypt("test", false); + realm = authnObj.validate("test", "test","test"); + assertTrue(realm.contains("User already denied")); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testValidateValidUserNull() { + AAFAuthnImplWithGetUserNull authnObj = new AAFAuthnImplWithGetUserNull(con); + String realm=""; + try { + Mockito.doReturn("test").when(propaccess).decrypt("test", false); + realm = authnObj.validate("test", "test","test"); + assertNull(realm); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + class AAFAuthnImpl extends AAFAuthn{ + AAFAuthnImpl(AAFCon con) { + super(con); + this.access = propaccess; + // TODO Auto-generated constructor stub + } + + AAFAuthnImpl(AAFCon con, AbsUserCache cache) { + super(con, cache); + this.access = propaccess; + // TODO Auto-generated constructor stub + } + + + } + + class AAFAuthnImplWithGetUser extends AAFAuthn{ + AAFAuthnImplWithGetUser(AAFCon con) { + super(con); + this.access = propaccess; + // TODO Auto-generated constructor stub + } + + AAFAuthnImplWithGetUser(AAFCon con, AbsUserCache cache) { + super(con, cache); + this.access = propaccess; + // TODO Auto-generated constructor stub + } + + @Override + protected User getUser(String user, byte[] cred) { + return new User<>("test",new byte[] {}); + } + } + + class AAFAuthnImplWithGetUserNull extends AAFAuthn{ + AAFAuthnImplWithGetUserNull(AAFCon con) { + super(con); + this.access = propaccess; + // TODO Auto-generated constructor stub + } + + AAFAuthnImplWithGetUserNull(AAFCon con, AbsUserCache cache) { + super(con, cache); + this.access = propaccess; + // TODO Auto-generated constructor stub + } + + @Override + protected User getUser(String user, byte[] cred) { + User user1 = null; + try { + user1 = new User(new BasicPrincipal("test","test")); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return user1; + } + } +} diff --git a/cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/v2_0/JU_AAFSingleLocator.java b/cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/v2_0/JU_AAFSingleLocator.java new file mode 100644 index 00000000..488c2857 --- /dev/null +++ b/cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/v2_0/JU_AAFSingleLocator.java @@ -0,0 +1,138 @@ +/** + * ============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.aaf.v2_0; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.MockitoAnnotations.initMocks; + +import java.net.URI; +import java.net.URISyntaxException; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aaf.cadi.AbsUserCache; +import org.onap.aaf.cadi.Locator; +import org.onap.aaf.cadi.LocatorException; +import org.onap.aaf.cadi.PropAccess; +import org.onap.aaf.cadi.aaf.AAFPermission; + + +public class JU_AAFSingleLocator { + + @Mock + AAFCon con; + + @Mock + AbsUserCache<AAFPermission> cache; + + @Mock + PropAccess propaccess; + + + AAFSingleLocator authnObj; + + @Before + public void setUp() { + initMocks(this); + try { + authnObj = new AAFSingleLocator("http://www.google.com"); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testGetRealm() { + try { + URI retVal = authnObj.get(Mockito.mock( Locator.Item.class)); + assertEquals("www.google.com",retVal.getHost()); + } catch (LocatorException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testHasItem() { + boolean retVal = authnObj.hasItems(); + assertTrue(retVal); + } + + @Test + public void testInvalidate() { + try { + authnObj.invalidate(Mockito.mock( Locator.Item.class)); + } catch (LocatorException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testBest() { + try { + Locator.Item retVal = authnObj.best(); + assertTrue(retVal.toString().contains("org.onap.aaf.cadi.aaf.v2_0.AAFSingleLocator$SingleItem")); + } catch (LocatorException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + @Test + public void testFirst() { + try { + Locator.Item retVal = authnObj.first(); + assertTrue(retVal.toString().contains("org.onap.aaf.cadi.aaf.v2_0.AAFSingleLocator$SingleItem")); + } catch (LocatorException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + @Test + public void testNext() { + try { + Locator.Item retVal = authnObj.next(Mockito.mock( Locator.Item.class)); + assertNull(retVal); + } catch (LocatorException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Test + public void testRefres() { + boolean retVal = authnObj.refresh(); + assertFalse(retVal); + } + + @Test + public void testdestroy() { + authnObj.destroy(); + } + + +} |