Package org.apache.xml.security.test.c14n.helper

Source Code of org.apache.xml.security.test.c14n.helper.AttrCompareTest

/*
* Copyright  1999-2004 The Apache Software Foundation.
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*
*/
package org.apache.xml.security.test.c14n.helper;



import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

import org.apache.xml.security.c14n.helper.AttrCompare;
import org.apache.xml.security.utils.Constants;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;


/**
* Unit test for {@link org.apache.xml.security.c14n.AttrCompare#compare}
*
* @author Christian Geuer-Pollmann
*/
public class AttrCompareTest extends TestCase {

   /**
    * Method suite
    *
    * @return
    */
   public static Test suite() {
      return new TestSuite(AttrCompareTest.class);
   }

   /**
    * Constructor AttrCompareTest
    *
    * @param Name_
    */
   public AttrCompareTest(String Name_) {
      super(Name_);
   }

   /**
    * Method main
    *
    * @param args
    */
   public static void main(String[] args) {

      String[] testCaseName = { "-noloading", AttrCompareTest.class.getName() };

      junit.textui.TestRunner.main(testCaseName);
   }

   /**
    * Method createAttr
    *
    * @param doc
    * @param QName
    * @param Value
    * @param NamespaceURI
    * @return
    */
   private static Attr createAttr(Document doc, String QName, String Value,
                                  String NamespaceURI) {

      Attr attr = null;

      if ((NamespaceURI != null) && (NamespaceURI.length() > 0)) {
         attr = doc.createAttributeNS(NamespaceURI, QName);
      } else {
         attr = doc.createAttributeNS(null, QName);
      }

      attr.appendChild(doc.createTextNode(Value));

      return attr;
   }

   /**
    * Method createDoc
    *
    * @param documentElement
    * @return
    * @throws ParserConfigurationException
    */
   private static Document createDoc(String documentElement)
           throws ParserConfigurationException {

      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder documentBuilder = dfactory.newDocumentBuilder();

      dfactory.setNamespaceAware(true);

      Document doc = documentBuilder.newDocument();
      Element root = doc.createElementNS(null, documentElement);

      doc.appendChild(root);

      return doc;
   }

   /**
    * Method testA1
    *
    * @throws ParserConfigurationException
    */
   public static void testA1() throws ParserConfigurationException {

      Document doc = createDoc("documentElement");
      Element root = doc.getDocumentElement();
      Attr attr0 = createAttr(doc, "xmlns", "http://default/", Constants.NamespaceSpecNS);
      Attr attr1 = createAttr(doc, "xmlns:b", "http://val1/", Constants.NamespaceSpecNS);

      root.setAttributeNode(attr0);
      root.setAttributeNode(attr1);

      NamedNodeMap nnm = root.getAttributes();

      assertEquals("nnm.getLength()", nnm.getLength(), 2);

      Attr attr00 = (Attr) nnm.item(0);
      Attr attr10 = (Attr) nnm.item(1);

      assertNotNull("Attribute attr00", attr00);
      assertNotNull("Attribute attr10", attr10);

      AttrCompare attrCompare = new AttrCompare();

      assertTrue(attr0 + " < " + attr1, attrCompare.compare(attr0, attr1) < 0);
      assertTrue(attr1 + " < " + attr0, attrCompare.compare(attr1, attr0) > 0);
   }

   public static void testA2() throws ParserConfigurationException {

      Document doc = createDoc("documentElement");
      Attr attr0 = doc.createAttributeNS(null, "foo");
      Attr attr1 = doc.createAttributeNS("http://goo", "goo:foo");

      System.out.println("Attr1: " + attr1 + " (" + attr1.getLocalName()  +")");


      AttrCompare attrCompare = new AttrCompare();

      assertTrue(attr0 + " < " + attr1, attrCompare.compare(attr0, attr1) < 0);
      assertTrue(attr1 + " < " + attr0, attrCompare.compare(attr1, attr0) > 0);

   }


   /**
    * Method testA2
    *
    * @throws ParserConfigurationException
    */
   public static void _testA2() throws ParserConfigurationException {

      Document doc = createDoc("documentElement");
      Element root = doc.getDocumentElement();
      Attr attr0 = createAttr(doc, "aAttr", "val0", null);
      Attr attr1 = createAttr(doc, "bAttr", "val1", null);

      root.setAttributeNode(attr0);
      root.setAttributeNode(attr1);

      NamedNodeMap nnm = root.getAttributes();

      assertEquals("nnm.getLength()", nnm.getLength(), 2);

      Attr attr00 = (Attr) nnm.item(0);
      Attr attr10 = (Attr) nnm.item(1);

      assertNotNull("Attribute attr00", attr00);
      assertNotNull("Attribute attr10", attr10);

      AttrCompare attrCompare = new AttrCompare();

      assertTrue(attr0 + " < " + attr1, attrCompare.compare(attr0, attr1) < 0);
      assertTrue(attr1 + " < " + attr0, attrCompare.compare(attr1, attr0) > 0);
   }

   /**
    * This test uses the attrs[] array to compare every attribute against
    * the others (and vice versa).
    *
    * The attribute values are taken from example 3.3 Start and End Tags
    * http://www.w3.org/TR/2001/REC-xml-c14n-20010315#Example-SETags
    *
    * @throws ParserConfigurationException
    */
   public static void testComplete() throws ParserConfigurationException {

      /* <e5 xmlns="http://example.org"
       *     xmlns:a="http://www.w3.org"
       *     xmlns:b="http://www.ietf.org"
       *     attr="I'm"
       *     attr2="all"
       *     b:attr="sorted"
       *     a:attr="out"></e5>
       */
      Document doc = createDoc("documentElement");
      Element root = doc.getDocumentElement();

      // This List has to be ordered to verify correctness of the comparison
      //J-
      Attr attrs[] = {
         createAttr(doc, "xmlns", "http://example.org", Constants.NamespaceSpecNS),
         createAttr(doc, "xmlns:a", "http://www.w3.org", Constants.NamespaceSpecNS),
         createAttr(doc, "xmlns:b", "http://www.ietf.org", Constants.NamespaceSpecNS),
         createAttr(doc, "attr", "I'm", null),
         createAttr(doc, "attr2", "all", null),
         createAttr(doc, "b:attr", "sorted", "http://www.ietf.org"),
         createAttr(doc, "a:attr", "out", "http://www.w3.org") };

      //J+
      for (int i = 0; i < attrs.length; i++) {
         root.setAttributeNode(attrs[i]);
      }

      NamedNodeMap nnm = root.getAttributes();

      assertEquals("nnm.getLength()", nnm.getLength(), attrs.length);

      for (int i = 0; i < attrs.length; i++) {
         Attr attr = attrs[i];

         assertNotNull("Attribute attr", attr);
      }

      AttrCompare attrCompare = new AttrCompare();

      for (int i = 0; i < attrs.length; i++) {
         for (int j = i + 1; j < attrs.length; j++) {
            Attr attr0 = attrs[i];
            Attr attr1 = attrs[j];
            assertTrue(attr0 + " < " + attr1, attrCompare.compare(attr0, attr1) < 0);
            assertTrue(attr1 + " < " + attr0, attrCompare.compare(attr1, attr0) > 0);
         }
      }
   }

   static {
      org.apache.xml.security.Init.init();
   }
}    //public class AttrCompareTest extends TestCase

TOP

Related Classes of org.apache.xml.security.test.c14n.helper.AttrCompareTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.