提交 bd2ccfb0 编写于 作者: O Oleg Nenashev 提交者: GitHub

Merge pull request #2835 from olivergondza/fixup-provision-perm

[FIXED JENKINS-37616] Make sure Cloud.PROVISION is properly initialized
......@@ -29,6 +29,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.EnvVars;
import hudson.Extension;
import hudson.Launcher.ProcStarter;
import hudson.slaves.Cloud;
import jenkins.util.SystemProperties;
import hudson.Util;
import hudson.cli.declarative.CLIMethod;
......@@ -1747,5 +1748,10 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces
public static final Permission CONNECT = new Permission(PERMISSIONS,"Connect", Messages._Computer_ConnectPermission_Description(), DISCONNECT, PermissionScope.COMPUTER);
public static final Permission BUILD = new Permission(PERMISSIONS, "Build", Messages._Computer_BuildPermission_Description(), Permission.WRITE, PermissionScope.COMPUTER);
// This permission was historically scoped to this class albeit declared in Cloud. While deserializing, Jenkins loads
// the scope class to make sure the permission is initialized and registered. since Cloud class is used rather seldom,
// it might appear the permission does not exist. Referencing the permission from here to make sure it gets loaded.
private static final @Deprecated Permission CLOUD_PROVISION = Cloud.PROVISION;
private static final Logger LOGGER = Logger.getLogger(Computer.class.getName());
}
......@@ -7,11 +7,17 @@ import hudson.security.Permission;
import hudson.security.SidACL;
import jenkins.model.Jenkins;
import org.acegisecurity.acls.sid.Sid;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.Issue;
import org.jvnet.hudson.test.JenkinsRule;
import org.jvnet.hudson.test.WithoutJenkins;
public class CloudTest {
@Test
@Rule public JenkinsRule j = new JenkinsRule();
@Test @WithoutJenkins @Issue("JENKINS-37616")
public void provisionPermissionShouldBeIndependentFromAdminister() throws Exception {
SidACL acl = new SidACL() {
@Override protected Boolean hasPermission(Sid p, Permission permission) {
......@@ -23,4 +29,11 @@ public class CloudTest {
assertFalse(acl.hasPermission(Jenkins.ANONYMOUS, Jenkins.ADMINISTER));
assertEquals(Cloud.PROVISION, Computer.PERMISSIONS.find("Provision"));
}
@Test @Issue("JENKINS-37616")
public void ensureProvisionPermissionIsLoadable() throws Exception {
// Name introduced by JENKINS-37616
Permission p = Permission.fromId("hudson.model.Computer.Provision");
assertEquals("Provision", p.name);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册