]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-3078 on trunk, security.xml and xml-replay-master.xml now succeed on multiple...
authorLaramie Crocker <laramie@berkeley.edu>
Wed, 10 Nov 2010 00:09:24 +0000 (00:09 +0000)
committerLaramie Crocker <laramie@berkeley.edu>
Wed, 10 Nov 2010 00:09:24 +0000 (00:09 +0000)
services/IntegrationTests/src/main/java/org/collectionspace/services/IntegrationTests/xmlreplay/XmlReplay.java
services/IntegrationTests/src/test/resources/test-data/xmlreplay/security.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/xml-replay-master.xml

index c12b3faef30c4b8a539c7d783b45b8c19a011f10..2e94209b034f5e4adb5f22d72e0c1a60ab9d81f1 100755 (executable)
@@ -435,110 +435,114 @@ public class XmlReplay {
             int testElementIndex = -1;\r
 \r
             for (Node testNode : tests) {\r
-                testElementIndex++;\r
-                String testID = testNode.valueOf("@ID");\r
-                String testIDLabel = Tools.notEmpty(testID) ? (testGroupID+'.'+testID) : (testGroupID+'.'+testElementIndex);\r
-                String method = testNode.valueOf("method");\r
-                String uri = testNode.valueOf("uri");\r
-                String fullURL = Tools.glue(protoHostPort, "/", uri);\r
-                String initURI = uri;\r
-\r
-                String authIDForTest = testNode.valueOf("@auth");\r
-                String currentAuthForTest = authsMap.map.get(authIDForTest);\r
-                if (Tools.notEmpty(currentAuthForTest)){\r
-                    authForTest = currentAuthForTest; //else just run with current from last loop;\r
-                }\r
-                if (Tools.isEmpty(authForTest)){\r
-                    authForTest = defaultAuths.getDefaultAuth();\r
-                }\r
-\r
-                if (uri.indexOf("$")>-1){\r
-                    uri = evalStruct.eval(uri, serviceResultsMap, jexl, jc);\r
-                }\r
-                fullURL = fixupFullURL(fullURL, protoHostPort, uri);\r
-\r
-                List<Integer> expectedCodes = new ArrayList<Integer>();\r
-                String expectedCodesStr = testNode.valueOf("expectedCodes");\r
-                if (Tools.notEmpty(expectedCodesStr)){\r
-                     String[] codesArray = expectedCodesStr.split(",");\r
-                     for (String code : codesArray){\r
-                         expectedCodes.add(new Integer(code));\r
-                     }\r
-                }\r
-\r
-                ServiceResult serviceResult;\r
-                boolean isPOST = method.equalsIgnoreCase("POST");\r
-                boolean isPUT =  method.equalsIgnoreCase("PUT");\r
-                if ( isPOST || isPUT ) {\r
-                    PartsStruct parts = PartsStruct.readParts(testNode, testID, xmlReplayBaseDir);\r
-                    if (Tools.notEmpty(parts.overrideTestID)) {\r
-                        testID = parts.overrideTestID;\r
+                try {\r
+                    testElementIndex++;\r
+                    String testID = testNode.valueOf("@ID");\r
+                    String testIDLabel = Tools.notEmpty(testID) ? (testGroupID+'.'+testID) : (testGroupID+'.'+testElementIndex);\r
+                    String method = testNode.valueOf("method");\r
+                    String uri = testNode.valueOf("uri");\r
+                    String fullURL = Tools.glue(protoHostPort, "/", uri);\r
+                    String initURI = uri;\r
+\r
+                    String authIDForTest = testNode.valueOf("@auth");\r
+                    String currentAuthForTest = authsMap.map.get(authIDForTest);\r
+                    if (Tools.notEmpty(currentAuthForTest)){\r
+                        authForTest = currentAuthForTest; //else just run with current from last loop;\r
                     }\r
-                    if (isPOST){\r
-                        String csid = CSIDfromTestID(testNode, serviceResultsMap);\r
-                        if (Tools.notEmpty(csid)) uri = Tools.glue(uri, "/", csid+"/items/");\r
-                    } else if (isPUT) {\r
-                        uri = fromTestID(uri, testNode, serviceResultsMap);\r
+                    if (Tools.isEmpty(authForTest)){\r
+                        authForTest = defaultAuths.getDefaultAuth();\r
                     }\r
-                    if (parts.bDoingSinglePartPayload){\r
-                        serviceResult = XmlReplayTransport.doPOST_PUTFromXML(parts.singlePartPayloadFilename, protoHostPort, uri, "POST", XmlReplayTransport.APPLICATION_XML, evalStruct, authForTest, testIDLabel);\r
-                    } else {\r
-                        serviceResult = XmlReplayTransport.doPOST_PUTFromXML_Multipart(parts.filesList, parts.partsList, protoHostPort, uri, "POST", evalStruct, authForTest, testIDLabel);\r
-                    }\r
-                    results.add(serviceResult);\r
-                    if (isPOST){\r
-                        serviceResultsMap.put(testID, serviceResult);      //PUTs do not return a Location, so don't add PUTs to serviceResultsMap.\r
+\r
+                    if (uri.indexOf("$")>-1){\r
+                        uri = evalStruct.eval(uri, serviceResultsMap, jexl, jc);\r
                     }\r
                     fullURL = fixupFullURL(fullURL, protoHostPort, uri);\r
-                } else if (method.equalsIgnoreCase("DELETE")){\r
-                    String fromTestID = testNode.valueOf("fromTestID");\r
-                    ServiceResult pr = serviceResultsMap.get(fromTestID);\r
-                    if (pr!=null){\r
-                        serviceResult = XmlReplayTransport.doDELETE(pr.deleteURL, authForTest, testIDLabel, fromTestID);\r
-                        serviceResult.fromTestID = fromTestID;\r
+\r
+                    List<Integer> expectedCodes = new ArrayList<Integer>();\r
+                    String expectedCodesStr = testNode.valueOf("expectedCodes");\r
+                    if (Tools.notEmpty(expectedCodesStr)){\r
+                         String[] codesArray = expectedCodesStr.split(",");\r
+                         for (String code : codesArray){\r
+                             expectedCodes.add(new Integer(code.trim()));\r
+                         }\r
+                    }\r
+\r
+                    ServiceResult serviceResult;\r
+                    boolean isPOST = method.equalsIgnoreCase("POST");\r
+                    boolean isPUT =  method.equalsIgnoreCase("PUT");\r
+                    if ( isPOST || isPUT ) {\r
+                        PartsStruct parts = PartsStruct.readParts(testNode, testID, xmlReplayBaseDir);\r
+                        if (Tools.notEmpty(parts.overrideTestID)) {\r
+                            testID = parts.overrideTestID;\r
+                        }\r
+                        if (isPOST){\r
+                            String csid = CSIDfromTestID(testNode, serviceResultsMap);\r
+                            if (Tools.notEmpty(csid)) uri = Tools.glue(uri, "/", csid+"/items/");\r
+                        } else if (isPUT) {\r
+                            uri = fromTestID(uri, testNode, serviceResultsMap);\r
+                        }\r
+                        if (parts.bDoingSinglePartPayload){\r
+                            serviceResult = XmlReplayTransport.doPOST_PUTFromXML(parts.singlePartPayloadFilename, protoHostPort, uri, "POST", XmlReplayTransport.APPLICATION_XML, evalStruct, authForTest, testIDLabel);\r
+                        } else {\r
+                            serviceResult = XmlReplayTransport.doPOST_PUTFromXML_Multipart(parts.filesList, parts.partsList, protoHostPort, uri, "POST", evalStruct, authForTest, testIDLabel);\r
+                        }\r
                         results.add(serviceResult);\r
-                        if (serviceResult.gotExpectedResult()){\r
-                            serviceResultsMap.remove(fromTestID);\r
+                        if (isPOST){\r
+                            serviceResultsMap.put(testID, serviceResult);      //PUTs do not return a Location, so don't add PUTs to serviceResultsMap.\r
                         }\r
-                    } else {\r
-                        if (Tools.notEmpty(fromTestID)){\r
-                            serviceResult = new ServiceResult();\r
-                            serviceResult.responseCode = 0;\r
-                            serviceResult.error = "ID not found in element fromTestID: "+fromTestID;\r
-                            System.err.println("****\r\nServiceResult: "+serviceResult.error+". SKIPPING TEST. Full URL: "+fullURL);\r
+                        fullURL = fixupFullURL(fullURL, protoHostPort, uri);\r
+                    } else if (method.equalsIgnoreCase("DELETE")){\r
+                        String fromTestID = testNode.valueOf("fromTestID");\r
+                        ServiceResult pr = serviceResultsMap.get(fromTestID);\r
+                        if (pr!=null){\r
+                            serviceResult = XmlReplayTransport.doDELETE(pr.deleteURL, authForTest, testIDLabel, fromTestID);\r
+                            serviceResult.fromTestID = fromTestID;\r
+                            results.add(serviceResult);\r
+                            if (serviceResult.gotExpectedResult()){\r
+                                serviceResultsMap.remove(fromTestID);\r
+                            }\r
                         } else {\r
-                            serviceResult = XmlReplayTransport.doDELETE(fullURL, authForTest, testID, fromTestID);\r
+                            if (Tools.notEmpty(fromTestID)){\r
+                                serviceResult = new ServiceResult();\r
+                                serviceResult.responseCode = 0;\r
+                                serviceResult.error = "ID not found in element fromTestID: "+fromTestID;\r
+                                System.err.println("****\r\nServiceResult: "+serviceResult.error+". SKIPPING TEST. Full URL: "+fullURL);\r
+                            } else {\r
+                                serviceResult = XmlReplayTransport.doDELETE(fullURL, authForTest, testID, fromTestID);\r
+                            }\r
+                            serviceResult.fromTestID = fromTestID;\r
+                            results.add(serviceResult);\r
                         }\r
-                        serviceResult.fromTestID = fromTestID;\r
+                    } else if (method.equalsIgnoreCase("GET")){\r
+                        fullURL = fromTestID(fullURL, testNode, serviceResultsMap);\r
+                        serviceResult = XmlReplayTransport.doGET(fullURL, authForTest, testIDLabel);\r
+                        results.add(serviceResult);\r
+                    } else if (method.equalsIgnoreCase("LIST")){\r
+                        fullURL = fixupFullURL(fullURL, protoHostPort, uri);\r
+                        String listQueryParams = ""; //TODO: empty for now, later may pick up from XML control file.\r
+                        serviceResult = XmlReplayTransport.doLIST(fullURL, listQueryParams, authForTest, testIDLabel);\r
                         results.add(serviceResult);\r
+                    } else {\r
+                        throw new Exception("HTTP method not supported by XmlReplay: "+method);\r
                     }\r
-                } else if (method.equalsIgnoreCase("GET")){\r
-                    fullURL = fromTestID(fullURL, testNode, serviceResultsMap);\r
-                    serviceResult = XmlReplayTransport.doGET(fullURL, authForTest, testIDLabel);\r
-                    results.add(serviceResult);\r
-                } else if (method.equalsIgnoreCase("LIST")){\r
-                    fullURL = fixupFullURL(fullURL, protoHostPort, uri);\r
-                    String listQueryParams = ""; //TODO: empty for now, later may pick up from XML control file.\r
-                    serviceResult = XmlReplayTransport.doLIST(fullURL, listQueryParams, authForTest, testIDLabel);\r
-                    results.add(serviceResult);\r
-                } else {\r
-                    throw new Exception("HTTP method not supported by XmlReplay: "+method);\r
-                }\r
 \r
-                serviceResult.testID = testID;\r
-                serviceResult.fullURL = fullURL;\r
-                serviceResult.auth = authForTest;\r
-                serviceResult.method = method;\r
-                if (expectedCodes.size()>0){\r
-                    serviceResult.expectedCodes = expectedCodes;\r
+                    serviceResult.testID = testID;\r
+                    serviceResult.fullURL = fullURL;\r
+                    serviceResult.auth = authForTest;\r
+                    serviceResult.method = method;\r
+                    if (expectedCodes.size()>0){\r
+                        serviceResult.expectedCodes = expectedCodes;\r
+                    }\r
+                    if (Tools.isEmpty(serviceResult.testID)) serviceResult.testID = testIDLabel;\r
+                    if (Tools.isEmpty(serviceResult.testGroupID)) serviceResult.testGroupID = testGroupID;\r
+\r
+                    String serviceResultRow = serviceResult.dump(dump.dumpServiceResult);\r
+                    String leader = (dump.dumpServiceResult == ServiceResult.DUMP_OPTIONS.detailed) ? "XmlReplay:"+testIDLabel+": ": "";\r
+                    System.out.println(leader+serviceResultRow+"\r\n");\r
+                    if (dump.payloads) System.out.println(serviceResult.result);\r
+                } catch (Throwable t) {\r
+                    System.out.println("ERROR: XmlReplay experienced an error in a test node: "+testNode+" Throwable: "+t);\r
                 }\r
-                if (Tools.isEmpty(serviceResult.testID)) serviceResult.testID = testIDLabel;\r
-                if (Tools.isEmpty(serviceResult.testGroupID)) serviceResult.testGroupID = testGroupID;\r
-\r
-                String serviceResultRow = serviceResult.dump(dump.dumpServiceResult);\r
-                String leader = (dump.dumpServiceResult == ServiceResult.DUMP_OPTIONS.detailed) ? "XmlReplay:"+testIDLabel+": ": "";\r
-                System.out.println(leader+serviceResultRow+"\r\n");\r
-                if (dump.payloads) System.out.println(serviceResult.result);\r
             }\r
             if (Tools.isTrue(autoDeletePOSTS)&&param_autoDeletePOSTS){\r
                 autoDelete(serviceResultsMap, "default");\r
index 8ef1e2374ee2074da0cde9b7c1208560b1d9a8ff..2c7daf4b2cdc2ec95beced1143cba34cc7f3c8e2 100755 (executable)
 \r
         <!--First test that bigbird2010 does NOT have write access: -->\r
         <test ID="dimensionBeforePerms"  auth="bigbird2010">\r
-            <expectedCodes>401,500,501</expectedCodes>\r
+            <expectedCodes>401,403,500,501</expectedCodes>\r
             <method>POST</method>\r
             <uri>/cspace-services/dimensions/</uri>\r
             <part>\r
             <fromTestID>dimensionBigbird_POST_AfterPermrolesDeleted</fromTestID>\r
         </test>\r
         <test ID="dimensionBigbird_DELETE_AfterPermrolesDeleted" auth="bigbird2010">\r
-            <expectedCodes>403,404</expectedCodes>\r
+            <expectedCodes>0,403,404</expectedCodes>\r
             <method>DELETE</method>\r
             <fromTestID>dimensionBigbird_POST_AfterPermrolesDeleted</fromTestID>\r
         </test>\r
index c0971f5fbb02f35b6cc7984f98549cc897379ef9..c700ad0ed872356a9761539e4f72eb39c16a7c10 100755 (executable)
@@ -20,9 +20,9 @@
     When the DB is cleaned with [ant create_db import] it runs OK.\r
     -->\r
 \r
-    <!--<run controlFile="./security.xml" testGroup="securityRemovingRoleperms" />\r
-    -->\r
-    <run controlFile="./organization.xml" testGroup="organization" />\r
+    <run controlFile="./security.xml" testGroup="securityRemovingRoleperms" />\r
+    \r
+    <!--<run controlFile="./organization.xml" testGroup="organization" />-->\r
 \r
 </xmlReplayMaster>\r
 \r