CAS Unit Tests
Clover coverage report - CAS Unit Tests
Coverage timestamp: Mon Jul 4 2005 18:13:17 CDT
file stats: LOC: 455   Methods: 9
NCLOC: 338   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
TestQueries.java 0% 0% 0% 0%
coverage
 1    /*
 2    * Portions of this file Copyright 1999-2005 University of Chicago
 3    * Portions of this file Copyright 1999-2005 The University of Southern California.
 4    *
 5    * This file or a portion of this file is licensed under the
 6    * terms of the Globus Toolkit Public License, found at
 7    * http://www.globus.org/toolkit/download/license.html.
 8    * If you redistribute this file, with or without
 9    * modifications, you must include this notice in the file.
 10    */
 11    package org.globus.cas.impl.service;
 12   
 13    import junit.framework.Test;
 14    import junit.framework.TestCase;
 15    import junit.framework.TestSuite;
 16   
 17    import org.globus.cas.faults.CasFault;
 18    import org.globus.cas.faults.NoPermissionFault;
 19   
 20    import org.globus.cas.types.ServiceTypeData;
 21    import org.globus.cas.types.TrustAnchorData;
 22    import org.globus.cas.types.UserData;
 23    import org.globus.cas.types.UserGroupData;
 24    import org.globus.cas.types.PolicyData;
 25    import org.globus.cas.types.ObjectData;
 26    import org.globus.cas.types.NamespaceData;
 27    import org.globus.cas.types.ObjectGroupData;
 28    import org.globus.cas.types.ArrayOfString;
 29    import org.globus.cas.types.GetGroupMembers;
 30    import org.globus.cas.types.VoidType;
 31    import org.globus.cas.types.CasObjectDesc;
 32   
 33    import org.globus.cas.impl.databaseAccess.ObjectDataHandler;
 34    import org.globus.cas.impl.databaseAccess.ObjectGroupDataHandler;
 35    import org.globus.cas.impl.databaseAccess.UserDataHandler;
 36    import org.globus.cas.impl.databaseAccess.UserGroupDataHandler;
 37    import org.globus.cas.impl.databaseAccess.TrustAnchorDataHandler;
 38    import org.globus.cas.impl.databaseAccess.ServiceTypeActionHandler;
 39    import org.globus.cas.impl.databaseAccess.PolicyDataHandler;
 40    import org.globus.cas.impl.databaseAccess.CasDBException;
 41   
 42    import org.globus.cas.impl.CasConstants;
 43    import org.globus.cas.utils.CasStringUtils;
 44   
 45    import org.globus.cas.CASPortType;
 46   
 47    import org.apache.commons.logging.Log;
 48    import org.apache.commons.logging.LogFactory;
 49   
 50    public class TestQueries extends TestCase {
 51   
 52    static Log logger =
 53    LogFactory.getLog(TestQueries.class.getName());
 54   
 55    static CASPortType casPort = null;
 56   
 57    String objId = null;
 58    String query = null;
 59    UserData userData = null;
 60    UserGroupData userGpData = null;
 61    TrustAnchorData trustAnchor = null;
 62    ObjectGroupData objectGpData = null;
 63    String policyId = null;
 64   
 65  0 public TestQueries(String name){
 66  0 super(name);
 67    }
 68   
 69  0 public static Test suite() {
 70  0 return new TestSuite(TestQueries.class);
 71    }
 72   
 73  0 public static void setParams(CASPortType casPort_) {
 74  0 casPort = casPort_;
 75    }
 76   
 77   
 78  0 private void initialSetup() throws Exception {
 79   
 80  0 objId =
 81    Integer.toString(ObjectDataHandler.getObjectId(
 82    CasConstants.OBJECT_SELF,
 83    CasConstants.NAMESPACE_SELF));
 84  0 query =
 85    Integer.toString(ServiceTypeActionHandler.getServiceActionId(
 86    CasConstants.SERVICETYPE_CAS,
 87    CasConstants.ACTION_QUERY));
 88    }
 89   
 90  0 public void testQueries() throws Exception {
 91  0 initialSetup();
 92    // positive test for whoami
 93  0 String userName = casPort.whoami(new VoidType());
 94  0 assertTrue(userName != null);
 95  0 assertTrue(userName.equals(TestConstants.user1));
 96  0 listQueriesTest();
 97  0 cleanUp();
 98    }
 99   
 100    // List tests
 101  0 private void listQueriesTest() throws Exception {
 102   
 103  0 boolean exp = false;
 104    // Test permission
 105  0 try {
 106  0 casPort.list(CasConstants.USER_SPEC);
 107    }
 108    catch (NoPermissionFault noPerm) {
 109  0 exp= true;
 110    }
 111  0 assertTrue(exp);
 112   
 113    // add another user
 114  0 userData = new UserData();
 115  0 String dummyUser = "Dummy user";
 116  0 userData.setNickname(dummyUser);
 117  0 userData.setSubjectName("dummy subject");
 118  0 userData.setTrustAnchorName(TestConstants.defTrustNick);
 119  0 UserDataHandler.storeObject(userData);
 120   
 121    // set policy
 122  0 policySetup(true);
 123   
 124    // test wrong type
 125  0 exp = false;
 126  0 try {
 127  0 casPort.list("weirdType");
 128    }
 129    catch (CasFault casFault) {
 130  0 exp= true;
 131    }
 132  0 assertTrue(exp);
 133   
 134  0 ArrayOfString arrayOfUsers = casPort.list(CasConstants.USER_SPEC);
 135  0 assertTrue(arrayOfUsers != null);
 136  0 String[] users = arrayOfUsers.getStrings();
 137  0 assertTrue(users != null);
 138  0 logger.debug("User list length " + users.length);
 139  0 assertTrue(users.length == 2);
 140  0 assertTrue(CasStringUtils.stringInArray(users, TestConstants.user1));
 141  0 assertTrue(CasStringUtils.stringInArray(users, dummyUser));
 142   
 143    // add user group
 144  0 String groupName = "userGroup1";
 145  0 userGpData = new UserGroupData();
 146  0 userGpData.setGroupName(groupName);
 147  0 UserGroupDataHandler.storeObject(userGpData);
 148  0 ArrayOfString listOfUsers = casPort.list(CasConstants.USERGP_SPEC);
 149  0 assertTrue(listOfUsers != null);
 150  0 users = listOfUsers.getStrings();
 151  0 assertTrue(users != null);
 152  0 logger.debug("UserGroup list length " + users.length);
 153  0 assertTrue(users.length == 2);
 154  0 assertTrue(CasStringUtils.stringInArray(users,
 155    TestConstants.defUserGp));
 156  0 assertTrue(CasStringUtils.stringInArray(users, groupName));
 157   
 158    // add second user
 159  0 String secondUser = "dummy user1";
 160  0 userData.setNickname(secondUser);
 161  0 userData.setSubjectName("dummy subject1");
 162  0 UserDataHandler.storeObject(userData);
 163    // add member to user group
 164  0 UserGroupDataHandler.addGroupMember(groupName, dummyUser);
 165  0 UserGroupDataHandler.addGroupMember(groupName, secondUser);
 166   
 167  0 ArrayOfString arrayOfMembers =
 168    casPort.getGroupMembers(new GetGroupMembers(groupName, "user"));
 169  0 assertTrue(arrayOfMembers != null);
 170  0 String[] userGpMembers = arrayOfMembers.getStrings();
 171  0 assertTrue(userGpMembers != null);
 172  0 assertTrue(userGpMembers.length == 2);
 173  0 assertTrue(CasStringUtils.stringInArray(userGpMembers, dummyUser));
 174  0 assertTrue(CasStringUtils.stringInArray(userGpMembers, secondUser));
 175   
 176    // Delete user group entry
 177  0 UserGroupDataHandler.removeGroupMember(groupName, dummyUser);
 178  0 UserGroupDataHandler.removeGroupMember(groupName, secondUser);
 179   
 180    // Delete user
 181  0 UserDataHandler.deleteObject(secondUser);
 182  0 UserDataHandler.deleteObject(dummyUser);
 183   
 184    // add another trust anchor
 185  0 String trustNick = "dummyTrust";
 186  0 trustAnchor = new TrustAnchorData();
 187  0 trustAnchor.setNickname(trustNick);
 188  0 trustAnchor.setAuthMethod("dummy");
 189  0 trustAnchor.setAuthData("dummy");
 190  0 TrustAnchorDataHandler.storeObject(trustAnchor);
 191   
 192    // test Trust anchor
 193  0 ArrayOfString arrayOfAnchors =
 194    casPort.list(CasConstants.TRUSTANCHOR_SPEC);
 195  0 assertTrue(arrayOfAnchors != null);
 196  0 String[] anchors = arrayOfAnchors.getStrings();
 197  0 assertTrue(anchors != null);
 198  0 logger.debug("TrustAnchor list length " + anchors.length);
 199  0 assertTrue(anchors.length == 2);
 200  0 assertTrue(CasStringUtils.stringInArray(anchors,
 201    TestConstants.defTrustNick));
 202  0 assertTrue(CasStringUtils.stringInArray(anchors, trustNick));
 203   
 204    // test object
 205  0 ArrayOfString arrayOfObj = casPort.list(CasConstants.OBJECT_SPEC);
 206  0 assertTrue(arrayOfObj != null);
 207  0 String[] objects = arrayOfObj.getStrings();
 208  0 assertTrue(objects != null);
 209  0 logger.debug("Object list length " + objects.length);
 210  0 assertTrue(objects.length == 1);
 211   
 212    // test objectGroup
 213  0 ArrayOfString arrayOfObjGp = casPort.list(CasConstants.OBJECTGP_SPEC);
 214  0 assertTrue(arrayOfObjGp != null);
 215  0 String[] objectGp = arrayOfObjGp.getStrings();
 216  0 assertTrue(objectGp == null);
 217   
 218    // add object group
 219  0 String gpName = "dummy";
 220  0 objectGpData = new ObjectGroupData();
 221  0 objectGpData.setGroupName(gpName);
 222  0 ObjectGroupDataHandler.storeObject(objectGpData);
 223  0 ArrayOfString arrayGpSpec = casPort.list(CasConstants.OBJECTGP_SPEC);
 224  0 assertTrue(arrayGpSpec != null);
 225  0 objectGp = arrayGpSpec.getStrings();
 226  0 assertTrue(objectGp != null);
 227  0 logger.debug("objGp list length " + objectGp.length);
 228  0 assertTrue(objectGp.length == 1);
 229  0 assertTrue(CasStringUtils.stringInArray(objectGp, gpName));
 230   
 231    // add an object
 232  0 ObjectData objData = new ObjectData();
 233  0 objData.setObjectName("dummyObjName");
 234  0 objData.setObjectNamespace(CasConstants.NAMESPACE_SELF);
 235  0 String dummyObjId = ObjectDataHandler.storeObject(objData);
 236   
 237    // adding member to object group
 238  0 ObjectGroupDataHandler.addGroupMember(gpName, dummyObjId, "object");
 239   
 240    // get group members
 241  0 ArrayOfString arrayOfObjMem =
 242    casPort.getGroupMembers(new GetGroupMembers(gpName, "object"));
 243  0 assertTrue(arrayOfObjMem != null);
 244  0 String[] objGpMembers = arrayOfObjMem.getStrings();
 245  0 assertTrue(objGpMembers != null);
 246  0 assertTrue(objGpMembers.length == 1);
 247  0 System.out.println("***" + objGpMembers[0]);
 248  0 assertTrue(CasStringUtils.stringInArray(objGpMembers,
 249    CasConstants.NAMESPACE_SELF
 250    + CasConstants.OBJECTSPEC_DELIMITER
 251    + "dummyObjName, object"));
 252   
 253    // remove object group member
 254  0 ObjectGroupDataHandler.removeGroupMember(gpName, dummyObjId, "object");
 255   
 256    // delete object
 257  0 ObjectDataHandler.deleteObject("dummyObjName",
 258    CasConstants.NAMESPACE_SELF);
 259   
 260    // delete object group
 261  0 ObjectGroupDataHandler.deleteObject(gpName);
 262   
 263    // test namespace
 264  0 ArrayOfString arrayOfNS = casPort.list(CasConstants.NAMESPACE_SPEC);
 265  0 assertTrue(arrayOfNS != null);
 266  0 String[] nsList = arrayOfNS.getStrings();
 267  0 assertTrue(nsList!=null);
 268  0 logger.debug("namespace list length " + nsList.length);
 269  0 assertTrue(nsList.length == 3);
 270   
 271    // test service type
 272  0 ArrayOfString arrayOfService =
 273    casPort.list(CasConstants.SERVICETYPE_SPEC);
 274  0 assertTrue(arrayOfService != null);
 275  0 String[] serviceType = arrayOfService.getStrings();
 276  0 assertTrue(serviceType !=null);
 277  0 logger.debug("service type list length " + serviceType.length);
 278  0 assertTrue(serviceType.length == 2);
 279   
 280    // add action
 281  0 String actionName = "queryTest";
 282  0 ServiceTypeActionHandler.addServiceActionMapping(serviceType[0],
 283    actionName);
 284  0 String actionName1 = "queryTest1";
 285  0 ServiceTypeActionHandler.addServiceActionMapping(serviceType[0],
 286    actionName1);
 287   
 288    // add service action group
 289  0 String dummyServiceGp = "dummyServiceGp";
 290  0 ServiceTypeActionHandler.createServiceActionGroup(dummyServiceGp);
 291  0 ServiceTypeActionHandler.addServiceActionGpEntry(dummyServiceGp,
 292    serviceType[0],
 293    actionName);
 294  0 ServiceTypeActionHandler.addServiceActionGpEntry(dummyServiceGp,
 295    serviceType[0],
 296    actionName1);
 297   
 298    // Get service action gp members
 299  0 ArrayOfString arrayOfSa =
 300    casPort.getGroupMembers(new GetGroupMembers(dummyServiceGp,
 301    "serviceAction"));
 302  0 assertTrue(arrayOfSa != null);
 303  0 String[] saGpMembers = arrayOfSa.getStrings();
 304  0 assertTrue(saGpMembers != null);
 305  0 assertTrue(saGpMembers.length == 2);
 306  0 assertTrue(CasStringUtils.stringInArray(saGpMembers, serviceType[0]
 307    + "/" + actionName));
 308  0 assertTrue(CasStringUtils.stringInArray(saGpMembers, serviceType[0]
 309    + "/" + actionName1));
 310   
 311    // clean up
 312  0 ServiceTypeActionHandler.removeServiceActionGpEntry(dummyServiceGp,
 313    serviceType[0],
 314    actionName1);
 315  0 ServiceTypeActionHandler.removeServiceActionGpEntry(dummyServiceGp,
 316    serviceType[0],
 317    actionName);
 318  0 ServiceTypeActionHandler.deleteServiceActionGroup(dummyServiceGp);
 319   
 320  0 ServiceTypeActionHandler.removeServiceActionMapping(serviceType[0],
 321    actionName1);
 322  0 ServiceTypeActionHandler.removeServiceActionMapping(serviceType[0],
 323    actionName);
 324    }
 325   
 326  0 public void getObjectTest() throws Exception {
 327   
 328  0 boolean exp = false;
 329    // test Permission
 330  0 try {
 331  0 casPort.getCasObject(new CasObjectDesc(CasConstants.USER_SPEC,
 332    TestConstants.user1));
 333    }
 334    catch (NoPermissionFault noPerm) {
 335  0 exp= true;
 336    }
 337  0 assertTrue(exp);
 338   
 339    // Permission is set
 340  0 policySetup(true);
 341   
 342    // Test wrong type
 343  0 exp = false;
 344  0 try {
 345  0 casPort.getCasObject(new CasObjectDesc("weirdType",
 346    TestConstants.user1));
 347    }
 348    catch (CasFault casFault) {
 349  0 exp= true;
 350    }
 351  0 assertTrue(exp);
 352   
 353    // user
 354  0 UserData getUserData =
 355    (UserData)casPort
 356    .getCasObject(new CasObjectDesc(CasConstants.USER_SPEC,
 357    userData.getNickname()));
 358  0 assertTrue(getUserData != null);
 359  0 assertTrue(getUserData.equals(userData));
 360   
 361    // user group
 362  0 UserGroupData getUserGpData =
 363    (UserGroupData)casPort
 364    .getCasObject(new CasObjectDesc(CasConstants.USERGP_SPEC,
 365    userGpData.getGroupName()));
 366  0 assertTrue(getUserGpData != null);
 367  0 assertTrue(getUserGpData.equals(userGpData));
 368   
 369    // trust anchor
 370  0 TrustAnchorData getTrustAnchor =
 371    (TrustAnchorData)casPort
 372    .getCasObject(new CasObjectDesc(CasConstants.TRUSTANCHOR_SPEC,
 373    trustAnchor.getNickname()));
 374  0 assertTrue(getTrustAnchor != null);
 375  0 assertTrue(getTrustAnchor.equals(trustAnchor));
 376   
 377    // object gp
 378  0 ObjectGroupData getObjGpData =
 379    (ObjectGroupData)casPort
 380    .getCasObject(new CasObjectDesc(CasConstants.OBJECTGP_SPEC,
 381    objectGpData.getGroupName()));
 382  0 assertTrue(getObjGpData != null);
 383  0 assertTrue(getObjGpData.equals(objectGpData));
 384   
 385    // object
 386  0 String objectStr = CasConstants.NAMESPACE_SELF + "|"
 387    + CasConstants.OBJECT_SELF;
 388  0 ObjectData getObjData = (ObjectData)casPort
 389    .getCasObject(new CasObjectDesc(CasConstants.OBJECT_SPEC,
 390    objectStr));
 391  0 assertTrue(getObjData != null);
 392  0 assertTrue(getObjData.getObjectNamespace().equals(
 393    CasConstants.NAMESPACE_SELF));
 394   
 395  0 assertTrue(getObjData.getObjectName()
 396    .equals(CasConstants.OBJECT_SELF));
 397   
 398    // Namespace
 399  0 NamespaceData getNamespace =
 400    (NamespaceData)casPort
 401    .getCasObject(new CasObjectDesc(CasConstants.NAMESPACE_SPEC,
 402    CasConstants.NAMESPACE_SELF));
 403  0 assertTrue(getNamespace != null);
 404  0 assertTrue(getNamespace.getNickname().equals(
 405    CasConstants.NAMESPACE_SELF));
 406  0 assertTrue(getNamespace.getComparisonAlg().equals(
 407    TestConstants.compAlg));
 408   
 409    // Service type
 410  0 ServiceTypeData getServiceType =
 411    (ServiceTypeData)casPort
 412    .getCasObject(new CasObjectDesc(CasConstants.SERVICETYPE_SPEC,
 413    CasConstants.SERVICETYPE_CAS));
 414  0 assertTrue(getServiceType != null);
 415  0 assertTrue(getServiceType.getName().equals(
 416    CasConstants.SERVICETYPE_CAS));
 417  0 assertTrue(getServiceType.getActionNames() != null);
 418   
 419  0 policySetup(false);
 420    }
 421   
 422  0 private void cleanUp() throws Exception {
 423   
 424  0 try {
 425    // delete user
 426  0 UserDataHandler.deleteObject(userData.getNickname());
 427   
 428    // delete TA
 429  0 TrustAnchorDataHandler.deleteObject(trustAnchor.getNickname());
 430    } catch (CasDBException exp) {
 431  0 if (exp.getMessage().indexOf("No database rows update") == -1) {
 432  0 throw exp;
 433    }
 434    }
 435   
 436    // delete Policy
 437  0 policySetup(false);
 438    }
 439   
 440  0 private void policySetup(boolean setup) throws Exception {
 441   
 442  0 if (setup) {
 443  0 PolicyData policyData = new PolicyData();
 444  0 policyData.setUserGroupName(TestConstants.defUserGp);
 445  0 policyData.setObjectSpec(objId);
 446  0 policyData.setObjectSpecDesc(CasConstants.OBJECT_SPEC);
 447  0 policyData.setActionSpec(query);
 448  0 policyData.setActionSpecDesc(CasConstants.SERVICEACTION_SPEC);
 449  0 policyId = PolicyDataHandler.storeObject(policyData);
 450    }
 451    else {
 452  0 PolicyDataHandler.deleteObject(policyId);
 453    }
 454    }
 455    }