Package org.geoserver.script.wfs

Source Code of org.geoserver.script.wfs.WfsTxHookTest

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.script.wfs;

import java.io.File;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;

import javax.script.ScriptEngine;

import org.apache.commons.io.FileUtils;
import org.geoserver.script.ScriptIntTestSupport;
import org.geoserver.wfs.WFSException;
import org.geoserver.wfs.request.TransactionRequest;
import org.geoserver.wfs.request.TransactionResponse;

public abstract class WfsTxHookTest extends ScriptIntTestSupport {

    public abstract String getExtension();

    File copyOverFile(String basename) throws Exception {
        File wfsTx = scriptMgr.getWfsTxRoot();
        File f = new File(wfsTx, basename + "." + getExtension());

        FileUtils.copyURLToFile(getClass().getResource(f.getName()), f);
        return f;
    }

    public void testLookupHook() throws Exception {
        File script = copyOverFile("tx");
        assertNotNull(scriptMgr.lookupWfsTxHook(script));
    }

    public void testHookExecution() throws Exception {
        File script = copyOverFile("tx");
        TransactionRequest tx = new TransactionRequest.WFS11(null);
        TransactionResponse res = new TransactionResponse.WFS11(null);

        Map context = new HashMap();

        ScriptEngine eng = scriptMgr.createNewEngine(script);
        eng.eval(new FileReader(script));

        WfsTxHook hook = getScriptManager().lookupWfsTxHook(script);
        hook.handleBefore(eng, tx, context);
        hook.handlePreInsert(eng, null, tx, context);
        hook.handlePostInsert(eng, null, tx, context);
        hook.handlePreUpdate(eng, null, null, tx, context);
        hook.handlePostUpdate(eng, null, null, tx, context);
        hook.handlePreDelete(eng, null, tx, context);
        hook.handlePostDelete(eng, null, tx, context);
        hook.handlePreCommit(eng, tx, context);
        hook.handlePostCommit(eng, tx, res, context);
        hook.handleAbort(eng, tx, res, context);

        assertTrue(context.containsKey("before"));
        assertTrue(context.containsKey("preInsert"));
        assertTrue(context.containsKey("postInsert"));
        assertTrue(context.containsKey("preUpdate"));
        assertTrue(context.containsKey("postUpdate"));
        assertTrue(context.containsKey("preDelete"));
        assertTrue(context.containsKey("postDelete"));
        assertTrue(context.containsKey("preCommit"));
        assertTrue(context.containsKey("postCommit"));
        assertTrue(context.containsKey("abort"));
    }

    public void testHookError() throws Exception {
        File script = copyOverFile("tx-error");
       
        TransactionRequest tx = new TransactionRequest.WFS11(null);
        TransactionResponse res = new TransactionResponse.WFS11(null);

        Map context = new HashMap();

        ScriptEngine eng = scriptMgr.createNewEngine(script);
        eng.eval(new FileReader(script));

        WfsTxHook hook = getScriptManager().lookupWfsTxHook(script);
        try {
            hook.handleBefore(eng, tx, context);
            fail("exected WFS exception");
        }
        catch(WFSException e) {
            assertEquals("before exception", e.getMessage());
        }
    }
}
TOP

Related Classes of org.geoserver.script.wfs.WfsTxHookTest

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.