Package org.geoserver.security.web.role

Source Code of org.geoserver.security.web.role.XMLRoleConfigDetailsPanelTest

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

import static org.junit.Assert.*;

import java.io.IOException;

import org.apache.wicket.Component;
import org.geoserver.security.GeoServerRoleService;
import org.geoserver.security.GeoServerSecurityManager;
import org.geoserver.security.config.SecurityRoleServiceConfig;
import org.geoserver.security.validation.SecurityConfigException;
import org.geoserver.security.web.AbstractSecurityNamedServicePanelTest;
import org.geoserver.security.web.AbstractSecurityPage;
import org.geoserver.security.web.SecurityNamedServiceEditPage;
import org.geoserver.security.web.SecurityNamedServiceNewPage;
import org.geoserver.security.web.UserGroupRoleServicesPage;
import org.geoserver.security.xml.XMLRoleService;
import org.geoserver.security.xml.XMLRoleServiceConfig;
import org.junit.Before;
import org.junit.Test;

public  class XMLRoleConfigDetailsPanelTest extends AbstractSecurityNamedServicePanelTest {

    @Override
    protected String getDetailsFormComponentId() {
        return "RoleTabbedPage:panel:namedConfig";
    }
   
    @Override
    protected AbstractSecurityPage getBasePage() {
        return new UserGroupRoleServicesPage();
    }

    @Override
    protected String getBasePanelId() {
        return "panel:panel:roleServices";
    }

    @Override
    protected Integer getTabIndex() {
        return 1;
    }

    @Override
    protected Class<? extends Component> getNamedServicesClass() {
        return RoleServicesPanel.class;
    }
   
    protected void setAdminRoleName(String roleName){
        formTester.setValue("panel:content:adminRoleName",roleName);       
    }
   
    protected String getAdminRoleName(){
        return formTester.getForm().get("details:config.adminRoleName").getDefaultModelObjectAsString();
    }
   
    protected void setFileName(String fileName){
        formTester.setValue("panel:content:fileName",fileName);       
    }
   
    protected String getFileName(){
        return formTester.getForm().get("details:config.fileName").getDefaultModelObjectAsString();
    }
   
    protected void setCheckInterval(Integer interval){
        formTester.setValue("panel:content:checkInterval",interval.toString());       
    }
   
    protected Integer getCheckInterval (){
        String temp= formTester.getForm().get("details:config.checkInterval").getDefaultModelObjectAsString();
        if (temp == null || temp.length()==0) return 0;
        return new Integer(temp);
    }

    protected void setValidating(Boolean flag){
        formTester.setValue("panel:content:validating",flag);       
    }
   
    protected Boolean getValidating(){
        String temp= formTester.getForm().get("details:config.validating").getDefaultModelObjectAsString();
        return Boolean.valueOf(temp);
    }

    @Before
    public void removeRoleService2() throws Exception {
        GeoServerSecurityManager secMgr = getSecurityManager();
        if (secMgr.listRoleServices().contains("default2")) {
            SecurityRoleServiceConfig roleService = secMgr.loadRoleServiceConfig("default2");
            secMgr.removeRoleService(roleService);
        }
    }

