]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-3595 Reviving XmlReplay test cases after correcting them for new POX format...
authorLaramie Crocker <laramie@berkeley.edu>
Sun, 24 Apr 2011 01:05:21 +0000 (01:05 +0000)
committerLaramie Crocker <laramie@berkeley.edu>
Sun, 24 Apr 2011 01:05:21 +0000 (01:05 +0000)
25 files changed:
services/IntegrationTests/src/main/java/org/collectionspace/services/IntegrationTests/xmlreplay/ServiceResult.java
services/IntegrationTests/src/main/java/org/collectionspace/services/IntegrationTests/xmlreplay/TreeWalkResults.java
services/IntegrationTests/src/main/java/org/collectionspace/services/IntegrationTests/xmlreplay/XmlCompareJdom.java
services/IntegrationTests/src/main/java/org/collectionspace/services/IntegrationTests/xmlreplay/XmlReplay.java
services/IntegrationTests/src/main/java/org/collectionspace/services/IntegrationTests/xmlreplay/XmlReplayTransport.java
services/IntegrationTests/src/test/java/org/collectionspace/services/IntegrationTests/test/XmlCompareJdomTest.java
services/IntegrationTests/src/test/resources/test-data/xmlreplay/acquisitions/ac1.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/acquisitions/ac2.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/acquisitions/acquisitions.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/acquisitions/res/ac1.res.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/acquisitions/res/ac2.res.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/acquisitions/res/ac3.res.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/acquisitions/res/ac3list.res.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/dev-master.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/dimension-master.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/dimension/1.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/dimension/2-put.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/objectexit/object-exit-display.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/objectexit/object-exit.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/objectexit/res/oePersonDisplayGET.res.xml [new file with mode: 0644]
services/IntegrationTests/src/test/resources/test-data/xmlreplay/security.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/security/6-account-elmo.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/xml-replay-master-self-test.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/xml-replay-master.xml
services/common-api/src/main/java/org/collectionspace/services/common/api/Tools.java

