Package org.geoserver.security.web.group

Source Code of org.geoserver.security.web.group.EditGroupPageTest

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

import static org.junit.Assert.*;

import java.util.SortedSet;

import org.apache.wicket.util.tester.FormTester;
import org.geoserver.security.impl.GeoServerRole;
import org.geoserver.security.impl.GeoServerUserGroup;
import org.geoserver.security.web.AbstractSecurityPage;
import org.geoserver.security.web.AbstractSecurityWicketTestSupport;
import org.geoserver.security.web.SecurityNamedServiceEditPage;
import org.geoserver.security.web.role.NewRolePage;
import org.junit.Before;
import org.junit.Test;

public class EditGroupPageTest extends AbstractSecurityWicketTestSupport {

    EditGroupPage page;
   
    @Before
    public void init() throws Exception {
        doInitialize();
        clearServices();

        deactivateRORoleService();
        deactivateROUGService();
    }

    protected void doInitialize() throws Exception {
        initializeForXML();
    }

    @Test
    public void testFill() throws Exception{
        doTestFill();
    }

    protected void doTestFill() throws Exception {
        insertValues();       
       
        AbstractSecurityPage returnPage = initializeForUGServiceNamed(getUserGroupServiceName());
        tester.startPage(page=(EditGroupPage) new EditGroupPage(getUserGroupServiceName(),
                ugService.getGroupByGroupname("group1")).setReturnPage(returnPage));       
        tester.assertRenderedPage(EditGroupPage.class);
       
        tester.assertRenderedPage(EditGroupPage.class);
        assertFalse(tester.getComponentFromLastRenderedPage("form:groupname").isEnabled());
        assertTrue(tester.getComponentFromLastRenderedPage("form:enabled").isEnabled());
        assertTrue(tester.getComponentFromLastRenderedPage("form:roles").isEnabled());
        tester.assertVisible("form:save");

        tester.assertModelValue("form:groupname", "group1");
        tester.assertModelValue("form:enabled", Boolean.TRUE);
       
        FormTester form = tester.newFormTester("form");
        form.setValue("enabled", Boolean.FALSE);
       
       
                        // add a role on the fly
        form.submit("roles:addRole");
        tester.assertRenderedPage(NewRolePage.class);
        form=tester.newFormTester("form");               
        form.setValue("name", "ROLE_NEW");
        form.submit("save");
       
        // assign the new role to the new group
        form=tester.newFormTester("form");
        tester.assertRenderedPage(EditGroupPage.class);
        form.setValue("roles:palette:recorder", gaService.getRoleByName("ROLE_NEW").getAuthority());
       
        // reopen new role dialog again to ensure that the current state is not lost
        form.submit("roles:addRole");
        tester.assertRenderedPage(NewRolePage.class);
        tester.clickLink("form:cancel");
        tester.assertRenderedPage(EditGroupPage.class);
       
        // now save
        form=tester.newFormTester("form");
        form.submit("save");
       
        tester.assertRenderedPage(SecurityNamedServiceEditPage.class);
        tester.assertErrorMessages(new String[0]);
       
       
        GeoServerUserGroup group = ugService.getGroupByGroupname("group1");
        assertNotNull(group);
        assertFalse(group.isEnabled());
        SortedSet<GeoServerRole> roleList = gaService.getRolesForGroup("group1");
        assertEquals(1,roleList.size());
        assertEquals("ROLE_NEW",roleList.iterator().next().getAuthority());
               
    }
   
    @Test
    public void testReadOnlyUserGroupService() throws Exception {
        doTestReadOnlyUserGroupService();
    }

    protected void doTestReadOnlyUserGroupService() throws Exception {
        insertValues();
        activateROUGService();
        AbstractSecurityPage returnPage = initializeForUGServiceNamed(getROUserGroupServiceName());       
        tester.startPage(page=(EditGroupPage) new EditGroupPage(getROUserGroupServiceName(),
                ugService.getGroupByGroupname("group1")).setReturnPage(returnPage));
        tester.assertRenderedPage(EditGroupPage.class);
        assertFalse(tester.getComponentFromLastRenderedPage("form:groupname").isEnabled());
        assertFalse(tester.getComponentFromLastRenderedPage("form:enabled").isEnabled());
        assertTrue(tester.getComponentFromLastRenderedPage("form:roles").isEnabled());
        assertTrue(tester.getComponentFromLastRenderedPage("form:save").isEnabled());
       
        FormTester form=tester.newFormTester("form");
        form.setValue("roles:palette:recorder", gaService.getRoleByName("ROLE_WFS").getAuthority());
        form.submit("save");
        tester.assertRenderedPage(SecurityNamedServiceEditPage.class);
       
        SortedSet<GeoServerRole> roleList = gaService.getRolesForGroup("group1");
        assertEquals(1,roleList.size());
        assertEquals("ROLE_WFS",roleList.iterator().next().getAuthority());

    }
   
    @Test
    public void testReadOnlyRoleService() throws Exception {
        doTestReadOnlyRoleService();
    }

    protected void doTestReadOnlyRoleService() throws Exception {
        insertValues();
       
        activateRORoleService();
        AbstractSecurityPage returnPage = initializeForUGServiceNamed(getUserGroupServiceName());
        tester.startPage(page=(EditGroupPage) new EditGroupPage(getUserGroupServiceName(),
            ugService.getGroupByGroupname("group1")).setReturnPage(returnPage));
        tester.assertRenderedPage(EditGroupPage.class);
        assertFalse(tester.getComponentFromLastRenderedPage("form:groupname").isEnabled());
        assertTrue(tester.getComponentFromLastRenderedPage("form:enabled").isEnabled());
        assertFalse(tester.getComponentFromLastRenderedPage("form:roles").isEnabled());
        tester.assertVisible("form:save");
       
        FormTester form = tester.newFormTester("form");
        form.setValue("enabled", Boolean.FALSE);
        form.submit("save");
        tester.assertRenderedPage(SecurityNamedServiceEditPage.class);
       
        GeoServerUserGroup group = ugService.getGroupByGroupname("group1");
        assertNotNull(group);
        assertFalse(group.isEnabled());

    }
   
    @Test
    public void testAllServicesReadOnly() throws Exception {
        activateROUGService();
        activateRORoleService();
       
        AbstractSecurityPage returnPage = initializeForUGServiceNamed(getROUserGroupServiceName());
        tester.startPage(page=(EditGroupPage) new EditGroupPage(getROUserGroupServiceName(),
                ugService.getGroupByGroupname("group1")).setReturnPage(returnPage));
        tester.assertRenderedPage(EditGroupPage.class);
        assertFalse(tester.getComponentFromLastRenderedPage("form:groupname").isEnabled());
        assertFalse(tester.getComponentFromLastRenderedPage("form:enabled").isEnabled());
        assertFalse(tester.getComponentFromLastRenderedPage("form:roles").isEnabled());
        assertFalse(tester.getComponentFromLastRenderedPage("form:save").isEnabled());
    }



}
TOP

Related Classes of org.geoserver.security.web.group.EditGroupPageTest

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.