    @Test
    public void testAddModifyRemove() throws Exception{
        initializeForXML();
       
        activatePanel();
               
        assertEquals(2, countItmes());
        assertNotNull(getSecurityNamedServiceConfig("default"));
        assertNotNull(getSecurityNamedServiceConfig("test"));
        assertNull(getSecurityNamedServiceConfig("xxxxxxxx"));
       
        // Test simple add
        clickAddNew();

        tester.assertRenderedPage(SecurityNamedServiceNewPage.class);
        //detailsPage = (RoleTabbedPage) tester.getLastRenderedPage();
        newFormTester();
        setSecurityConfigClassName(XMLRoleServicePanelInfo.class);
        newFormTester();
        setSecurityConfigName("default2");                       
        setFileName("abc.xml");
        setCheckInterval(5000);
        setValidating(true);
        clickCancel();
       
        tester.assertRenderedPage(basePage.getClass());
        assertEquals(2, countItmes());
        assertNotNull(getSecurityNamedServiceConfig("default"));
       
        clickAddNew();
        newFormTester();
        setSecurityConfigClassName(XMLRoleServicePanelInfo.class);
        newFormTester();
        setSecurityConfigName("default2");       
        setFileName("abc.xml");
        setCheckInterval(5000);
        setValidating(true);
        tester.assertRenderedPage(SecurityNamedServiceNewPage.class);
        clickSave();
       
        tester.assertRenderedPage(basePage.getClass());
        assertEquals(3, countItmes());       
        assertNotNull(getSecurityNamedServiceConfig("default"));
       
        XMLRoleServiceConfig xmlConfig=
                (XMLRoleServiceConfig)
                getSecurityNamedServiceConfig("default2");
        assertNotNull(xmlConfig);
        assertEquals("default2",xmlConfig.getName());
        assertEquals(XMLRoleService.class.getName(),xmlConfig.getClassName());
        assertNull(xmlConfig.getAdminRoleName());
        assertEquals("abc.xml",xmlConfig.getFileName());
        assertEquals(5000,xmlConfig.getCheckInterval());
        assertEquals(true,xmlConfig.isValidating());
       
        // reload from manager
        xmlConfig=
                (XMLRoleServiceConfig)
                getSecurityManager().loadRoleServiceConfig("default2");
        assertNotNull(xmlConfig);
        assertEquals("default2",xmlConfig.getName());
        assertEquals(XMLRoleService.class.getName(),xmlConfig.getClassName());
        assertNull(xmlConfig.getAdminRoleName());
        assertEquals("abc.xml",xmlConfig.getFileName());
        assertEquals(5000,xmlConfig.getCheckInterval());
        assertEquals(true,xmlConfig.isValidating());
       
        // test add with name clash       
        clickAddNew();       
        //detailsPage = (RoleTabbedPage) tester.getLastRenderedPage();
        newFormTester();
        setSecurityConfigClassName(XMLRoleServicePanelInfo.class);
        newFormTester();
        setSecurityConfigName("default2");               
        clickSave(); // should not work
        tester.assertRenderedPage(SecurityNamedServiceNewPage.class);
        testErrorMessagesWithRegExp(".*default2.*");
        clickCancel();
        tester.assertRenderedPage(basePage.getClass());
        // end test add with name clash       
       
        // start test modify       
        clickNamedServiceConfig("default");
        tester.assertRenderedPage(SecurityNamedServiceEditPage.class);
        //detailsPage = (RoleTabbedPage) tester.getLastRenderedPage();
        newFormTester("panel:panel:panel:form");
        tester.debugComponentTrees();
        formTester.setValue("panel:adminRoleName", "ROLE_ADMINISTRATOR");

        //setFileName("abcd.xml");
        formTester.setValue("panel:checkInterval", "5001");
        //setCheckInterval(5001);
        formTester.setValue("panel:validating", true);
        //setValidating(true);
        clickCancel();
        tester.assertRenderedPage(basePage.getClass());

        xmlConfig=
                (XMLRoleServiceConfig)
                getSecurityNamedServiceConfig("default");       
        assertEquals(XMLRoleService.DEFAULT_LOCAL_ADMIN_ROLE,xmlConfig.getAdminRoleName());
        assertEquals(XMLRoleService.DEFAULT_LOCAL_GROUP_ADMIN_ROLE,xmlConfig.getGroupAdminRoleName());
        assertEquals("roles.xml",xmlConfig.getFileName());
        assertEquals(10000,xmlConfig.getCheckInterval());
        assertEquals(true,xmlConfig.isValidating());
               
       
        clickNamedServiceConfig("default2");
        //detailsPage = (RoleTabbedPage) tester.getLastRenderedPage();
        newFormTester("panel:panel:panel:form");
        formTester.setValue("panel:adminRoleName", null);

        //setFileName("abcd.xml");
        formTester.setValue("panel:checkInterval", "5001");
        //setCheckInterval(5001);
        formTester.setValue("panel:validating", false);
       
        clickSave();
        tester.assertRenderedPage(basePage.getClass());
       
        xmlConfig=
                (XMLRoleServiceConfig)
                getSecurityNamedServiceConfig("default2");
        assertNull(xmlConfig.getAdminRoleName());
        assertEquals("abc.xml",xmlConfig.getFileName());
        assertEquals(5001,xmlConfig.getCheckInterval());
        assertEquals(false,xmlConfig.isValidating());
       
        // reload from manager
        xmlConfig=(XMLRoleServiceConfig)
                getSecurityManager().loadRoleServiceConfig("default2");
        assertNull(xmlConfig.getAdminRoleName());
        assertEquals("abc.xml",xmlConfig.getFileName());
        assertEquals(5001,xmlConfig.getCheckInterval());
        assertEquals(false,xmlConfig.isValidating());
                       
        //doRemove("tabbedPanel:panel:removeSelected");
    }

    @Test
    public void testRemove() throws Exception {
        initializeForXML();
       
        XMLRoleServiceConfig config = new XMLRoleServiceConfig();
        config.setName("default2");
        config.setClassName(XMLRoleService.class.getCanonicalName());
        config.setFileName("foo.xml");
        getSecurityManager().saveRoleService(config);
        activatePanel();
       
        doRemove(null, "default2");
        assertNull(getSecurityManager().loadRoleService("default2"));
    }
}
TOP

Related Classes of org.geoserver.security.web.role.XMLRoleConfigDetailsPanelTest

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.