Package hudson.security

Source Code of hudson.security.ExtendedReadPermissionTest

package hudson.security;

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.html.HtmlButton;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import hudson.model.Item;
import org.jvnet.hudson.test.HudsonTestCase;
import org.jvnet.hudson.test.recipes.LocalData;

/**
*
* @author dty
*/
public class ExtendedReadPermissionTest extends HudsonTestCase {
    private boolean enabled;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        enabled = Item.EXTENDED_READ.getEnabled();
    }

    @Override
    protected void tearDown() throws Exception {
        Item.EXTENDED_READ.setEnabled(enabled);
        super.tearDown();
    }

    /**
     * alice: Job/Configure+Read
     * bob: Job/Read
     * charlie: Job/ExtendedRead+Read
     */

    private void setPermissionEnabled(boolean enabled) throws Exception {
        Item.EXTENDED_READ.setEnabled(enabled);
    }


    @LocalData
    public void testReadOnlyConfigAccessWithPermissionEnabled() throws Exception {
        setPermissionEnabled(true);

        AuthorizationStrategy as = hudson.getAuthorizationStrategy();
        assertTrue("Expecting GlobalMatrixAuthorizationStrategy", (as instanceof GlobalMatrixAuthorizationStrategy));
        GlobalMatrixAuthorizationStrategy gas = (GlobalMatrixAuthorizationStrategy)as;
        assertTrue("Charlie should have extended read for this test", gas.hasExplicitPermission("charlie",Item.EXTENDED_READ));

        WebClient wc = new WebClient().login("charlie","charlie");
        HtmlPage page = wc.goTo("job/a/configure");
        HtmlForm form = page.getFormByName("config");
        HtmlButton saveButton = getButtonByCaption(form,"Save");
        assertNull(saveButton);
    }

    @LocalData
    public void testReadOnlyConfigAccessWithPermissionDisabled() throws Exception {
        setPermissionEnabled(false);
       
        AuthorizationStrategy as = hudson.getAuthorizationStrategy();
        assertTrue("Expecting GlobalMatrixAuthorizationStrategy", (as instanceof GlobalMatrixAuthorizationStrategy));
        GlobalMatrixAuthorizationStrategy gas = (GlobalMatrixAuthorizationStrategy)as;
        assertFalse("Charlie should not have extended read for this test", gas.hasExplicitPermission("charlie",Item.EXTENDED_READ));

        WebClient wc = new WebClient().login("charlie","charlie");
        try {
            HtmlPage page = wc.goTo("job/a/configure");
        }
        catch (FailingHttpStatusCodeException e) {
            assertEquals(403,e.getStatusCode());
            return;
        }

        fail("Charlie should not have been able to access the configuration page");
    }

    @LocalData
    public void testNoConfigAccessWithPermissionEnabled() throws Exception {
        setPermissionEnabled(true);

        AuthorizationStrategy as = hudson.getAuthorizationStrategy();
        assertTrue("Expecting GlobalMatrixAuthorizationStrategy", (as instanceof GlobalMatrixAuthorizationStrategy));
        GlobalMatrixAuthorizationStrategy gas = (GlobalMatrixAuthorizationStrategy)as;
        assertFalse("Bob should not have extended read for this test", gas.hasExplicitPermission("bob",Item.EXTENDED_READ));

        WebClient wc = new WebClient().login("bob","bob");
        try {
            HtmlPage page = wc.goTo("job/a/configure");
        }
        catch (FailingHttpStatusCodeException e) {
            assertEquals(403,e.getStatusCode());
            return;
        }

        fail("Bob should not have been able to access the configuration page");
    }

/*
    @LocalData
    public void testConfigureLink() throws Exception {
       
    }

    @LocalData
    public void testViewConfigurationLink() throws Exception {

    }
   
    @LocalData
    public void testMatrixWithPermissionEnabled() throws Exception {
    }

    @LocalData
    public void testMatrixWithPermissionDisabled() throws Exception {
       
    }
*/
TOP

Related Classes of hudson.security.ExtendedReadPermissionTest

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.