https://issues.shibboleth.net/jira/browse/CPPOST-66
[shibboleth/cpp-opensaml.git] / samltest / internal.h
index a49c55f..e86823d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2006 Internet2
+ *  Copyright 2001-2010 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * limitations under the License.
  */
 
+#ifdef WIN32
+# define _CRT_SECURE_NO_DEPRECATE 1
+# define _CRT_NONSTDC_NO_DEPRECATE 1
+#endif
+
 #include <cxxtest/TestSuite.h>
 
-#include <fstream>
 #include <saml/exceptions.h>
-#include <saml/SAMLConfig.h>
 #include <saml/util/SAMLConstants.h>
-#include <xmltooling/exceptions.h>
-#include <xmltooling/validation/Validator.h>
+
+#include <fstream>
 #include <xmltooling/XMLObject.h>
 #include <xmltooling/XMLObjectBuilder.h>
+#include <xmltooling/XMLToolingConfig.h>
+#include <xmltooling/util/DateTime.h>
+#include <xmltooling/util/ParserPool.h>
+#include <xmltooling/validation/Validator.h>
 
-using namespace opensaml;
 using namespace xmltooling;
+using namespace xercesc;
 using namespace std;
 
 extern string data_path;
@@ -72,8 +79,16 @@ protected:
         }
     }
 
-    void assertEquals(const char* failMessage, DOMDocument* expectedDOM, XMLObject* xmlObject) {
-        DOMElement* generatedDOM = xmlObject->marshall();
+    void assertEquals(const char* failMessage, DOMDocument* expectedDOM, XMLObject* xmlObject, bool canMarshall=true) {
+        DOMElement* generatedDOM = xmlObject->getDOM();
+        if (!generatedDOM) {
+            if (!canMarshall) {
+                TSM_ASSERT("DOM not available", false);
+            }
+            else {
+                generatedDOM = xmlObject->marshall();
+            }
+        }
         if (!generatedDOM->isEqualNode(expectedDOM->getDocumentElement())) {
             string buf;
             XMLHelper::serialize(generatedDOM, buf);
@@ -85,19 +100,19 @@ protected:
         }
     }
 
-    void assertEquals(DOMDocument* expectedDOM, XMLObject* xmlObject) {
-        assertEquals("Marshalled DOM was not the same as the expected DOM", expectedDOM, xmlObject);
+    void assertEquals(DOMDocument* expectedDOM, XMLObject* xmlObject, bool canMarshall=true) {
+        assertEquals("Marshalled DOM was not the same as the expected DOM", expectedDOM, xmlObject, canMarshall);
         delete xmlObject;
     }
 
     void assertEquals(const char* failMessage, const XMLCh* expectedString, const XMLCh* testString) {
-        char* buf = NULL;
+        char* buf = nullptr;
         if (!XMLString::equals(expectedString, testString)) {
             buf = XMLString::transcode(testString);
-            TS_TRACE(buf);
+            TS_TRACE(buf ? buf : "(NULL)");
             XMLString::release(&buf);
             buf = XMLString::transcode(expectedString);
-            TS_TRACE(buf);
+            TS_TRACE(buf ? buf : "(NULL)");
             XMLString::release(&buf);
             TSM_ASSERT(failMessage, false);
         }
@@ -132,7 +147,7 @@ public:
 class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
 
     public:
-        SAMLObjectValidatorBaseTestCase() : target(NULL), targetQName(NULL), builder(NULL), validator(NULL) {}
+        SAMLObjectValidatorBaseTestCase() : target(nullptr), targetQName(nullptr), builder(nullptr), validator(nullptr) {}
 
         virtual ~SAMLObjectValidatorBaseTestCase() {
             delete validator;
@@ -143,7 +158,7 @@ class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
         XMLObject* target;
 
         /** QName of the object to be tested */
-        QName targetQName;
+        xmltooling::QName targetQName;
 
         /** Builder for XMLObjects of type targetQName */
         const XMLObjectBuilder* builder;
@@ -203,7 +218,7 @@ class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
                 validator->validate(validateTarget);
                 TS_TRACE(message);
                 TS_FAIL("Validation success, expected failure to raise ValidationException");
-            } catch (ValidationException &e) {
+            } catch (ValidationException&) {
             }
         }
 
@@ -213,11 +228,11 @@ class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
          * @param targetQName QName of the type of object to build
          * @returns new XMLObject of type targetQName
          */
-        XMLObject* buildXMLObject(QName &targetQName) {
+        XMLObject* buildXMLObject(xmltooling::QName &targetQName) {
             // Create the builder on the first request only, for efficiency
-            if (builder == NULL) {
+            if (builder == nullptr) {
                 builder = XMLObjectBuilder::getBuilder(targetQName);
-                TSM_ASSERT("Unable to retrieve builder for object QName: " + targetQName.toString(), builder!=NULL);
+                TSM_ASSERT("Unable to retrieve builder for object QName: " + targetQName.toString(), builder!=nullptr);
             }
             return builder->buildObject(targetQName.getNamespaceURI(), targetQName.getLocalPart(), targetQName.getPrefix());
 
@@ -230,16 +245,16 @@ class SAMLObjectValidatorBaseTestCase : virtual public SAMLObjectBaseTestCase {
 
             TSM_ASSERT("targetQName was empty", targetQName.hasLocalPart());
 
-            TSM_ASSERT("validator was null", validator!=NULL);
+            TSM_ASSERT("validator was null", validator!=nullptr);
 
             target = buildXMLObject(targetQName);
-            TSM_ASSERT("XMLObject target was NULL", target!=NULL);
+            TSM_ASSERT("XMLObject target was NULL", target!=nullptr);
             populateRequiredData();
         }
 
         void tearDown() {
             delete target;
-            target=NULL;
+            target=nullptr;
             SAMLObjectBaseTestCase::tearDown();
         }