org.geoserver.security.web.AbstractConfirmRemovalPanelTest.java Source code

Java tutorial

Introduction

Here is the source code for org.geoserver.security.web.AbstractConfirmRemovalPanelTest.java

Source

/* (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.security.web;

import static org.junit.Assert.*;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;

import org.apache.wicket.markup.html.basic.MultiLineLabel;
import org.apache.wicket.markup.html.list.ListView;
import org.geoserver.data.test.SystemTestData;
import org.geoserver.security.config.SecurityManagerConfig;
import org.geoserver.web.FormTestPage;
import org.junit.Before;

public abstract class AbstractConfirmRemovalPanelTest<T> extends AbstractSecurityWicketTestSupport
        implements Serializable {
    private static final long serialVersionUID = 1L;

    protected abstract void setupPanel(List<T> roots);

    protected abstract T getRemoveableObject() throws Exception;

    protected abstract T getProblematicObject() throws Exception;

    protected abstract String getProblematicObjectRegExp() throws Exception;

    protected abstract String getRemoveableObjectRegExp() throws Exception;

    @Override
    protected void onSetUp(SystemTestData testData) throws Exception {
        super.onSetUp(testData);
        // disable url parameter encoding for these tests
        SecurityManagerConfig config = getSecurityManager().getSecurityConfig();
        config.setEncryptingUrlParams(false);
        getSecurityManager().saveSecurityConfig(config);
    }

    protected void removeObject() throws Exception {

        insertValues();

        T removeableObject = getRemoveableObject();
        assertNotNull(removeableObject);

        setupPanel(Collections.singletonList(removeableObject));

        tester.assertRenderedPage(FormTestPage.class);
        tester.assertNoErrorMessage();

        assertTrue(labelTextForRemovedObjects().matches(getRemoveableObjectRegExp()));

        tester.assertVisible("form:panel:removedObjects");
        tester.assertInvisible("form:panel:problematicObjects");

        T problematicObject = getProblematicObject();

        if (problematicObject != null) {

            setupPanel(Collections.singletonList(problematicObject));
            tester.assertRenderedPage(FormTestPage.class);
            tester.assertNoErrorMessage();

            assertTrue(labelTextForProblematicObjects().matches(getProblematicObjectRegExp()));

            tester.assertInvisible("form:panel:removedObjects");
            tester.assertVisible("form:panel:problematicObjects");
        }

        if (removeableObject != null && problematicObject != null) {
            List<T> objects = new ArrayList<T>();
            objects.add(removeableObject);
            objects.add(problematicObject);

            setupPanel(objects);
            tester.assertRenderedPage(FormTestPage.class);
            tester.assertNoErrorMessage();

            assertTrue(labelTextForRemovedObjects().matches(getRemoveableObjectRegExp()));
            assertTrue(labelTextForProblematicObjects().matches(getProblematicObjectRegExp()));

            tester.assertVisible("form:panel:removedObjects");
            tester.assertVisible("form:panel:problematicObjects");
        }
    }

    protected String labelTextForRemovedObjects() {
        ListView list = (ListView) tester
                .getComponentFromLastRenderedPage("form:panel:removedObjects:rulesRemoved:rules");

        return list.getDefaultModelObjectAsString();
    }

    protected String labelTextForProblematicObjects() {
        ListView list = (ListView) tester
                .getComponentFromLastRenderedPage("form:panel:problematicObjects:rulesNotRemoved:problems");
        return list.getDefaultModelObjectAsString();
    }

}