Skip to content

Commit 09b4a6c

Browse files
Raise default permissions of JUnit5JenkinsRule (#910)
Co-authored-by: strangelookingnerd <strangelookingnerd@users.noreply.github.com>
1 parent ab3a21a commit 09b4a6c

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

src/main/java/org/jvnet/hudson/test/junit/jupiter/JUnit5JenkinsRule.java

+5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import edu.umd.cs.findbugs.annotations.NonNull;
44
import java.lang.reflect.Method;
5+
6+
import hudson.security.ACL;
57
import org.junit.jupiter.api.extension.ExtensionContext;
68
import org.junit.jupiter.api.extension.ParameterContext;
79
import org.junit.runner.Description;
@@ -26,6 +28,9 @@ class JUnit5JenkinsRule extends JenkinsRule {
2628

2729
@Override
2830
public void recipe() throws Exception {
31+
// so that test code has all the access to the system
32+
ACL.as2(ACL.SYSTEM2);
33+
2934
JenkinsRecipe jenkinsRecipe =
3035
context.findAnnotation(JenkinsRecipe.class).orElse(null);
3136
if (jenkinsRecipe != null) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package org.jvnet.hudson.test;
2+
3+
import hudson.security.Permission;
4+
import org.junit.Assert;
5+
import org.junit.Rule;
6+
import org.junit.jupiter.api.Assertions;
7+
import org.jvnet.hudson.test.junit.jupiter.WithJenkins;
8+
9+
/**
10+
* Validates that JUnit4 and JUnit5 based {@link JenkinsRule} implementations have the same default authorization and permissions.
11+
*/
12+
@SuppressWarnings("deprecation")
13+
public class JenkinsRulePermissionTest {
14+
15+
@Rule
16+
public JenkinsRule junit4rule = new JenkinsRule();
17+
18+
@org.junit.Test
19+
public void junit4() {
20+
MockAuthorizationStrategy strategy = new MockAuthorizationStrategy();
21+
junit4rule.getInstance().setAuthorizationStrategy(strategy);
22+
23+
// basic permissions
24+
Assert.assertTrue(junit4rule.getInstance().getACL().hasPermission(Permission.READ));
25+
Assert.assertTrue(junit4rule.getInstance().getACL().hasPermission(Permission.WRITE));
26+
Assert.assertTrue(junit4rule.getInstance().getACL().hasPermission(Permission.CREATE));
27+
Assert.assertTrue(junit4rule.getInstance().getACL().hasPermission(Permission.UPDATE));
28+
Assert.assertTrue(junit4rule.getInstance().getACL().hasPermission(Permission.DELETE));
29+
Assert.assertTrue(junit4rule.getInstance().getACL().hasPermission(Permission.CONFIGURE));
30+
31+
// admin permissions
32+
Assert.assertTrue(junit4rule.getInstance().getACL().hasPermission(Permission.FULL_CONTROL));
33+
Assert.assertTrue(junit4rule.getInstance().getACL().hasPermission(Permission.HUDSON_ADMINISTER));
34+
}
35+
36+
@org.junit.jupiter.api.Test
37+
@WithJenkins
38+
void junit5(JenkinsRule junit5rule) {
39+
MockAuthorizationStrategy strategy = new MockAuthorizationStrategy();
40+
junit5rule.getInstance().setAuthorizationStrategy(strategy);
41+
42+
// basic permissions
43+
Assertions.assertTrue(junit5rule.getInstance().getACL().hasPermission(Permission.READ));
44+
Assertions.assertTrue(junit5rule.getInstance().getACL().hasPermission(Permission.WRITE));
45+
Assertions.assertTrue(junit5rule.getInstance().getACL().hasPermission(Permission.CREATE));
46+
Assertions.assertTrue(junit5rule.getInstance().getACL().hasPermission(Permission.UPDATE));
47+
Assertions.assertTrue(junit5rule.getInstance().getACL().hasPermission(Permission.DELETE));
48+
Assertions.assertTrue(junit5rule.getInstance().getACL().hasPermission(Permission.CONFIGURE));
49+
50+
// admin permissions
51+
Assertions.assertTrue(junit5rule.getInstance().getACL().hasPermission(Permission.FULL_CONTROL));
52+
Assertions.assertTrue(junit5rule.getInstance().getACL().hasPermission(Permission.HUDSON_ADMINISTER));
53+
}
54+
}

0 commit comments

Comments
 (0)