index 70e9a0e2004c69e38e1af6b9743e3d7b5dc89ee3..1604da1ea5eaf28cd8818e0b80a10110a6a971be 100755 (executable)
@@ -45,7 +45,7 @@ public class ServiceResult {
     public String CSID = "";\r
     public String subresourceCSID = "";\r
     public String requestPayload = "";  //just like requestPayloadRaw, but may have multipart boundary and headers.\r
-    public Map<String, String> requestPayloadsRaw = new HashMap<String, String>();\r
+    public String requestPayloadsRaw = "";\r
     public String result = "";\r
     public int responseCode = 0;\r
     public String responseMessage = "";\r
@@ -164,23 +164,26 @@ public class ServiceResult {
         if (overrideExpectedResult){\r
             return true;\r
         }\r
-        if (Tools.notEmpty(failureReason)){\r
-            return false;\r
-        }\r
+        //if (Tools.notEmpty(failureReason)){\r
+        //    return false;\r
+        //}\r
         for (Integer oneExpected : expectedCodes){\r
             if (responseCode == oneExpected){\r
+                failureReason = "";\r
                 return isDomWalkOK();\r
             }\r
         }\r
         if ( expectedCodes.size()>0 && codeInSuccessRange(responseCode)){ //none found, but result expected.\r
             for (Integer oneExpected : expectedCodes){\r
                 if ( ! codeInSuccessRange(oneExpected)){\r
+                    failureReason = "";\r
                     return isDomWalkOK();\r
                 }\r
             }\r
         }\r
         boolean ok = codeInSuccessRange(responseCode);\r
         if (ok) {\r
+            failureReason = "";\r
             return isDomWalkOK();\r
         }\r
         failureReason = " : STATUS CODE UNEXPECTED; ";\r
@@ -188,7 +191,7 @@ public class ServiceResult {
     }\r
 \r
     //public static final String[] DUMP_OPTIONS = {"minimal", "detailed", "full"};\r
-    public static enum DUMP_OPTIONS {minimal, detailed, full};\r
+    public static enum DUMP_OPTIONS {minimal, detailed, full, auto};\r
 \r
     public static enum PAYLOAD_STRICTNESS {ZERO, ADDOK, TREE, TEXT, TREE_TEXT, STRICT};\r
 \r
@@ -226,6 +229,10 @@ public class ServiceResult {
     }\r
 \r
     public String minimal(){\r
+        return minimal(false);\r
+    }\r
+\r
+    public String minimal(boolean verbosePartsSummary){\r
         return "{"\r
                 + ( gotExpectedResult() ? "SUCCESS" : "FAILURE"  )\r
                 + failureReason\r
@@ -237,28 +244,34 @@ public class ServiceResult {
                 +"; URL:"+fullURL\r
                 +"; auth: "+auth\r
                 + ( Tools.notEmpty(error) ? "; ERROR:"+error : "" )\r
-                + ( partsSummary(false))\r
+                + (verbosePartsSummary ? partsSummary(true) : partsSummary(false) )\r
                 +"}";\r
     }\r
-    public String dump(ServiceResult.DUMP_OPTIONS opt){\r
+    public String dump(ServiceResult.DUMP_OPTIONS opt, boolean hasError){\r
         switch (opt){\r
             case minimal:\r
-                return minimal();\r
+                return minimal(false);\r
             case detailed:\r
                 return detail(false);\r
             case full:\r
                 return detail(true);\r
+            case auto:\r
+                return minimal(hasError);\r
             default:\r
                 return toString();\r
         }\r
     }\r
 \r
     /** This method may be called from a test case, using a syntax like ${testID3.resValue("persons_common", "//refName")}   */\r
-    public String got(String partName, String xpath) throws Exception {\r
+    public String got(String xpath) throws Exception {\r
         try {\r
-            PayloadLogger.HttpTraffic traffic = PayloadLogger.readPayloads(this.result, this.boundary, this.contentLength);\r
-            PayloadLogger.Part partFromServer = traffic.getPart(partName);\r
-            String source = partFromServer.getContent();\r
+            //PayloadLogger.HttpTraffic traffic = PayloadLogger.readPayloads(this.result, this.boundary, this.contentLength);\r
+            //PayloadLogger.Part partFromServer = traffic.getPart(partName);\r
+            //String source = partFromServer.getContent();\r
+            String source = this.result;\r
+            if (Tools.isBlank(source)){\r
+                return "";\r
+            }\r
             org.jdom.Element element = (org.jdom.Element) XmlCompareJdom.selectSingleNode(source, xpath, null);  //todo: passing null for namespace may not work.\r
             String sr = element != null ? element.getText() : "";\r
             return sr;\r
@@ -268,14 +281,11 @@ public class ServiceResult {
     }\r
 \r
     /** This method may be called from a test case, using a syntax like ${oe9.reqValue("personauthorities_common","//shortIdentifier")}    */\r
-    public String sent(String partName, String xpath) throws Exception {\r
+    public String sent(String xpath) throws Exception {\r
         try {\r
-            if (Tools.isEmpty(partName)){\r
-                partName = "default";\r
-            }\r
-            String source = this.requestPayloadsRaw.get(partName);\r
+            String source = this.requestPayloadsRaw;\r
             if (source == null){\r
-                return "ERROR:null:requestPayloadsRaw["+partName+"]";\r
+                return "ERROR:null:requestPayloadsRaw";\r
             }\r
             org.jdom.Element element = (org.jdom.Element) XmlCompareJdom.selectSingleNode(source, xpath, null);   //e.g. "//shortIdentifier");  //todo: passing null for namespace may not work.\r
             String sr = element != null ? element.getText() : "";\r
index 0d24a169f20ed846d6d6365dc5880734216fec63..b7c10e8178022bd9111b68e6b46a066a971c42be 100755 (executable)
@@ -39,6 +39,8 @@ public class TreeWalkResults extends ArrayList<TreeWalkResults.TreeWalkEntry> {
         public String rpath = "";\r
         public String ltextTrimmed = "";\r
         public String rtextTrimmed = "";\r
+        public String expected = "";\r
+        public String actual = "";\r
         public String message = "";\r
         public String errmessage = "";\r
         public static enum STATUS {INFO, MATCHED, R_MISSING, R_ADDED, DOC_ERROR, TEXT_DIFFERENT};\r
@@ -51,8 +53,12 @@ public class TreeWalkResults extends ArrayList<TreeWalkResults.TreeWalkEntry> {
                  +(Tools.notEmpty(rpath) ? ", R.path:"+rpath : "")\r
                  +(Tools.notEmpty(message) ? ", message:"+message : "")\r
                  +(Tools.notEmpty(errmessage) ? ", errmessage:"+errmessage : "")\r
+                 +", status:"+status\r
                  +((status != STATUS.MATCHED) && Tools.notEmpty(ltextTrimmed) ? ",\r\n    L.trimmed:"+ltextTrimmed : "")\r
                  +((status != STATUS.MATCHED) && Tools.notEmpty(rtextTrimmed) ? ",\r\n    R.trimmed:"+rtextTrimmed : "")\r
+                 +((status != STATUS.MATCHED) && Tools.notEmpty(expected) ? "\r\nEXPECTED:\r\n------------------\r\n"+expected.trim()+"\r\n------------------" : "")\r
+                 +((status != STATUS.MATCHED) && Tools.notEmpty(actual) ? "\r\nACTUAL:\r\n------------------\r\n"+actual.trim()+"\r\n------------------\r\n" : "")\r
+\r
                  +"}";\r
 \r
         }\r
index 764e21668429451279215aac14955645288c2d7f..b747cf3cfea0a89aeb55aee0a9a5012bf1d3a9df 100755 (executable)
@@ -60,17 +60,15 @@ private static final String DEFAULT_SAX_DRIVER_CLASS = "org.apache.xerces.parser
         return doc;\r
     }\r
 \r
-    public static TreeWalkResults compareParts(String expectedContent, String leftID, String actualPartContent, String rightID){\r
-\r
-        System.out.println("expected: \r\n"+expectedContent+"\r\n\r\n");\r
-        System.out.println("ACTUAL: \r\n"+actualPartContent);\r
-\r
+    public static TreeWalkResults compareParts(String expectedContent, String leftID, String actualPartContent, String rightID, String startElement){\r
         TreeWalkResults list = new TreeWalkResults();\r
         try {\r
 \r
             list.leftID = leftID;\r
             list.rightID = rightID;\r
             TreeWalkResults.TreeWalkEntry infoentry = new TreeWalkResults.TreeWalkEntry();\r
+            infoentry.expected = expectedContent;\r
+            infoentry.actual = actualPartContent;\r
             infoentry.status = TreeWalkResults.TreeWalkEntry.STATUS.INFO;\r
             infoentry.message = "\r\n    LEFT file: "+leftID+"\r\n    RIGHT file: "+rightID;\r
             list.add(infoentry);\r
@@ -87,7 +85,7 @@ private static final String DEFAULT_SAX_DRIVER_CLASS = "org.apache.xerces.parser
             } else {\r
                 Document expected = getDocumentFromContent(expectedContent);\r
                 Document actual = getDocumentFromContent(actualPartContent);\r
-                treeWalk(expected, actual, list);\r
+                treeWalk(expected, actual, list, startElement);\r
             }\r
         } catch (Throwable t){\r
             String msg = "ERROR in XmlReplay.compareParts(): "+t;\r
@@ -130,8 +128,28 @@ private static final String DEFAULT_SAX_DRIVER_CLASS = "org.apache.xerces.parser
         return xpath.selectSingleNode(element);\r
     }\r
 \r
-    public static boolean treeWalk(Document left, Document right, TreeWalkResults list) throws Exception {\r
-        boolean res = treeWalk(left.getRootElement(), right.getRootElement(), "/", list);\r
+    /*   MAYBE DEAL WITH NAMESPACES IN THIS KIND OF APPROACH.\r
+\r
+    for (Element el : doc.getRootElement().getDescendants(new ElementFilter())) {\r
+    if (el.getNamespace() != null) el.setNamespace(null);\r
+\r
+    xpath.addNamespace("x", d.getRootElement().getNamespaceUri());\r
+    */\r
+    public static boolean treeWalk(Document left, Document right, TreeWalkResults list, String startElement) throws Exception {\r
+        Element leftElement = left.getRootElement();\r
+        Element rightElement = right.getRootElement();\r
+        if (Tools.notBlank(startElement)) {\r
+            XPath xpath = new JDOMXPath(startElement);\r
+            Object test = xpath.selectSingleNode(leftElement);\r
+            if (test!=null){\r
+                leftElement = (Element)test;\r
+            }\r
+            Object rtest = xpath.selectSingleNode(rightElement);\r
+            if (rtest!=null){\r
+                rightElement = (Element)rtest;\r
+            }\r
+        }\r
+        boolean res = treeWalk(leftElement, rightElement, "/", list);\r
         return res;\r
     }\r
 \r
index ae1a9178e52dcbb1949e0cf1e5a76e22fe2f5e17..32eba083c843413d36bb5c49857b53c26cd2ba51 100755 (executable)
@@ -3,9 +3,7 @@ package org.collectionspace.services.IntegrationTests.xmlreplay;
 import org.apache.commons.cli.*;\r
 \r
 import org.apache.commons.io.FileUtils;\r
-import org.apache.commons.jexl2.JexlContext;\r
 import org.apache.commons.jexl2.JexlEngine;\r
-import org.apache.commons.jexl2.MapContext;\r
 import org.collectionspace.services.common.api.Tools;\r
 import org.dom4j.*;\r
 import org.dom4j.io.SAXReader;\r
@@ -279,72 +277,26 @@ public class XmlReplay {
     }\r
 \r
     private static class PartsStruct {\r
-        public List<String> partsList = new ArrayList<String>();\r
-        public List<String> filesList = new ArrayList<String>();\r
-        public List<String> fromTests = new ArrayList<String>();\r
         public List<Map<String,String>> varsList = new ArrayList<Map<String,String>>();\r
-        boolean bDoingSinglePartPayload = false;\r
-        String singlePartPayloadFilename = "";\r
+        String responseFilename = "";\r
         String overrideTestID = "";\r
+        String startElement = "";\r
+        String label = "";\r
+\r
         public static PartsStruct readParts(Node testNode, final String testID, String xmlReplayBaseDir){\r
             PartsStruct resultPartsStruct = new PartsStruct();\r
-            resultPartsStruct.singlePartPayloadFilename = testNode.valueOf("filename");\r
-            String singlePartPayloadFilename = testNode.valueOf("filename");\r
-            if (Tools.notEmpty(singlePartPayloadFilename)){\r
-                resultPartsStruct.bDoingSinglePartPayload = true;\r
-                resultPartsStruct.singlePartPayloadFilename = xmlReplayBaseDir + '/' + singlePartPayloadFilename;\r
+            resultPartsStruct.responseFilename = testNode.valueOf("filename");\r
+            resultPartsStruct.startElement = testNode.valueOf("startElement");\r
+            resultPartsStruct.label = testNode.valueOf("label");\r
+            String responseFilename = testNode.valueOf("filename");\r
+            if (Tools.notEmpty(responseFilename)){\r
+                resultPartsStruct.responseFilename = xmlReplayBaseDir + '/' + responseFilename;\r
                 List<Node> varNodes = testNode.selectNodes("vars/var");\r
                 readVars(testNode, varNodes, resultPartsStruct);\r
-            } else {\r
-                resultPartsStruct.bDoingSinglePartPayload = false;\r
-                List<Node> parts = testNode.selectNodes("parts/part");\r
-                if (parts == null || parts.size()==0){\r
-                    //path is just /testGroup/test/part/\r
-                    Node part = testNode.selectSingleNode("part");\r
-                    readPart(testNode, part, xmlReplayBaseDir, testID, resultPartsStruct);      //side-effect: adds objects to result.\r
-                } else {\r
-                    // path is /testGroup/test/parts/part/\r
-                    for (Node part : parts){\r
-                        readPart(testNode, part, xmlReplayBaseDir, testID, resultPartsStruct);  //side-effect: adds objects to result.\r
-                    }\r
-                }\r
             }\r
             return resultPartsStruct;\r
         }\r
-        private static void readPart(Node testNode, Node part, String xmlReplayBaseDir, String testID, PartsStruct resultPartsStruct){\r
-            String commonPartName = part.valueOf("label");\r
-            String filename = part.valueOf("filename");\r
-            String fullTestFilename = xmlReplayBaseDir + '/' + filename;\r
-            if ( Tools.isEmpty(testID) ){  //if testID is empty, we'll use the *first*  filename as ID.\r
-                resultPartsStruct.overrideTestID = filename; //It is legal to have a missing ID attribute, and rely on a unique filename.\r
-            }\r
-            String fromTest = part.valueOf("fromTest");\r
-            if (fromTest == null){\r
-                fromTest = "";\r
-            }\r
-\r
-            //These next foun members (partsList,filesList,varsList, and fromTests),\r
-            // should be added in lock-step, since they are assumed to exist by index (0,1,2,3, etc.)\r
-            resultPartsStruct.partsList.add(commonPartName);\r
-            resultPartsStruct.filesList.add(fullTestFilename);\r
-            resultPartsStruct.fromTests.add(fromTest);\r
-\r
-            List<Node> varNodes = part.selectNodes("var");\r
-            readVars(testNode, varNodes, resultPartsStruct);\r
-           /* Map<String,String> vars = new HashMap<String,String>();\r
-            resultPartsStruct.varsList.add(vars);\r
 \r
-            List<Node> varNodes = part.selectNodes("var");\r
-            //System.out.println("### vars: "+vars.size()+" ########");\r
-            for (Node var: varNodes){\r
-                String ID = var.valueOf("@ID");\r
-                String value = var.getText();\r
-                //System.out.println("ID: "+ID+" value: "+value);\r
-                vars.put(ID, value); //vars is already part of resultPartsStruct.varsList\r
-            }\r
-            //System.out.println("### end-vars ########");\r
-             */\r
-        }\r
         private static void readVars(Node testNode, List<Node> varNodes, PartsStruct resultPartsStruct){\r
             Map<String,String> vars = new HashMap<String,String>();\r
             resultPartsStruct.varsList.add(vars);\r
@@ -404,27 +356,35 @@ public class XmlReplay {
         }\r
         return document;\r
     }\r
+\r
     protected static String validateResponseSinglePayload(ServiceResult serviceResult,\r
                                                  Map<String, ServiceResult> serviceResultsMap,\r
                                                  PartsStruct expectedResponseParts,\r
                                                  XmlReplayEval evalStruct)\r
     throws Exception {\r
         String OK = "";\r
-        byte[] b = FileUtils.readFileToByteArray(new File(expectedResponseParts.singlePartPayloadFilename));\r
+        byte[] b = FileUtils.readFileToByteArray(new File(expectedResponseParts.responseFilename));\r
         String expectedPartContent = new String(b);\r
         Map<String,String> vars = expectedResponseParts.varsList.get(0);  //just one part, so just one varsList.  Must be there, even if empty.\r
         expectedPartContent = evalStruct.eval(expectedPartContent, serviceResultsMap, vars, evalStruct.jexl, evalStruct.jc);\r
         String label = "NOLABEL";\r
-        String leftID  = "{from expected part, label:"+label+" filename: "+expectedResponseParts.singlePartPayloadFilename+"}";\r
+        String leftID  = "{from expected part, label:"+label+" filename: "+expectedResponseParts.responseFilename+"}";\r
         String rightID = "{from server, label:"+label\r
                             +" fromTestID: "+serviceResult.fromTestID\r
                             +" URL: "+serviceResult.fullURL\r
                             +"}";\r
+        String startElement = expectedResponseParts.startElement;\r
+        String partLabel = expectedResponseParts.label;\r
+        if (Tools.isBlank(startElement)){\r
+            if (Tools.notBlank(partLabel))\r
+            startElement = "/document/*[local-name()='"+partLabel+"']";\r
+        }\r
         TreeWalkResults list =\r
             XmlCompareJdom.compareParts(expectedPartContent,\r
                                         leftID,\r
                                         serviceResult.result,\r
-                                        rightID);\r
+                                        rightID,\r
+                                        startElement);\r
         serviceResult.addPartSummary(label, list);\r
         return OK;\r
     }\r
@@ -437,64 +397,14 @@ public class XmlReplay {
         if (expectedResponseParts == null) return OK;\r
         if (serviceResult == null) return OK;\r
         if (serviceResult.result.length() == 0) return OK;\r
-        String responseDump = serviceResult.result;\r
         try {\r
-            if (expectedResponseParts.bDoingSinglePartPayload){\r
-                return validateResponseSinglePayload(serviceResult, serviceResultsMap, expectedResponseParts, evalStruct);\r
-            }\r
-            //System.out.println("responseDump: "+responseDump);\r
-            PayloadLogger.HttpTraffic traffic = PayloadLogger.readPayloads(responseDump, serviceResult.boundary, serviceResult.contentLength);\r
-\r
-            for (int i=0; i<expectedResponseParts.partsList.size(); i++){\r
-                String fileName = expectedResponseParts.filesList.get(i);\r
-                String label = expectedResponseParts.partsList.get(i);\r
-                Map<String,String> vars = expectedResponseParts.varsList.get(i);\r
-                String fromTest = expectedResponseParts.fromTests.get(i);\r
-                String expectedPartContent;\r
-                if ( ! Tools.isEmpty(fromTest)){\r
-                    ServiceResult resultFromTest = serviceResultsMap.get(fromTest);\r
-                    expectedPartContent = resultFromTest.requestPayloadsRaw.get(label);  //TODO: debug this!!!!!!!\r
-                } else {\r
-                    byte[] b = FileUtils.readFileToByteArray(new File(fileName));\r
-                    expectedPartContent = new String(b);\r
-                    expectedPartContent = evalStruct.eval(expectedPartContent, serviceResultsMap, vars, evalStruct.jexl, evalStruct.jc);\r
-                }\r
-                //System.out.println("expected: "+label+ " content ==>\r\n"+expectedPartContent);\r
-                PayloadLogger.Part partFromServer = traffic.getPart(label);\r
-                String partFromServerContent = "";\r
-                if (partFromServer != null){\r
-                    partFromServerContent = partFromServer.getContent();\r
-                } else {\r
-                    partFromServerContent = "";\r
-                }\r
-                //if (partFromServer!=null) {\r
-                    //System.out.println("====part content from server.   label-->"+label+"<-- \r\npart-->"+partFromServerContent+"<--");\r
-\r
-                    String leftID  = "{from expected part, label:"+label+" filename: "+fileName+"}";\r
-                    String rightID = "{from server, label:"+label\r
-                                        //+" testGroupID: "+serviceResult.testGroupID\r
-                                        +" fromTestID: "+serviceResult.fromTestID\r
-                                        +" URL: "+serviceResult.fullURL\r
-                                        +"}";\r
-                    TreeWalkResults list =\r
-                        XmlCompareJdom.compareParts(expectedPartContent,\r
-                                                    leftID,\r
-                                                    partFromServerContent,\r
-                                                    rightID);\r
-                    //if (list.getMismatchCount()>0){\r
-                        serviceResult.addPartSummary(label, list);\r
-                    //}\r
-                //}\r
-            }\r
+            return validateResponseSinglePayload(serviceResult, serviceResultsMap, expectedResponseParts, evalStruct);\r
         } catch (Exception e){\r
             String err = "ERROR in XmlReplay.validateResponse() : "+e;\r
-            //System.out.println(err);\r
             return err  ;\r
         }\r
-        return OK;\r
     }\r
 \r
-\r
     //================= runXmlReplayFile ======================================================\r
 \r
     public static List<ServiceResult> runXmlReplayFile(String xmlReplayBaseDir,\r
@@ -537,7 +447,8 @@ public class XmlReplay {
         } else {\r
             authsMapINFO = "Using AuthsMap from control file: "+authsMap;\r
         }\r
-        System.out.println("XmlReplay running:"\r
+        System.out.println("========================================================================"\r
+                          +"\r\nXmlReplay running:"\r
                           +"\r\n   controlFile: "+ (new File(controlFile).getCanonicalPath())\r
                           +"\r\n   protoHostPort: "+protoHostPort\r
                           +"\r\n   testGroup: "+testGroupID\r
@@ -545,6 +456,7 @@ public class XmlReplay {
                           +"\r\n   AuthsMap: "+authsMapINFO\r
                           +"\r\n   param_autoDeletePOSTS: "+param_autoDeletePOSTS\r
                           +"\r\n   Dump info: "+dump\r
+                          +"\r\n========================================================================"\r
                           +"\r\n");\r
 \r
         String autoDeletePOSTS = "";\r
@@ -578,20 +490,12 @@ public class XmlReplay {
             for (Node testNode : tests) {\r
                 long startTime = System.currentTimeMillis();\r
                 try {\r
-                    /*try {\r
-                        //"sleeping 2");\r
-                        Thread.currentThread().sleep(2);\r
-                    } catch (InterruptedException ie){\r
-                        System.out.println("ERROR sleeping: "+ie);\r
-                    }\r
-                    */\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
@@ -637,20 +541,12 @@ public class XmlReplay {
                         } else if (isPUT) {\r
                             uri = fromTestID(uri, testNode, serviceResultsMap);\r
                         }\r
-                        if (parts.bDoingSinglePartPayload){\r
-                            Map<String,String> vars = null;\r
-                            if (parts.varsList.size()>0){\r
-                                vars = parts.varsList.get(0);\r
-                            }\r
-                            serviceResult = XmlReplayTransport.doPOST_PUTFromXML(parts.singlePartPayloadFilename, vars, protoHostPort, uri, method, XmlReplayTransport.APPLICATION_XML, evalStruct, authForTest, testIDLabel);\r
-                        } else {\r
-                            boolean POX = true;\r
-                            if (POX){\r
-                                serviceResult = XmlReplayTransport.doPOST_PUTFromXML_POX      (parts.filesList, parts.partsList, parts.varsList, protoHostPort, uri, method, evalStruct, authForTest, testIDLabel);\r
-                            } else {\r
-                                serviceResult = XmlReplayTransport.doPOST_PUTFromXML_Multipart(parts.filesList, parts.partsList, parts.varsList, protoHostPort, uri, method, evalStruct, authForTest, testIDLabel);\r
-                            }\r
+                        Map<String,String> vars = null;\r
+                        if (parts.varsList.size()>0){\r
+                            vars = parts.varsList.get(0);\r
                         }\r
+                        serviceResult = XmlReplayTransport.doPOST_PUTFromXML(parts.responseFilename, vars, protoHostPort, uri, method, XmlReplayTransport.APPLICATION_XML, 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
@@ -666,7 +562,7 @@ public class XmlReplay {
                                 serviceResult.expectedCodes = expectedCodes;\r
                             }\r
                             results.add(serviceResult);\r
-                            if (serviceResult.gotExpectedResult()){  //gotExpectedResult depends on serviceResult.expectedCodes.\r
+                            if (serviceResult.codeInSuccessRange(serviceResult.responseCode)){  //gotExpectedResult depends on serviceResult.expectedCodes.\r
                                 serviceResultsMap.remove(fromTestID);\r
                             }\r
                         } else {\r
@@ -714,28 +610,39 @@ public class XmlReplay {
                     //=====================================================\r
                     //  ALL VALIDATION FOR ALL REQUESTS IS DONE HERE:\r
                     //=====================================================\r
+                    boolean hasError = false;\r
                     String vError = validateResponse(serviceResult, serviceResultsMap, expectedResponseParts, evalStruct);\r
                     if (Tools.notEmpty(vError)){\r
                         serviceResult.error = vError;\r
                         serviceResult.failureReason = " : VALIDATION ERROR; ";\r
+                        hasError = true;\r
+                    }\r
+                    if (hasError == false){\r
+                        hasError = ! serviceResult.gotExpectedResult();\r
                     }\r
 \r
-                    String serviceResultRow = serviceResult.dump(dump.dumpServiceResult)+"; time:"+(startTime-System.currentTimeMillis());\r
+                    boolean doingAuto = (dump.dumpServiceResult == ServiceResult.DUMP_OPTIONS.auto);\r
+                    String serviceResultRow = serviceResult.dump(dump.dumpServiceResult, hasError)+"; time:"+(System.currentTimeMillis()-startTime);\r
                     String leader = (dump.dumpServiceResult == ServiceResult.DUMP_OPTIONS.detailed) ? "XmlReplay:"+testIDLabel+": ": "";\r
+\r
                     if (   (dump.dumpServiceResult == ServiceResult.DUMP_OPTIONS.detailed)\r
-                        || (dump.dumpServiceResult == ServiceResult.DUMP_OPTIONS.full)){\r
+                        || (dump.dumpServiceResult == ServiceResult.DUMP_OPTIONS.full)         ){\r
                         System.out.println("\r\n#---------------------#");\r
                     }\r
                     System.out.println(leader+serviceResultRow+"\r\n");\r
-                    if (dump.payloads && Tools.notBlank(serviceResult.requestPayload)) {\r
-                        System.out.println("\r\n========== request payload ===============");\r
-                        System.out.println(serviceResult.requestPayload);\r
-                        System.out.println("==========================================\r\n");\r
+                    if (dump.payloads || (doingAuto&&hasError) ) {\r
+                        if (Tools.notBlank(serviceResult.requestPayload)){\r
+                            System.out.println("\r\n========== request payload ===============");\r
+                            System.out.println(serviceResult.requestPayload);\r
+                            System.out.println("==========================================\r\n");\r
+                        }\r
                     }\r
-                    if (dump.payloads && Tools.notBlank(serviceResult.result)) {\r
-                        System.out.println("\r\n========== response payload ==============");\r
-                        System.out.println(serviceResult.result);\r
-                        System.out.println("==========================================\r\n");\r
+                    if (dump.payloads || (doingAuto&&hasError)) {\r
+                        if (Tools.notBlank(serviceResult.result)){\r
+                            System.out.println("\r\n========== response payload ==============");\r
+                            System.out.println(serviceResult.result);\r
+                            System.out.println("==========================================\r\n");\r
+                        }\r
                     }\r
                 } catch (Throwable t) {\r
                     String msg = "ERROR: XmlReplay experienced an error in a test node: "+testNode+" Throwable: "+t;\r
@@ -754,7 +661,6 @@ public class XmlReplay {
         return results;\r
     }\r
 \r
-\r
     //======================== MAIN ===================================================================\r
 \r
     private static Options createOptions() {\r
index 545a2b8f6592eebe1daee0ff65899c288f7b3aaf..292e2d9b67ff1027481202aeafc5dc5c71a7fb09 100755 (executable)
@@ -85,13 +85,12 @@ public class XmlReplayTransport {
             //System.err.println("ERROR getting content from response: "+t);\r
             pr.error = t.toString();\r
         }\r
-\r
-\r
         return pr;\r
     }\r
 \r
     public static ServiceResult doDELETE(String urlString, String authForTest, String testID, String fromTestID) throws Exception {\r
         ServiceResult pr = new ServiceResult();\r
+        pr.failureReason = "";\r
         pr.method = "DELETE";\r
         pr.fullURL = urlString;\r
         pr.fromTestID = fromTestID;\r
@@ -134,6 +133,7 @@ public class XmlReplayTransport {
     public static final String APPLICATION_XML = "application/xml";\r
 \r
     /** Use this overload for multipart messages. */\r
+    /**\r
     public static ServiceResult doPOST_PUTFromXML_Multipart(List<String> filesList,\r
                                                             List<String> partsList,\r
                                                             List<Map<String,String>> varsList,\r
@@ -169,43 +169,7 @@ public class XmlReplayTransport {
         String urlString = protoHostPort+uri;\r
         return doPOST_PUT(urlString, content, contentRaw, BOUNDARY, method, MULTIPART_MIXED, authForTest, fromTestID); //method is POST or PUT.\r
     }\r
-\r
-    public static ServiceResult doPOST_PUTFromXML_POX(List<String> filesList,\r
-                                                        List<String> partsList,\r
-                                                        List<Map<String,String>> varsList,\r
-                                                        String protoHostPort,\r
-                                                        String uri,\r
-                                                        String method,\r
-                                                        XmlReplayEval evalStruct,\r
-                                                        String authForTest,\r
-                                                        String fromTestID)\r
-                                                        throws Exception {\r
-        if (  filesList==null||filesList.size()==0\r
-            ||partsList==null||partsList.size()==0\r
-            ||(partsList.size() != filesList.size())){\r
-            throw new Exception("filesList and partsList must not be empty and must have the same number of items each.");\r
-        }\r
-        //NO: Patrick sez all test files should be complete XML now:  StringBuffer content = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");\r
-        StringBuffer content = new StringBuffer();\r
-        //content.append(CRLF).append("<document name=\"objectexit\">").append(CRLF);\r
-        Map<String, String> contentRaw = new HashMap<String, String>();\r
-        for (int i=0; i<partsList.size(); i++){\r
-            String fileName = filesList.get(i);\r
-            String commonPartName = partsList.get(i);\r
-            byte[] b = FileUtils.readFileToByteArray(new File(fileName));\r
-            String xmlString = new String(b);\r
-\r
-            xmlString = evalStruct.eval(xmlString, evalStruct.serviceResultsMap, varsList.get(i), evalStruct.jexl, evalStruct.jc);\r
-            contentRaw.put(commonPartName, xmlString);\r
-            \r
-            content.append(xmlString).append(CRLF);\r
-        }\r
-        //content.append("</document>");\r
-        String urlString = protoHostPort+uri;\r
-        String POX_BOUNDARY = "";//empty for POX.\r
-        return doPOST_PUT(urlString, content.toString(), contentRaw, POX_BOUNDARY, method,APPLICATION_XML, authForTest, fromTestID); //method is POST or PUT.\r
-    }\r
-\r
+    */\r
 \r
     /** Use this overload for NON-multipart messages, that is, regular POSTs. */\r
     public static ServiceResult doPOST_PUTFromXML(String fileName,\r
@@ -222,8 +186,7 @@ public class XmlReplayTransport {
         String xmlString = new String(b);\r
         xmlString = evalStruct.eval(xmlString, evalStruct.serviceResultsMap, vars, evalStruct.jexl, evalStruct.jc);\r
         String urlString = protoHostPort+uri;\r
-        Map<String, String> contentRaw = new HashMap<String, String>();\r
-        contentRaw.put("default", xmlString);\r
+        String contentRaw = xmlString;\r
         return doPOST_PUT(urlString, xmlString, contentRaw, BOUNDARY, method, contentType, authForTest, fromTestID); //method is POST or PUT.\r
     }\r
 \r
@@ -236,9 +199,14 @@ public class XmlReplayTransport {
         //if (true) return result;\r
         //END-HACK\r
 \r
-    public static ServiceResult doPOST_PUT(String urlString, String content, Map<String,String> contentRaw,\r
-                                           String boundary, String method, String contentType,\r
-                                           String authForTest, String fromTestID) throws Exception {\r
+    public static ServiceResult doPOST_PUT(String urlString,\r
+                                                                     String content,\r
+                                                                     String contentRaw,\r
+                                                                     String boundary,\r
+                                                                     String method,\r
+                                                                     String contentType,\r
+                                                                     String authForTest,\r
+                                                                     String fromTestID) throws Exception {\r
         ServiceResult result = new ServiceResult();\r
         result.method = method;\r
         String deleteURL = "";\r
@@ -299,7 +267,6 @@ public class XmlReplayTransport {
         return result;\r
     }\r
 \r
-\r
     public static ServiceResult doPOST_PUT_PostMethod(String urlString, String content, Map<String,String> contentRaw,\r
                                            String boundary, String method, String contentType,\r
                                            String authForTest, String fromTestID) throws Exception {\r
@@ -362,8 +329,6 @@ public class XmlReplayTransport {
         } finally {\r
             rd.close();\r
         }\r
-\r
-\r
     }\r
 \r
 }\r
index 1bf460b02887ccebfe4fe6da888fd49e1b57e657..dbc9c018d31c50ecab08709d22217a7db8320d06 100755 (executable)
@@ -99,7 +99,8 @@ public class XmlCompareJdomTest {
                     XmlCompareJdom.compareParts(expectedPartContent,\r
                                         "expected",\r
                                         partFromServer,\r
-                                        "from-server");\r
+                                        "from-server",\r
+                                        exPARTNAME);\r
         assertTreeWalkResults(results,0,0,0,true,true);\r
                                    // addedRight,missingRight,textMismatches,strictMatch,treesMatch\r
     }\r
@@ -111,7 +112,8 @@ public class XmlCompareJdomTest {
             XmlCompareJdom.compareParts(expectedPartContent,\r
                                         "expected",\r
                                         srvHEAD+srvEN2+srvDEPOSITOR+srvFOOT,\r
-                                        "from-server");\r
+                                        "from-server",\r
+                                        exPARTNAME);\r
         assertTreeWalkResults(results,0,0,1,false,true);\r
                                    // addedRight,missingRight,textMismatches,strictMatch,treesMatch\r
     }\r
@@ -124,7 +126,8 @@ public class XmlCompareJdomTest {
             XmlCompareJdom.compareParts(expectedPartContent,\r
                                         "expected",\r
                                         srvHEAD+srvEN+exNEWTREE+srvDEPOSITOR+exNEW+srvFOOT,\r
-                                        "from-server");\r
+                                        "from-server",\r
+                                        exPARTNAME);\r
         assertTreeWalkResults(results,2,0,0,false,false);\r
                                    // addedRight,missingRight,textMismatches,strictMatch,treesMatch\r
 \r
@@ -137,7 +140,8 @@ public class XmlCompareJdomTest {
             XmlCompareJdom.compareParts(exHEAD + exEN_WCH + exNEWTREE + exDEP  + exNEW + exFOOT,\r
                                     "expected",\r
                                     partFromServer,\r
-                                    "from-server");\r
+                                    "from-server",\r
+                                    exPARTNAME);\r
         assertTreeWalkResults(results,0,3,0,false,false);\r
                                    // addedRight,missingRight,textMismatches,strictMatch,treesMatch\r
     }\r
@@ -149,12 +153,15 @@ public class XmlCompareJdomTest {
             XmlCompareJdom.compareParts(exHEAD  + exDEP + exEN + exFOOT,\r
                                     "expected",\r
                                     partFromServer,\r
-                                    "from-server");\r
+                                    "from-server",\r
+                                    exPARTNAME);\r
         assertTreeWalkResults(results,0,0,0,true,true);\r
                                    // addedRight,missingRight,textMismatches,strictMatch,treesMatch\r
     }\r
 \r
     // ============  expected part, will be used as LEFT tree ==========================================================\r
+    private static String exPARTNAME = "objectexit_common";\r
+\r
     private static String exHEAD    ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"\r
                                     +"<document name=\"objectexit\">"\r
                                     +"<ns2:objectexit_common \r\n"\r
index 7d244483ed7f0042faf1d0b189d84cde9f9c0481..31de83477df4649ca22b4288b1b54619a7cb9645 100755 (executable)
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
+<document name="acquisitions">\r
 <ns3:acquisitions_common\r
   xmlns:ns2="http://collectionspace.org/services/jaxb"\r
   xmlns:ns3="http://collectionspace.org/services/acquisition">\r
@@ -16,5 +17,6 @@
     <acquisitionSource>Donor Acquisition Source-1292275630222</acquisitionSource>\r
   </acquisitionSources>\r
 </ns3:acquisitions_common>\r
+</document>\r
 \r
 \r
index 8cd581fa526389da0843226e4641add7707eb43a..81287aba8d83f4a766d8c9655ae49719df568548 100755 (executable)
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
+<document name="acquisitions">\r
 <ns3:acquisitions_common\r
 xmlns:ns2="http://collectionspace.org/services/jaxb"\r
 xmlns:ns3="http://collectionspace.org/services/acquisition">\r
@@ -16,5 +17,6 @@ xmlns:ns3="http://collectionspace.org/services/acquisition">
     <acquisitionSource>Donor Acquisition Source-1292275631503</acquisitionSource>\r
   </acquisitionSources>\r
 </ns3:acquisitions_common>\r
+</document>\r
 \r
 \r
index 44cfa508ac1ae4e62e9552d9513110e2776f5697..479a04d3f6302cbc340a677c159f02b39f9bc4c4 100755 (executable)
@@ -6,24 +6,19 @@
         <auth ID="testAdministator">YWRtaW5AY29sbGVjdGlvbnNwYWNlLm9yZzpBZG1pbmlzdHJhdG9y</auth>\r
     </auths>\r
    \r
-    <testGroup ID="makeone" autoDeletePOSTS="false">\r
+    <testGroup ID="makeone" autoDeletePOSTS="true">\r
        <test ID="ac1"  auth="test">\r
              <method>POST</method>\r
              <uri>/cspace-services/acquisitions/</uri>\r
-             <part>\r
-                 <label>acquisitions_common</label>\r
-                 <filename>acquisitions/ac1.xml</filename>\r
-             </part>\r
+             <filename>acquisitions/ac1.xml</filename>\r
          </test>\r
         <test ID="ac1get">\r
             <method>GET</method>\r
             <uri>/cspace-services/acquisitions/${ac1.CSID}</uri>\r
             <response>\r
                 <expected level="TEXT" />\r
-                <part>\r
-                     <label>acquisitions_common</label>\r
-                     <filename>acquisitions/res/ac1.res.xml</filename>\r
-                 </part>\r
+                <label>acquisitions_common</label>\r
+                <filename>acquisitions/res/ac1.res.xml</filename>\r
              </response>\r
          </test>\r
     </testGroup>       \r
          <test ID="ac1"  auth="test">\r
              <method>POST</method>\r
              <uri>/cspace-services/acquisitions/</uri>\r
-             <part>\r
-                 <label>acquisitions_common</label>\r
-                 <filename>acquisitions/ac1.xml</filename>\r
-             </part>\r
+             <filename>acquisitions/ac1.xml</filename>\r
          </test>\r
          \r
          <test ID="ac1get">\r
             <uri>/cspace-services/acquisitions/${ac1.CSID}</uri>\r
             <response>\r
                 <expected level="TEXT" />\r
-                <part>\r
-                     <label>acquisitions_common</label>\r
-                     <filename>acquisitions/res/ac1.res.xml</filename>\r
-                 </part>\r
+                <label>acquisitions_common</label>\r
+                               <filename>acquisitions/res/ac1.res.xml</filename>\r
              </response>\r
          </test>\r
 \r
         <test ID="ac2"  auth="test">\r
              <method>POST</method>\r
              <uri>/cspace-services/acquisitions/</uri>\r
-             <part>\r
-                 <label>acquisitions_common</label>\r
-                 <filename>acquisitions/ac2.xml</filename>\r
-             </part>\r
+             <filename>acquisitions/ac2.xml</filename>\r
          </test>\r
          \r
         <test ID="ac2get">\r
             <uri>/cspace-services/acquisitions/${ac2.CSID}</uri>\r
             <response>\r
                 <expected level="TEXT" />\r
-                <part>\r
-                     <label>acquisitions_common</label>\r
-                     <filename>acquisitions/res/ac2.res.xml</filename>\r
-                 </part>\r
+                <label>acquisitions_common</label>\r
+                               <filename>acquisitions/res/ac2.res.xml</filename>\r
              </response>\r
         </test>\r
 \r
-        <!--\r
         <test ID="ac3list">\r
             <method>GET</method>\r
             <uri>/cspace-services/acquisitions/?sortBy=&amp;pgNum=0&amp;pgSz=10</uri>\r
-            <response>acquisitions/res/ac3list.res.xml</response>\r
             <response>\r
                 <expected level="TEXT" />\r
-                <part>\r
-                     <label>acquisitions_common</label>\r
-                     <filename>acquisitions/res/ac3list.res.xml</filename>\r
-                 </part>\r
+                <label>acquisitions_common</label>\r
+                <filename>acquisitions/res/ac3list.res.xml</filename>\r
              </response>\r
         </test>\r
-        -->\r
         \r
     </testGroup>\r
      \r
-         \r
-             \r
-    <testGroup ID="cleanup" autoDeletePOSTS="true">\r
-         <test ID="ac1"  auth="test">\r
-             <method>DELETE</method>\r
-             <uri>/cspace-services/acquisitions/8080b6b8-393a-4e8a-b823</uri>\r
-         </test>\r
-         <test ID="ac1"  auth="test">\r
-             <method>DELETE</method>\r
-             <uri>/cspace-services/acquisitions/231e8787-4d77-4eaf-8d10</uri>\r
-         </test>\r
-         <test ID="ac1"  auth="test">\r
-             <method>DELETE</method>\r
-             <uri>/cspace-services/acquisitions/cbb82bbc-9513-4f83-ab4f</uri>\r
-         </test>\r
-         <test ID="ac1"  auth="test">\r
-             <method>DELETE</method>\r
-             <uri>/cspace-services/acquisitions/516c2435-4560-408c-8628</uri>\r
-         </test>\r
-    </testGroup>\r
-    \r
 \r
 </xmlReplay>\r
         \r
index 7d972ad08e3995aac0550ef0c75ef917d5276a2c..7187217b2024b3c23cef6a5a6d4ba2f046491fc1 100755 (executable)
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
+<document name="acquisitions">\r
 <ns2:acquisitions_common xmlns:ns2="http://collectionspace.org/services/acquisition" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://collectionspace.org/services/acquisition http://services.collectionspace.org/acquisition/acquisitions_common.xsd">\r
 <acquisitionReferenceNumber>acquisitionReferenceNumber-1</acquisitionReferenceNumber>\r
 <acquisitionFundingList/>\r
@@ -16,3 +17,4 @@
 </owners>\r
 <fieldCollectionEventNames/>\r
 </ns2:acquisitions_common>\r
+</document>\r
index 0eedfe9f1373bc0588943093fe5d7fe528f577b4..21d1a9364842d0338cb6d5599ecba5cd69fb31f9 100755 (executable)
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
+<document name="acquisitions">\r
 <ns2:acquisitions_common xmlns:ns2="http://collectionspace.org/services/acquisition" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://collectionspace.org/services/acquisition http://services.collectionspace.org/acquisition/acquisitions_common.xsd">\r
 <acquisitionReferenceNumber>acquisitionReferenceNumber-1292275631503</acquisitionReferenceNumber>\r
 <acquisitionFundingList/>\r
@@ -16,4 +17,5 @@
 </owners>\r
 <fieldCollectionEventNames/>\r
 </ns2:acquisitions_common>\r
+</document>\r
 \r
index 83994584d365b1618bb3a6220a04d265327bdb47..dd7b7a580ee6c8daca7cb60b36cb9b2238a596ca 100755 (executable)
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
+<document name="acquisitions">\r
 <ns2:acquisitions_common xmlns:ns2="http://collectionspace.org/services/acquisition" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://collectionspace.org/services/acquisition http://services.collectionspace.org/acquisition/acquisitions_common.xsd">\r
 <acquisitionReferenceNumber>acquisitionReferenceNumber-1292275630222</acquisitionReferenceNumber>\r
 <acquisitionFundingList/>\r
@@ -16,4 +17,5 @@
 </owners>\r
 <fieldCollectionEventNames/>\r
 </ns2:acquisitions_common>\r
+</document>\r
 \r
index fe21664bc05f996a9e22931d105723f4e22acbb0..9ab1c05834f6930764aec9e0b03f1e2dcfba71d5 100755 (executable)
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
+<document name="acquisitions">\r
 <ns3:acquisitions-common-list\r
 xmlns:ns2="http://collectionspace.org/services/jaxb"\r
 xmlns:ns3="http://collectionspace.org/services/acquisition">\r
@@ -23,5 +24,6 @@ xmlns:ns3="http://collectionspace.org/services/acquisition">
     <csid>549dd907-01cd-4f20-aeb7</csid>\r
   </acquisition-list-item>\r
 </ns3:acquisitions-common-list>\r
+</document>\r
 \r
 \r
index 417a01dd64a47423d125f960cad1cbc73dc2513b..8d9a52ecfa4e68c001220406c5655d196181e945 100644 (file)
@@ -11,8 +11,8 @@
     <!--<protoHostPort>http://173.45.245.189:8180</protoHostPort>-->\r
     <protoHostPort>http://localhost:8180</protoHostPort>\r
     \r
-    <!-- legal values for dumpServiceResult=[minimal,detailed,full] -->\r
-    <dump payloads="true" dumpServiceResult="detailed" />\r
+    <!-- legal values for dumpServiceResult=[minimal,detailed,full,auto] -->\r
+    <dump payloads="false" dumpServiceResult="auto" />\r
     \r
     <auths default="admin@collectionspace.org">\r
        <auth ID="admin@collectionspace.org">YWRtaW5AY29sbGVjdGlvbnNwYWNlLm9yZzpBZG1pbmlzdHJhdG9y</auth>\r
      \r
     <run controlFile="person/person.xml" testGroup="postPerson" />\r
     <run controlFile="relation/relation.xml" testGroup="makeRelationsNested" />\r
-    <run controlFile="relation/relation.xml" testGroup="r2only" />\r
-    <run controlFile="person/person.xml" testGroup="postPerson" />\r
     -->\r
+    \r
+    <!-- TODO: this almost works now:\r
+    <run controlFile="./security.xml" testGroup="security" />\r
+    --> \r
    \r
-\r
-   \r
+    <!--  These all work with POX:\r
+    <run controlFile="./security.xml" testGroup="deleteBug" />\r
+    <run controlFile="objectexit/object-exit.xml" testGroup="makeone" />\r
+    <run controlFile="relation/relation.xml" testGroup="r2only" />\r
+    <run controlFile="person/person.xml" testGroup="postPerson" />\r
+       <run controlFile="objectexit/object-exit-display.xml" testGroup="refNameDisplayNameOnly" />\r
+    <run controlFile="acquisitions/acquisitions.xml" testGroup="makeone" />\r
+    <run controlFile="acquisitions/acquisitions.xml" testGroup="testList" />\r
+    --> \r
     <!-- TODO: make this an override: autoDeletePOSTS="true"-->\r
+    \r
+        \r
+    \r
+\r
 </xmlReplayMaster>\r
 \r
index e887f2f586b18cc2a7b4923d3b034d31135889e5..4a709dd7b790dffb997aed025c3f4124f2b5ea37 100755 (executable)
@@ -2,8 +2,8 @@
 <xmlReplayMaster>\r
     <protoHostPort>http://localhost:8180</protoHostPort>\r
     \r
-    <!-- legal values for dumpServiceResult=[minimal,detailed,full] -->\r
-    <dump payloads="false" dumpServiceResult="minimal" />\r
+    <!-- legal values for dumpServiceResult=[minimal,detailed,full,auto] -->\r
+    <dump payloads="false" dumpServiceResult="auto" />\r
     \r
     <auths default="admin@collectionspace.org">\r
        <auth ID="admin@collectionspace.org">YWRtaW5AY29sbGVjdGlvbnNwYWNlLm9yZzpBZG1pbmlzdHJhdG9y</auth>\r
index 6867ddfaf3b8dc1ae6c0cef25369ed3cd26537bc..5c84204daa2e6e734d55e758bf36ccf64f4f1e8f 100755 (executable)
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
-<ns2:dimensions_common\r
-xmlns:ns2="http://collectionspace.org/services/dimension"\r
-xmlns:ns3="http://collectionspace.org/services/jaxb">\r
-  <dimension>dimensionType-1288727556164</dimension>\r
-  <value>entryNumber-1288727556164</value>\r
-  <valueDate>entryDate-1288727556164</valueDate>\r
-</ns2:dimensions_common>\r
+<document name="dimensions">\r
+       <ns2:dimensions_common\r
+       xmlns:ns2="http://collectionspace.org/services/dimension"\r
+       xmlns:ns3="http://collectionspace.org/services/jaxb">\r
+         <dimension>dimensionType-1288727556164</dimension>\r
+         <value>entryNumber-1288727556164</value>\r
+         <valueDate>entryDate-1288727556164</valueDate>\r
+       </ns2:dimensions_common>\r
+</document>\r
 \r
index 6fa97caeee4bee72dc93274bc5c675d3fb514627..2edfa4eb5e74b3f6af6bf0b20e57633beaedd4d0 100755 (executable)
@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
-<ns2:dimensions_common\r
-xmlns:ns2="http://collectionspace.org/services/dimension"\r
-xmlns:ns3="http://collectionspace.org/services/jaxb">\r
-  <dimension>dimensionType-1288727552274</dimension>\r
-  <value>updated-entryNumber-1288727552274</value>\r
-  <valueDate>updated-entryDate-1288727552274</valueDate>\r
-</ns2:dimensions_common>\r
-\r
+<document name="dimensions">\r
+       <ns2:dimensions_common\r
+       xmlns:ns2="http://collectionspace.org/services/dimension"\r
+       xmlns:ns3="http://collectionspace.org/services/jaxb">\r
+         <dimension>dimensionType-1288727552274</dimension>\r
+         <value>updated-entryNumber-1288727552274</value>\r
+         <valueDate>updated-entryDate-1288727552274</valueDate>\r
+       </ns2:dimensions_common>\r
+</document>\r
index efa447bc962d75cac3fbd2e80ec640cd00cb2c27..5b5e783b4b7768b91b783c150e881ca8bb09994f 100755 (executable)
         <test ID="oePersonGET">\r
             <method>GET</method>\r
             <uri>/cspace-services/personauthorities/${oePersonauthority.CSID}/items/${oePerson.CSID}</uri>\r
-            <!--\r
-            TODO: this response can't be validated because HttpTraffic object doesn't know\r
-                   how to parse new POX format.\r
-             <response>\r
-                <expected level="ADDOK" />\r
-                <part>\r
-                     <label>persons_common</label>\r
-                     <filename>objectexit/res/oePersonDisplayGET.res.xml</filename>\r
-                     <var ID="displayName">${oePerson.sent("persons_common","//displayName")}</var>\r
-                     <var ID="refName">urn:cspace:collectionspace.org:Personauthorities(${oePersonauthority.sent("personauthorities_common","//shortIdentifier")}):items(foobar)'${oePerson.sent("persons_common","//displayName")}'</var>\r
-                 </part>\r
+            <response>\r
+                <expected level="ADDOK" /><!--server adds the csid -->\r
+                <label>persons_common</label>\r
+                <filename>objectexit/res/oePersonDisplayGET.res.xml</filename>\r
+                <vars>\r
+                    <!-- TODO: .got is not namespace aware yet, so you must make the xpath work around it for now.-->\r
+                    <var ID="csidGot">${oePersonGET.got("//csid")}</var>                      \r
+                    <var ID="inAuthority">${oePersonauthority.CSID}</var>\r
+                       <var ID="displayName">${oePerson.sent("//displayName")}</var>\r
+                    <var ID="refName">urn:cspace:collectionspace.org:Personauthorities(${oePersonauthority.sent("//shortIdentifier")}):items(foobar)'${oePerson.sent("//displayName")}'</var>\r
+                </vars>\r
              </response>\r
-             -->\r
         </test>\r
     </testGroup>\r
 \r
index a1ef45c0c6d642651947a9cb3a9900619027d29d..c0b11cb42663df326be7c254ef79341f96c42f35 100644 (file)
             <method>GET</method>\r
             <uri>/cspace-services/objectexit/${oe1.CSID}</uri>\r
             <response>\r
-\r
                 <expected level="ADDOK" />\r
-                <!-- TODO: this is a bit funky right now (2011-03-31) because collectionspace_core adds things like createdAt, which are all part of the POX payload now -->\r
-\r
                 <filename>objectexit/res/oe2.res.xml</filename>\r
+                <label>objectexit_common</label>\r
+             </response>\r
+        </test>\r
+    </testGroup>\r
+    \r
+    <testGroup ID="testStartName" autoDeletePOSTS="false">\r
+         <test ID="oe1"  auth="test">\r
+             <method>POST</method>\r
+             <uri>/cspace-services/objectexit/</uri>\r
+             <filename>objectexit/oe1.xml</filename>\r
+         </test>\r
+        <test ID="oe2">\r
+            <method>GET</method>\r
+            <uri>/cspace-services/objectexit/${oe1.CSID}</uri>\r
+            <response>\r
+                <expected level="ADDOK" />\r
+                <filename>objectexit/res/oe2.res.xml</filename>\r
+                <!-- startElement wins over partName.  partName adorns the partName with /document/*[local-name()='$partName']  where $partName is the element value. -->\r
+                <startElement>/document/*[local-name()='objectexit_common']</startElement>\r
              </response>\r
         </test>\r
     </testGroup>\r
             <uri>/cspace-services/objectexit/${oe1.CSID}</uri>\r
             <response>\r
                 <expected level="TEXT" />\r
-                <part>\r
-                     <label>objectexit_common</label>\r
-                     <filename>objectexit/res/oe2.res.xml</filename>\r
-                 </part>\r
+                <label>objectexit_common</label>\r
+                <filename>objectexit/res/oe2.res.xml</filename>\r
              </response>\r
         </test>\r
     </testGroup>\r
             <method>GET</method>\r
             <uri>/cspace-services/objectexit/${oe1.CSID}</uri>\r
             <response>\r
-                <part>\r
-                     <label>objectexit_common</label>\r
-                     <filename>objectexit/res/oe2.res.xml</filename>\r
-                 </part>\r
+                <label>objectexit_common</label>\r
+                <filename>objectexit/res/oe2.res.xml</filename>\r
              </response>\r
         </test>\r
         <test ID="oe3">\r
diff --git a/services/IntegrationTests/src/test/resources/test-data/xmlreplay/objectexit/res/oePersonDisplayGET.res.xml b/services/IntegrationTests/src/test/resources/test-data/xmlreplay/objectexit/res/oePersonDisplayGET.res.xml
new file mode 100644 (file)
index 0000000..d87e87c
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document name="persons">
+  <ns2:persons_common xmlns:ns2="http://collectionspace.org/services/person" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <nationalities />
+    <shortDisplayName />
+    <schoolsOrStyles />
+    <groups />
+    <occupations />
+    <displayNameComputed>false</displayNameComputed>
+    <inAuthority>${inAuthority}</inAuthority>
+    <displayName>Finbar the DisplayName</displayName>
+  </ns2:persons_common>
+  <ns2:collectionspace_core xmlns:ns2="http://collectionspace.org/collectionspace_core/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <tenantId>1</tenantId>
+    <updatedAt>2011-04-23T23:02:16Z</updatedAt>
+    <createdAt>2011-04-23T23:02:16Z</createdAt>
+  </ns2:collectionspace_core>
+  <ns2:account_permission xmlns:ns2="http://collectionspace.org/services/authorization">
+    <account>
+      <accountId>6b296c92-bb90-42d8-a804-3ec87c5e21d6</accountId>
+      <userId>admin@collectionspace.org</userId>
+    </account>
+    <permission>
+      <permRelationshipId>70</permRelationshipId>
+      <permissionId>1aa2c5b8-ce60-412b-bb45-cadba34fab7d</permissionId>
+      <resourceName>/personauthorities/*/items/*/workflow/</resourceName>
+      <actionGroup>CRUDL</actionGroup>
+    </permission>
+    <permission>
+      <permRelationshipId>71</permRelationshipId>
+      <permissionId>a7f67d3d-ecee-41a5-9b8d-5a7f89345caa</permissionId>
+      <resourceName>persons</resourceName>
+      <actionGroup>CRUDL</actionGroup>
+    </permission>
+  </ns2:account_permission>
+</document>
+
index 831c48136b9525268bfa516abe61f2b5b5c2de37..b39bb270498b4e1ff155d92ca3bc06cd35100ce9 100755 (executable)
@@ -7,6 +7,50 @@
         <auth ID="bigbird2010">YmlnYmlyZDIwMTA6YmlnYmlyZDIwMTA=</auth>\r
         <auth ID="elmo2010">ZWxtbzIwMTA6ZWxtbzIwMTA=</auth>\r
     </auths>\r
+    \r
+    \r
+    <testGroup ID="deleteBug" autoDeletePOSTS="false">\r
+        <test ID="permElmo">\r
+            <method>POST</method>\r
+            <uri>/cspace-services/authorization/permissions</uri>\r
+            <filename>security/2-elmo-permission.xml</filename>\r
+        </test>\r
+        <test ID="elmoPermroles">\r
+            <method>POST</method>\r
+            <uri>/cspace-services/authorization/permissions/${permElmo.CSID}/permroles</uri>\r
+            <filename>security/10-permissionroles-elmo.xml</filename>\r
+        </test>\r
+        <test ID="accountElmo">\r
+            <method>POST</method>\r
+            <uri>/cspace-services/accounts</uri>\r
+            <filename>security/6-account-elmo.xml</filename>\r
+        </test>\r
+\r
+               <test ID="dimension1"  auth="admin@collectionspace.org">\r
+            <method>POST</method>\r
+            <uri>/cspace-services/dimensions/</uri>\r
+            <filename>dimension/1.xml</filename>\r
+        </test>\r
+               <test ID="dimensionElmoDELETE" auth="elmo2010">\r
+            <expectedCodes>403</expectedCodes>\r
+            <method>DELETE</method>\r
+            <fromTestID>dimension1</fromTestID>\r
+        </test>\r
+        <test ID="dimensionAdminDELETE" auth="admin@collectionspace.org">\r
+            <method>DELETE</method>\r
+            <fromTestID>dimension1</fromTestID>\r
+        </test>\r
+        <test ID="deleteElmoPermroles">\r
+            <method>DELETE</method>\r
+            <uri>/cspace-services/authorization/permissions/${permElmo.CSID}/permroles</uri>\r
+        </test>\r
+        <test ID="deleteAccountElmo">\r
+            <method>DELETE</method>\r
+            <fromTestID>accountElmo</fromTestID>\r
+        </test>\r
+    </testGroup>\r
+    \r
+    \r
     <testGroup ID="security" autoDeletePOSTS="false">\r
 \r
         <!--First test that bigbird2010 does NOT have write access: -->\r
             <expectedCodes>401,500,501</expectedCodes>\r
             <method>POST</method>\r
             <uri>/cspace-services/dimensions/</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/1.xml</filename>\r
-            </part>\r
+            <filename>dimension/1.xml</filename>\r
         </test>\r
 \r
         <!--Next, set up permissions and roles, and test bigbird2010 and elmo2010. -->\r
         <test ID="dimension1"  auth="bigbird2010">\r
             <method>POST</method>\r
             <uri>/cspace-services/dimensions/</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/1.xml</filename>\r
-            </part>\r
+            <filename>dimension/1.xml</filename>\r
         </test>\r
         <test ID="dimension2">\r
             <method>PUT</method>\r
             <uri>/cspace-services/dimensions/${dimension1.CSID}</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/2-put.xml</filename>\r
-            </part>\r
+            <filename>dimension/2-put.xml</filename>\r
         </test>\r
         <test>\r
             <method>GET</method>\r
             <expectedCodes>403</expectedCodes>\r
             <method>POST</method>\r
             <uri>/cspace-services/dimensions/</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/1.xml</filename>\r
-            </part>\r
+            <filename>dimension/1.xml</filename>\r
         </test>\r
         <test ID="dimensionElmoPUT">\r
             <expectedCodes>403</expectedCodes>\r
             <method>PUT</method>\r
             <uri>/cspace-services/dimensions/${dimension1.CSID}</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/2-put.xml</filename>\r
-            </part>\r
+            <filename>dimension/2-put.xml</filename>\r
         </test>\r
         <test ID="dimensionElmoGET">\r
             <method>GET</method>\r
         -->\r
 \r
 \r
-        <test auth="admin@collectionspace.org">\r
+        <test ID="dimensionBigBirdDELETEpermroles" auth="admin@collectionspace.org">\r
             <method>DELETE</method>\r
             <uri>/cspace-services/authorization/permissions/${permBigbird.CSID}/permroles</uri>\r
             <!-- don't do <fromTestID>, no CSID of permrole on end of url, but deleteURL will put one there for you, so don't use it.\r
             <expectedCodes>403,404</expectedCodes>\r
             <method>POST</method>\r
             <uri>/cspace-services/dimensions/</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/1.xml</filename>\r
-            </part>\r
+            <filename>dimension/1.xml</filename>\r
         </test>\r
         <test ID="dimensionBigbirdPUTAfterPermrolesDeleted">\r
             <expectedCodes>404</expectedCodes>\r
             <method>PUT</method>\r
             <uri>/cspace-services/dimensions/${dimension1.CSID}</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/2-put.xml</filename>\r
-            </part>\r
+            <filename>dimension/2-put.xml</filename>\r
         </test>\r
 \r
         \r
             <expectedCodes>401,403,500,501</expectedCodes>\r
             <method>POST</method>\r
             <uri>/cspace-services/dimensions/</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/1.xml</filename>\r
-            </part>\r
+            <filename>dimension/1.xml</filename>\r
         </test>\r
 \r
         <!--Next, set up permissions and roles, and test bigbird2010.-->\r
         <test ID="dimensionBigbird_POST"  auth="bigbird2010">\r
             <method>POST</method>\r
             <uri>/cspace-services/dimensions/</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/1.xml</filename>\r
-            </part>\r
+                       <filename>dimension/1.xml</filename>\r
         </test>\r
         <!-- TODO: FAILING, BUT SHOULD SUCCEED.  REMOVING TEST FOR NOW. -->\r
         <test ID="dimensionBigbird_PUT">\r
             <method>PUT</method>\r
             <uri>/cspace-services/dimensions/${dimensionBigbird_POST.CSID}</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/2-put.xml</filename>\r
-            </part>\r
+                       <filename>dimension/2-put.xml</filename>\r
         </test>\r
 \r
 \r
             <expectedCodes>403,404</expectedCodes>\r
             <method>POST</method>\r
             <uri>/cspace-services/dimensions/</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/1.xml</filename>\r
-            </part>\r
+                       <filename>dimension/1.xml</filename>\r
         </test>\r
         <test ID="dimensionBigbird_PUT_AfterPermrolesDeleted">\r
             <expectedCodes>403,404,405</expectedCodes><!-- Expected failure because dimensionBigbird_POST_AfterPermrolesDeleted failed.-->\r
             <method>PUT</method>\r
             <uri>/cspace-services/dimensions/${dimensionBigbird_POST_AfterPermrolesDeleted.CSID}</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/2-put.xml</filename>\r
-            </part>\r
+                       <filename>dimension/2-put.xml</filename>\r
         </test>\r
         <test ID="dimensionBigbird_GET_AfterPermrolesDeleted">\r
             <expectedCodes>403,404</expectedCodes>\r
         <test ID="dimensionBigbird_POST_CRU"  auth="bigbird2010">\r
             <method>POST</method>\r
             <uri>/cspace-services/dimensions/</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/1.xml</filename>\r
-            </part>\r
+                       <filename>dimension/1.xml</filename>\r
         </test>\r
         <test ID="dimensionBigbird_PUT_CRU">\r
             <method>PUT</method>\r
             <uri>/cspace-services/dimensions/${dimensionBigbird_POST_CRU.CSID}</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/2-put.xml</filename>\r
-            </part>\r
+                       <filename>dimension/2-put.xml</filename>\r
         </test>\r
         <test ID="dimensionBigbird_GET_CRU">\r
             <method>GET</method>\r
             <expectedCodes>403,404</expectedCodes>\r
             <method>POST</method>\r
             <uri>/cspace-services/dimensions/</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/1.xml</filename>\r
-            </part>\r
+                       <filename>dimension/1.xml</filename>\r
         </test>\r
         <test ID="dimensionBigbird_PUT_R">\r
             <expectedCodes>403,404,405</expectedCodes>\r
             <method>PUT</method>\r
             <uri>/cspace-services/dimensions/${dimensionBigbird_POST_R.CSID}</uri>\r
-            <part>\r
-                <label>dimensions_common</label>\r
-                <filename>dimension/2-put.xml</filename>\r
-            </part>\r
+                       <filename>dimension/2-put.xml</filename>\r
         </test>\r
         <test ID="dimensionBigbird_GET_R">\r
             <method>GET</method>\r
         </test>\r
         \r
         <!-- CLEANUP -->\r
+        \r
+        <test ID="deletePermrolesBigbird" auth="admin@collectionspace.org">\r
+            <msg>Deleting permroles from bigbird2010</msg>\r
+            <method>DELETE</method>\r
+            <uri>/cspace-services/authorization/permissions/${permBigbird.CSID}/permroles</uri>\r
+        </test>\r
         <test  auth="admin@collectionspace.org">\r
             <method>DELETE</method>\r
             <uri>/cspace-services/accounts/${accountBigbird.CSID}/accountroles</uri>\r
             <method>DELETE</method>\r
             <fromTestID>accountBigbird</fromTestID>\r
         </test>\r
+        \r
     </testGroup>\r
 \r
         <!-- proposed simplification for re-runs:\r
index 6ffe44bef6aeb6100fa8b944fc1c10d145c881fc..882a6be5d42bca9b38e34e2afdc224a76d563988 100755 (executable)
@@ -12,3 +12,4 @@ xmlns:ns3="http://collectionspace.org/services/hyperjaxb">
     <tenant_id>1</tenant_id>\r
   </tenants>\r
 </ns2:accounts_common>\r
+\r
index 8c8a790362522262df86dac248068ff7340b037f..8e5f0baf49f5d8c21ff243cc616a296ac1176924 100755 (executable)
@@ -2,14 +2,15 @@
 <xmlReplayMaster>\r
     <protoHostPort>http://localhost:8180</protoHostPort>\r
     \r
-    <!-- legal values for dumpServiceResult=[minimal,detailed,full] -->\r
-    <dump payloads="false" dumpServiceResult="minimal" />\r
+    <!-- legal values for dumpServiceResult=[minimal,detailed,full,auto] -->\r
+    <dump payloads="false" dumpServiceResult="auto" />\r
     \r
     <auths default="admin@collectionspace.org">\r
        <auth ID="admin@collectionspace.org">YWRtaW5AY29sbGVjdGlvbnNwYWNlLm9yZzpBZG1pbmlzdHJhdG9y</auth>\r
     </auths>\r
 \r
-    <!-- run controlFile="./xml-replay-self-test.xml" testGroup="selftestGroup" / -->\r
-\r
+    <!-- commenting out... I think this runs from test code anyway...  \r
+         <run controlFile="./xml-replay-self-test.xml" testGroup="selftestGroup" />\r
+    -->\r
 </xmlReplayMaster>\r
 \r
index 4eb55062539def2a63e519150fb31599b3db8ea4..6450c6520486466b33df4d243f73c9965953ee7b 100755 (executable)
@@ -2,8 +2,8 @@
 <xmlReplayMaster>\r
     <protoHostPort>http://localhost:8180</protoHostPort>\r
     \r
-    <!-- legal values for dumpServiceResult=[minimal,detailed,full] -->\r
-    <dump payloads="false" dumpServiceResult="minimal" />\r
+    <!-- legal values for dumpServiceResult=[minimal,detailed,full,auto] -->\r
+    <dump payloads="false" dumpServiceResult="auto" />\r
     \r
     <auths default="admin@collectionspace.org">\r
        <auth ID="admin@collectionspace.org">YWRtaW5AY29sbGVjdGlvbnNwYWNlLm9yZzpBZG1pbmlzdHJhdG9y</auth>\r
@@ -24,7 +24,6 @@
     <!-- run controlFile="objectexit/object-exit.xml" testGroup="CRUDL" / -->\r
     <!-- run controlFile="objectexit/object-exit.xml" testGroup="domwalk" / -->\r
     <!--<run controlFile="media/media.xml" testGroup="authrefs" />-->\r
-    <!--<run controlFile="acquisitions/acquisitions.xml" testGroup="testList" />-->\r
 \r
     <!--<run controlFile="./organization.xml" testGroup="organization" />-->\r
     \r
     <!--\r
     <run controlFile="relation/relation.xml" testGroup="makeRelations" />\r
     <run controlFile="person/person.xml" testGroup="updatePerson" />\r
-    -->\r
+   -->\r
+   \r
+    <run controlFile="./security.xml" testGroup="deleteBug" />\r
+    <run controlFile="objectexit/object-exit.xml" testGroup="makeone" />\r
+       <run controlFile="objectexit/object-exit-display.xml" testGroup="refNameDisplayNameOnly" />\r
+    <run controlFile="acquisitions/acquisitions.xml" testGroup="makeone" />\r
+    <run controlFile="acquisitions/acquisitions.xml" testGroup="testList" />\r
+    <run controlFile="relation/relation.xml" testGroup="makeRelations" />\r
     <run controlFile="relation/relation.xml" testGroup="r2only" />\r
     <run controlFile="person/person.xml" testGroup="postPerson" />\r
-   \r
+    <run controlFile="person/person.xml" testGroup="updatePerson" />\r
+        \r
+    \r
     \r
 </xmlReplayMaster>\r
 \r
index f2eb1fa5fbcdd6e067ebd395560e53109b03464a..4a405fffcde5f911b1c0b22a2db979cfeef483ae 100755 (executable)
@@ -62,6 +62,11 @@ public class Tools {
         return !notEmpty(str);\r
     }\r
 \r
+    /** nulls, empty strings, and empty after trim() are considered blank. */\r
+    public static boolean isBlank(String str){\r
+        return !notBlank(str);\r
+    }\r
+\r
     /** Handles null strings as empty.  */\r
     public static boolean notEmpty(String str){\r
         if (str==null) return false;\r