Package org.geotools.xacml.geoxacml.test

Source Code of org.geotools.xacml.geoxacml.test.XACMLTest

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2008, Open Source Geospatial Foundation (OSGeo)
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation;
*    version 2.1 of the License.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*/

package org.geotools.xacml.geoxacml.test;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Set;

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

import junit.framework.TestCase;

import org.geotools.xacml.geoxacml.config.GeoXACML;
import org.geotools.xacml.test.TestSupport;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import com.sun.xacml.ConfigurationStore;
import com.sun.xacml.PDP;
import com.sun.xacml.PDPConfig;
import com.sun.xacml.finder.PolicyFinder;
import com.sun.xacml.finder.PolicyFinderModule;
import com.sun.xacml.test.BasicGroupTest;
import com.sun.xacml.test.BasicTest;
import com.sun.xacml.test.Test;
import com.sun.xacml.test.TestPolicyFinderModule;

/**
* @author Christian Mueller
*
*         Tests for XACML
*
*/
public class XACMLTest extends TestCase {

    private PDP pdp;

    private TestPolicyFinderModule policyModule;

    private ArrayList<Test> tests;

    public XACMLTest() {
        super();

    }

    public XACMLTest(String arg0) {
        super(arg0);

    }

    @Override
    protected void setUp() throws Exception {
        GeoXACML.initialize();
        TestSupport.initOutputDir();
    }

    private void loadTests(String testFile) throws Exception {
        // load the test file
        Node root = getRootNode(testFile);

        // go through each of the top-level tests, and handle as appropriate
        NodeList children = root.getChildNodes();
        for (int i = 0; i < children.getLength(); i++) {
            Node child = children.item(i);
            String childName = child.getNodeName();

            if (childName.equals("group"))
                tests.add(BasicGroupTest.getInstance(child, pdp, policyModule));
            else if (childName.equals("test"))
                tests.add(BasicTest.getInstance(child, pdp, policyModule));
        }
    }

    private void configurePDP() throws Exception {
        // load the configuration

        System.setProperty(ConfigurationStore.PDP_CONFIG_PROPERTY, "target" + File.separator
                + "resources" + File.separator + "config.xml");
        ConfigurationStore cs = new ConfigurationStore();

        // use the default factories from the configuration
        cs.useDefaultFactories();

        // get the PDP configuration's policy finder modules...
        PDPConfig config = cs.getDefaultPDPConfig();
        PolicyFinder finder = config.getPolicyFinder();
        Set<PolicyFinderModule> policyModules = finder.getModules();

        // ...and add the module used by the tests
        policyModules.add(policyModule);
        finder.setModules(policyModules);

        // finally, setup the PDP
        pdp = new PDP(config);
    }

    /**
     * Private helper that parses the file and sets up the DOM tree.
     */
    private Node getRootNode(String configFile) throws Exception {
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();

        dbFactory.setIgnoringComments(true);
        dbFactory.setNamespaceAware(false);
        dbFactory.setValidating(false);

        DocumentBuilder db = dbFactory.newDocumentBuilder();
        Document doc = db.parse(new FileInputStream(configFile));
        Element root = doc.getDocumentElement();

        if (!root.getTagName().equals("tests"))
            throw new Exception("unknown document type: " + root.getTagName());

        return root;
    }

    public void testXACML() {
        // policyModule = new TestPolicyFinderModule();
        // tests = new ArrayList<Test>();
        //
        // try {
        // configurePDP();
        // loadTests("target"+File.separator+"resources"+File.separator+"tests2.xml");
        // } catch (Exception e) {
        // e.printStackTrace();
        // Assert.fail();
        // return;
        // }
        //           
        // Iterator<Test> it = tests.iterator();
        // int errorCount = 0;
        //   
        // System.out.println("STARTING TESTS at " + new Date());
        //   
        // while (it.hasNext()) {
        // Test test = it.next();
        // int error=
        // test.run("target"+File.separator+"resources"+File.separator+"xml"+File.separator);
        // if (error >0 ) {
        // System.out.println("FAILED: "+test.getName());
        // }
        // errorCount += error;
        // }
        //   
        // System.out.println("FINISHED TESTS at " + new Date());
        // System.out.println("Total Failed: " + errorCount);
        //
    }

}
TOP

Related Classes of org.geotools.xacml.geoxacml.test.XACMLTest

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.