diff --git a/pom.xml b/pom.xml index ab06dc4b..d2c634be 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.jenkins-ci.plugins plugin - 5.18 + 5.22 matrix-auth ${revision}${changelist} @@ -32,6 +32,7 @@ 2.479 ${jenkins.baseline}.3 false + true diff --git a/src/test/java/com/cloudbees/hudson/plugins/folder/properties/AuthorizationMatrixPropertyTest.java b/src/test/java/com/cloudbees/hudson/plugins/folder/properties/AuthorizationMatrixPropertyTest.java index b462df87..8e2d412e 100644 --- a/src/test/java/com/cloudbees/hudson/plugins/folder/properties/AuthorizationMatrixPropertyTest.java +++ b/src/test/java/com/cloudbees/hudson/plugins/folder/properties/AuthorizationMatrixPropertyTest.java @@ -24,7 +24,7 @@ package com.cloudbees.hudson.plugins.folder.properties; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; import com.cloudbees.hudson.plugins.folder.Folder; import hudson.model.FreeStyleProject; @@ -44,49 +44,53 @@ import org.jenkinsci.plugins.matrixauth.PermissionEntry; import org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy; import org.jenkinsci.plugins.matrixauth.inheritance.NonInheritingStrategy; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.JenkinsRule; -import org.jvnet.hudson.test.LoggerRule; +import org.jvnet.hudson.test.LogRecorder; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; -public class AuthorizationMatrixPropertyTest { +@WithJenkins +class AuthorizationMatrixPropertyTest { - @Rule - public JenkinsRule r = new JenkinsRule(); + private final LogRecorder l = new LogRecorder(); - @Rule - public LoggerRule l = new LoggerRule(); + private JenkinsRule j; + + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } @Test - public void ensureCreatorHasPermissions() throws Exception { + void ensureCreatorHasPermissions() throws Exception { HudsonPrivateSecurityRealm realm = new HudsonPrivateSecurityRealm(false, false, null); realm.createAccount("alice", "alice"); realm.createAccount("bob", "bob"); - r.jenkins.setSecurityRealm(realm); + j.jenkins.setSecurityRealm(realm); ProjectMatrixAuthorizationStrategy authorizationStrategy = new ProjectMatrixAuthorizationStrategy(); authorizationStrategy.add(Item.CREATE, PermissionEntry.user("alice")); authorizationStrategy.add(Jenkins.READ, PermissionEntry.user("alice")); - r.jenkins.setAuthorizationStrategy(authorizationStrategy); + j.jenkins.setAuthorizationStrategy(authorizationStrategy); Folder job; try (ACLContext ignored = ACL.as(User.get("alice", false, Collections.emptyMap()))) { - job = r.createProject(Folder.class); + job = j.createProject(Folder.class); } - Assert.assertNotNull(job.getProperties().get(AuthorizationMatrixProperty.class)); - Assert.assertTrue(job.getACL() + assertNotNull(job.getProperties().get(AuthorizationMatrixProperty.class)); + assertTrue(job.getACL() .hasPermission2( Objects.requireNonNull(User.get("alice", false, Collections.emptyMap())) .impersonate2(), Item.READ)); - Assert.assertFalse(job.getACL() + assertFalse(job.getACL() .hasPermission2( Objects.requireNonNull(User.get("bob", false, Collections.emptyMap())) .impersonate2(), Item.READ)); - Assert.assertTrue(job.getACL() + assertTrue(job.getACL() .hasPermission2( Objects.requireNonNull(User.get("alice", false, Collections.emptyMap())) .impersonate2(), @@ -94,20 +98,20 @@ public void ensureCreatorHasPermissions() throws Exception { } @Test - public void basics1() throws Exception { + void basics1() throws Exception { HudsonPrivateSecurityRealm realm = new HudsonPrivateSecurityRealm(false, false, null); realm.createAccount("alice", "alice"); realm.createAccount("bob", "bob"); - r.jenkins.setSecurityRealm(realm); + j.jenkins.setSecurityRealm(realm); ProjectMatrixAuthorizationStrategy as = new ProjectMatrixAuthorizationStrategy(); - r.jenkins.setAuthorizationStrategy(as); + j.jenkins.setAuthorizationStrategy(as); as.add(Hudson.READ, PermissionEntry.group("authenticated")); - Folder f = r.jenkins.createProject(Folder.class, "d"); + Folder f = j.jenkins.createProject(Folder.class, "d"); AuthorizationMatrixProperty amp = new AuthorizationMatrixProperty(); - assertTrue(amp.getInheritanceStrategy() instanceof InheritParentStrategy); + assertInstanceOf(InheritParentStrategy.class, amp.getInheritanceStrategy()); amp.add(Item.READ, PermissionEntry.user("alice")); amp.add(Item.BUILD, PermissionEntry.user("alice")); @@ -115,44 +119,38 @@ public void basics1() throws Exception { final FreeStyleProject foo = f.createProject(FreeStyleProject.class, "foo"); - JenkinsRule.WebClient wc = r.createWebClient().login("bob"); - try { - wc.getPage(foo); - fail(); - } catch (FailingHttpStatusCodeException e) { - assertEquals(404, e.getStatusCode()); - } + FailingHttpStatusCodeException e = assertThrows( + FailingHttpStatusCodeException.class, + () -> j.createWebClient().login("bob").getPage(foo)); + assertEquals(404, e.getStatusCode()); - wc = r.createWebClient().login("alice"); + JenkinsRule.WebClient wc = j.createWebClient().login("alice"); wc.getPage(foo); // this should succeed // and build permission should be set, too wc.executeOnServer(() -> { foo.checkPermission(Item.BUILD); - try { - foo.checkPermission(Item.DELETE); - fail("access should be denied"); - } catch (RuntimeException x) { - assertEquals( - hudson.security.Messages.AccessDeniedException2_MissingPermission("alice", "Job/Delete"), - x.getMessage()); - } + RuntimeException x = assertThrows( + RuntimeException.class, () -> foo.checkPermission(Item.DELETE), "access should be denied"); + assertEquals( + hudson.security.Messages.AccessDeniedException2_MissingPermission("alice", "Job/Delete"), + x.getMessage()); return null; }); } @Test - public void disabling_permission_inheritance_removes_global_permissions() throws Exception { + void disabling_permission_inheritance_removes_global_permissions() throws Exception { HudsonPrivateSecurityRealm realm = new HudsonPrivateSecurityRealm(false, false, null); realm.createAccount("alice", "alice"); realm.createAccount("bob", "bob"); - r.jenkins.setSecurityRealm(realm); + j.jenkins.setSecurityRealm(realm); ProjectMatrixAuthorizationStrategy as = new ProjectMatrixAuthorizationStrategy(); - r.jenkins.setAuthorizationStrategy(as); + j.jenkins.setAuthorizationStrategy(as); as.add(Hudson.READ, PermissionEntry.group("authenticated")); - Folder f = r.jenkins.createProject(Folder.class, "d"); + Folder f = j.jenkins.createProject(Folder.class, "d"); AuthorizationMatrixProperty amp = new AuthorizationMatrixProperty(); amp.setInheritanceStrategy(new NonInheritingStrategy()); amp.add(Item.READ, PermissionEntry.user("alice")); @@ -160,20 +158,17 @@ public void disabling_permission_inheritance_removes_global_permissions() throws final FreeStyleProject foo = f.createProject(FreeStyleProject.class, "foo"); - JenkinsRule.WebClient wc = r.createWebClient().login("bob"); - try { - wc.getPage(foo); - fail(); - } catch (FailingHttpStatusCodeException e) { - assertEquals(404, e.getStatusCode()); - } + FailingHttpStatusCodeException e = assertThrows( + FailingHttpStatusCodeException.class, + () -> j.createWebClient().login("bob").getPage(foo)); + assertEquals(404, e.getStatusCode()); - wc = r.createWebClient().login("alice"); + JenkinsRule.WebClient wc = j.createWebClient().login("alice"); wc.getPage(foo); // this should succeed } @Test - public void inapplicablePermissionIsSkipped() { + void inapplicablePermissionIsSkipped() { AuthorizationMatrixProperty property = new AuthorizationMatrixProperty(); l.record(AuthorizationContainer.class, Level.WARNING).capture(5); property.add("hudson.model.Hudson.Administer:alice"); @@ -184,7 +179,7 @@ public void inapplicablePermissionIsSkipped() { } @Test - public void inapplicablePermissionIsSkipped2() { + void inapplicablePermissionIsSkipped2() { AuthorizationMatrixProperty property = new AuthorizationMatrixProperty(); l.record(AuthorizationContainer.class, Level.WARNING).capture(5); property.add("USER:hudson.model.Hudson.Administer:alice"); diff --git a/src/test/java/com/cloudbees/hudson/plugins/folder/properties/IdStrategyTest.java b/src/test/java/com/cloudbees/hudson/plugins/folder/properties/IdStrategyTest.java index 9ac153ba..d3db4615 100644 --- a/src/test/java/com/cloudbees/hudson/plugins/folder/properties/IdStrategyTest.java +++ b/src/test/java/com/cloudbees/hudson/plugins/folder/properties/IdStrategyTest.java @@ -1,7 +1,8 @@ package com.cloudbees.hudson.plugins.folder.properties; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.fail; import hudson.model.FreeStyleProject; import hudson.model.Hudson; @@ -10,15 +11,22 @@ import hudson.security.ProjectMatrixAuthorizationStrategy; import jenkins.model.IdStrategy; import org.htmlunit.FailingHttpStatusCodeException; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; + +@WithJenkins +class IdStrategyTest { -public class IdStrategyTest { private static final IdStrategy.CaseSensitive CASE_SENSITIVE = new IdStrategy.CaseSensitive(); - @Rule - public JenkinsRule r = new JenkinsRule(); + private JenkinsRule j; + + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } private static class CaseInsensitiveSecurityRealm extends HudsonPrivateSecurityRealm { CaseInsensitiveSecurityRealm() { @@ -53,20 +61,20 @@ public IdStrategy getGroupIdStrategy() { } @Test - public void insensitive() throws Exception { + void insensitive() throws Exception { HudsonPrivateSecurityRealm realm = new CaseInsensitiveSecurityRealm(); realm.createAccount("alice", "alice"); - r.jenkins.setSecurityRealm(realm); + j.jenkins.setSecurityRealm(realm); ProjectMatrixAuthorizationStrategy as = new ProjectMatrixAuthorizationStrategy(); - r.jenkins.setAuthorizationStrategy(as); + j.jenkins.setAuthorizationStrategy(as); as.add(Hudson.READ, "authenticated"); as.add(Item.READ, "alicE"); as.add(Item.BUILD, "aLice"); - final FreeStyleProject foo = r.createProject(FreeStyleProject.class, "foo"); + final FreeStyleProject foo = j.createProject(FreeStyleProject.class, "foo"); - JenkinsRule.WebClient wc = r.createWebClient().login("alice"); + JenkinsRule.WebClient wc = j.createWebClient().login("alice"); wc.getPage(foo); // this should succeed // and build permission should be set, too @@ -83,15 +91,12 @@ public void insensitive() throws Exception { return null; }); - try { - r.createWebClient().login("AliCe"); - fail(); - } catch (FailingHttpStatusCodeException e) { - assertEquals(401, e.getStatusCode()); - } + FailingHttpStatusCodeException e = assertThrows( + FailingHttpStatusCodeException.class, () -> j.createWebClient().login("AliCe")); + assertEquals(401, e.getStatusCode()); // now logging with the username case incorrect should still authenticate as the password is a match - wc = r.createWebClient().login("AliCe", "alice"); + wc = j.createWebClient().login("AliCe", "alice"); wc.getPage(foo); // this should succeed // and build permission should be set, too @@ -110,40 +115,34 @@ public void insensitive() throws Exception { } @Test - public void sensitive() throws Exception { + void sensitive() throws Exception { HudsonPrivateSecurityRealm realm = new CaseSensitiveSecurityRealm(); realm.createAccount("alice", "alice"); - r.jenkins.setSecurityRealm(realm); + j.jenkins.setSecurityRealm(realm); ProjectMatrixAuthorizationStrategy as = new ProjectMatrixAuthorizationStrategy(); - r.jenkins.setAuthorizationStrategy(as); + j.jenkins.setAuthorizationStrategy(as); as.add(Hudson.READ, "authenticated"); as.add(Item.READ, "alice"); as.add(Item.BUILD, "alice"); - final FreeStyleProject foo = r.createProject(FreeStyleProject.class, "foo"); - JenkinsRule.WebClient wc = r.createWebClient().login("alice", "alice"); + final FreeStyleProject foo = j.createProject(FreeStyleProject.class, "foo"); + JenkinsRule.WebClient wc = j.createWebClient().login("alice", "alice"); wc.getPage(foo); // this should succeed // and build permission should be set, too wc.executeOnServer(() -> { foo.checkPermission(Item.BUILD); - try { - foo.checkPermission(Item.DELETE); - fail("access should be denied"); - } catch (RuntimeException x) { - assertEquals( - hudson.security.Messages.AccessDeniedException2_MissingPermission("alice", "Job/Delete"), - x.getMessage()); - } + RuntimeException x = assertThrows( + RuntimeException.class, () -> foo.checkPermission(Item.DELETE), "access should be denied"); + assertEquals( + hudson.security.Messages.AccessDeniedException2_MissingPermission("alice", "Job/Delete"), + x.getMessage()); return null; }); - try { - r.createWebClient().login("Alice", "alice"); - fail(); - } catch (FailingHttpStatusCodeException e) { - assertEquals(401, e.getStatusCode()); - } + FailingHttpStatusCodeException e = assertThrows( + FailingHttpStatusCodeException.class, () -> j.createWebClient().login("Alice", "alice")); + assertEquals(401, e.getStatusCode()); } } diff --git a/src/test/java/hudson/security/AuthorizationMatrixPropertyTest.java b/src/test/java/hudson/security/AuthorizationMatrixPropertyTest.java index 9b4df5d4..cb4a709e 100644 --- a/src/test/java/hudson/security/AuthorizationMatrixPropertyTest.java +++ b/src/test/java/hudson/security/AuthorizationMatrixPropertyTest.java @@ -1,5 +1,9 @@ package hudson.security; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertTrue; + import hudson.model.Item; import hudson.scm.SCM; import java.util.Collections; @@ -13,23 +17,27 @@ import org.jenkinsci.plugins.workflow.cps.SnippetizerTester; import org.jenkinsci.plugins.workflow.job.WorkflowJob; import org.jenkinsci.plugins.workflow.multibranch.JobPropertyStep; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.Issue; import org.jvnet.hudson.test.JenkinsRule; -import org.jvnet.hudson.test.LoggerRule; +import org.jvnet.hudson.test.LogRecorder; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; + +@WithJenkins +class AuthorizationMatrixPropertyTest { -public class AuthorizationMatrixPropertyTest { + private final LogRecorder l = new LogRecorder(); - @Rule - public JenkinsRule j = new JenkinsRule(); + private JenkinsRule j; - @Rule - public LoggerRule l = new LoggerRule(); + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } @Test - public void testSnippetizer() throws Exception { + void testSnippetizer() throws Exception { AuthorizationMatrixProperty property = new AuthorizationMatrixProperty(Collections.emptyMap(), new InheritParentStrategy()); property.add(Item.CONFIGURE, "alice"); @@ -44,7 +52,7 @@ public void testSnippetizer() throws Exception { } @Test - public void testSnippetizer2() throws Exception { + void testSnippetizer2() throws Exception { AuthorizationMatrixProperty property = new AuthorizationMatrixProperty(Collections.emptyMap(), new InheritParentStrategy()); property.add(Item.CONFIGURE, PermissionEntry.user("alice")); @@ -60,7 +68,7 @@ public void testSnippetizer2() throws Exception { @Test @Issue("JENKINS-46944") - public void testSnippetizerInapplicablePermission() throws Exception { + void testSnippetizerInapplicablePermission() throws Exception { AuthorizationMatrixProperty property = new AuthorizationMatrixProperty(Collections.emptyMap(), new InheritParentStrategy()); l.record(AuthorizationContainer.class, Level.WARNING).capture(3); @@ -79,18 +87,18 @@ public void testSnippetizerInapplicablePermission() throws Exception { new JobPropertyStep(Collections.singletonList(property)), "properties([authorizationMatrix(entries: [userOrGroup(name: 'alice', permissions: ['Job/Configure', 'Job/Read']), userOrGroup(name: 'bob', permissions: ['Job/Read', 'SCM/Tag'])], inheritanceStrategy: nonInheriting())])"); - Assert.assertTrue(l.getMessages().stream() + assertTrue(l.getMessages().stream() .anyMatch(m -> m.contains("Tried to add inapplicable permission") && m.contains("Hudson,Read") && m.contains("carol"))); - Assert.assertTrue(l.getMessages().stream() + assertTrue(l.getMessages().stream() .anyMatch(m -> m.contains("Tried to add inapplicable permission") && m.contains("Hudson,Administer") && m.contains("dave"))); } @Test - public void testPipelineReconfiguration() throws Exception { + void testPipelineReconfiguration() throws Exception { HudsonPrivateSecurityRealm realm = new HudsonPrivateSecurityRealm(true, false, null); realm.createAccount("alice", "alice"); @@ -129,10 +137,10 @@ public void testPipelineReconfiguration() throws Exception { // let's look ast the property AuthorizationMatrixProperty property = project.getProperty(AuthorizationMatrixProperty.class); - Assert.assertTrue(property.getInheritanceStrategy() instanceof NonInheritingStrategy); - Assert.assertEquals(0, property.getGrantedPermissions().size()); // Unambiguous permissions are 0 - Assert.assertEquals(3, property.getGrantedPermissionEntries().size()); - Assert.assertEquals(0, property.getGroups().size()); + assertInstanceOf(NonInheritingStrategy.class, property.getInheritanceStrategy()); + assertEquals(0, property.getGrantedPermissions().size()); // Unambiguous permissions are 0 + assertEquals(3, property.getGrantedPermissionEntries().size()); + assertEquals(0, property.getGroups().size()); // now bob has access, including configure j.createWebClient().login("bob").goTo(project.getUrl()); @@ -143,7 +151,7 @@ public void testPipelineReconfiguration() throws Exception { } @Test - public void testPipelineReconfiguration2() throws Exception { + void testPipelineReconfiguration2() throws Exception { HudsonPrivateSecurityRealm realm = new HudsonPrivateSecurityRealm(true, false, null); realm.createAccount("alice", "alice"); @@ -182,10 +190,10 @@ public void testPipelineReconfiguration2() throws Exception { // let's look ast the property AuthorizationMatrixProperty property = project.getProperty(AuthorizationMatrixProperty.class); - Assert.assertTrue(property.getInheritanceStrategy() instanceof NonInheritingStrategy); - Assert.assertEquals(0, property.getGrantedPermissions().size()); // typed entries are not listed here - Assert.assertEquals(3, property.getGrantedPermissionEntries().size()); - Assert.assertEquals(0, property.getGroups().size()); + assertInstanceOf(NonInheritingStrategy.class, property.getInheritanceStrategy()); + assertEquals(0, property.getGrantedPermissions().size()); // typed entries are not listed here + assertEquals(3, property.getGrantedPermissionEntries().size()); + assertEquals(0, property.getGroups().size()); // now bob has access, including configure j.createWebClient().login("bob").goTo(project.getUrl()); diff --git a/src/test/java/hudson/security/ProjectMatrixAuthorizationStrategyTest.java b/src/test/java/hudson/security/ProjectMatrixAuthorizationStrategyTest.java index aec0ef9c..95364060 100644 --- a/src/test/java/hudson/security/ProjectMatrixAuthorizationStrategyTest.java +++ b/src/test/java/hudson/security/ProjectMatrixAuthorizationStrategyTest.java @@ -2,6 +2,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.junit.jupiter.api.Assertions.*; import com.cloudbees.hudson.plugins.folder.Folder; import hudson.model.FreeStyleProject; @@ -15,6 +16,7 @@ import java.util.Optional; import java.util.Set; import jenkins.model.Jenkins; +import org.htmlunit.FailingHttpStatusCodeException; import org.htmlunit.html.HtmlElement; import org.htmlunit.html.HtmlForm; import org.htmlunit.html.HtmlOption; @@ -22,49 +24,54 @@ import org.jenkinsci.plugins.matrixauth.PermissionEntry; import org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy; import org.jenkinsci.plugins.matrixauth.inheritance.NonInheritingStrategy; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.Issue; import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; import org.jvnet.hudson.test.recipes.LocalData; import org.springframework.security.core.Authentication; -public class ProjectMatrixAuthorizationStrategyTest { +@WithJenkins +class ProjectMatrixAuthorizationStrategyTest { - @Rule - public JenkinsRule r = new JenkinsRule(); + private JenkinsRule j; + + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } @Test - public void ensureCreatorHasPermissions() throws Exception { + void ensureCreatorHasPermissions() throws Exception { HudsonPrivateSecurityRealm realm = new HudsonPrivateSecurityRealm(false, false, null); realm.createAccount("alice", "alice"); realm.createAccount("bob", "bob"); - r.jenkins.setSecurityRealm(realm); + j.jenkins.setSecurityRealm(realm); ProjectMatrixAuthorizationStrategy authorizationStrategy = new ProjectMatrixAuthorizationStrategy(); authorizationStrategy.add(Item.CREATE, "alice"); authorizationStrategy.add(Jenkins.READ, "alice"); authorizationStrategy.add(Jenkins.READ, "bob"); - r.jenkins.setAuthorizationStrategy(authorizationStrategy); + j.jenkins.setAuthorizationStrategy(authorizationStrategy); Job job; try (ACLContext ignored = ACL.as(User.get("alice", false, Collections.emptyMap()))) { - job = r.createFreeStyleProject(); + job = j.createFreeStyleProject(); } - Assert.assertNotNull(job.getProperty(AuthorizationMatrixProperty.class)); - Assert.assertTrue(job.getACL() + assertNotNull(job.getProperty(AuthorizationMatrixProperty.class)); + assertTrue(job.getACL() .hasPermission2( Objects.requireNonNull(User.get("alice", false, Collections.emptyMap())) .impersonate2(), Item.READ)); - Assert.assertFalse(job.getACL() + assertFalse(job.getACL() .hasPermission2( Objects.requireNonNull(User.get("bob", false, Collections.emptyMap())) .impersonate2(), Item.READ)); - Assert.assertTrue(job.getACL() + assertTrue(job.getACL() .hasPermission2( Objects.requireNonNull(User.get("alice", false, Collections.emptyMap())) .impersonate2(), @@ -73,91 +80,89 @@ public void ensureCreatorHasPermissions() throws Exception { @Test @Issue("JENKINS-58703") - public void ensureNoJobPropertyDuplication() throws Exception { + void ensureNoJobPropertyDuplication() throws Exception { HudsonPrivateSecurityRealm realm = new HudsonPrivateSecurityRealm(false, false, null); realm.createAccount("alice", "alice"); realm.createAccount("bob", "bob"); - r.jenkins.setSecurityRealm(realm); + j.jenkins.setSecurityRealm(realm); ProjectMatrixAuthorizationStrategy authorizationStrategy = new ProjectMatrixAuthorizationStrategy(); authorizationStrategy.add(Item.CREATE, "alice"); authorizationStrategy.add(Jenkins.READ, "alice"); authorizationStrategy.add(Jenkins.READ, "bob"); - r.jenkins.setAuthorizationStrategy(authorizationStrategy); + j.jenkins.setAuthorizationStrategy(authorizationStrategy); Job job; try (ACLContext ignored = ACL.as(User.get("alice", false, Collections.emptyMap()))) { - r.jenkins.createProjectFromXML( + j.jenkins.createProjectFromXML( "job", getClass().getResourceAsStream(getClass().getSimpleName() + "/JENKINS-58703.xml")); - job = r.jenkins.getItem("job", r.jenkins, Job.class); + job = j.jenkins.getItem("job", j.jenkins, Job.class); } - Assert.assertNotNull(job.getProperty(AuthorizationMatrixProperty.class)); - Assert.assertTrue(job.getACL() + assertNotNull(job.getProperty(AuthorizationMatrixProperty.class)); + assertTrue(job.getACL() .hasPermission2( Objects.requireNonNull(User.get("alice", false, Collections.emptyMap())) .impersonate2(), Item.READ)); - Assert.assertTrue(job.getACL() + assertTrue(job.getACL() .hasPermission2( Objects.requireNonNull(User.get("bob", false, Collections.emptyMap())) .impersonate2(), Item.READ)); - Assert.assertTrue(job.getACL() + assertTrue(job.getACL() .hasPermission2( Objects.requireNonNull(User.get("alice", false, Collections.emptyMap())) .impersonate2(), Item.CONFIGURE)); - Assert.assertEquals("one property", 1, job.getAllProperties().size()); + assertEquals(1, job.getAllProperties().size(), "one property"); } @Test - public void submitEmptyPropertyEnsuresPermissionsForSubmitter() throws Exception { + void submitEmptyPropertyEnsuresPermissionsForSubmitter() throws Exception { HudsonPrivateSecurityRealm realm = new HudsonPrivateSecurityRealm(false, false, null); realm.createAccount("alice", "alice"); realm.createAccount("bob", "bob"); - r.jenkins.setSecurityRealm(realm); + j.jenkins.setSecurityRealm(realm); - r.jenkins.setAuthorizationStrategy(new FullControlOnceLoggedInAuthorizationStrategy()); + j.jenkins.setAuthorizationStrategy(new FullControlOnceLoggedInAuthorizationStrategy()); // ensure logged in users are admins, but anon is not try (ACLContext ignored = ACL.as(User.get("alice", false, Collections.emptyMap()))) { - Assert.assertTrue("alice is admin", r.jenkins.hasPermission(Jenkins.ADMINISTER)); + assertTrue(j.jenkins.hasPermission(Jenkins.ADMINISTER), "alice is admin"); } try (ACLContext ignored = ACL.as(User.get("bob", false, Collections.emptyMap()))) { - Assert.assertTrue("bob is admin", r.jenkins.hasPermission(Jenkins.ADMINISTER)); + assertTrue(j.jenkins.hasPermission(Jenkins.ADMINISTER), "bob is admin"); } - Assert.assertFalse( - "anon is not admin", r.jenkins.getACL().hasPermission2(Jenkins.ANONYMOUS2, Jenkins.ADMINISTER)); + assertFalse(j.jenkins.getACL().hasPermission2(Jenkins.ANONYMOUS2, Jenkins.ADMINISTER), "anon is not admin"); - JenkinsRule.WebClient wc = r.createWebClient().login("alice"); + JenkinsRule.WebClient wc = j.createWebClient().login("alice"); configureGlobalMatrixAuthStrategyThroughUI(wc); try (ACLContext ignored = ACL.as(User.get("alice", false, Collections.emptyMap()))) { // ensure that the user submitting the empty matrix will be admin - Assert.assertTrue("alice is admin", r.jenkins.hasPermission(Jenkins.ADMINISTER)); + assertTrue(j.jenkins.hasPermission(Jenkins.ADMINISTER), "alice is admin"); } try (ACLContext ignored = ACL.as(User.get("bob", false, Collections.emptyMap()))) { - Assert.assertFalse("bob is not admin", r.jenkins.hasPermission(Jenkins.ADMINISTER)); + assertFalse(j.jenkins.hasPermission(Jenkins.ADMINISTER), "bob is not admin"); } - Assert.assertFalse( - "anon is not admin", r.jenkins.getACL().hasPermission2(Jenkins.ANONYMOUS2, Jenkins.ADMINISTER)); + assertFalse(j.jenkins.getACL().hasPermission2(Jenkins.ANONYMOUS2, Jenkins.ADMINISTER), "anon is not admin"); } @Test - public void submitEmptyPropertyEnsuresPermissionsForAnonymousSubmitter() throws Exception { + void submitEmptyPropertyEnsuresPermissionsForAnonymousSubmitter() throws Exception { // prepare form to have options visible - r.jenkins.setSecurityRealm(new HudsonPrivateSecurityRealm(true, false, null)); - r.jenkins.setAuthorizationStrategy(new AuthorizationStrategy.Unsecured()); + j.jenkins.setSecurityRealm(new HudsonPrivateSecurityRealm(true, false, null)); + j.jenkins.setAuthorizationStrategy(new AuthorizationStrategy.Unsecured()); - Assert.assertTrue("anon is admin", r.jenkins.getACL().hasPermission2(Jenkins.ANONYMOUS2, Jenkins.ADMINISTER)); + assertTrue(j.jenkins.getACL().hasPermission2(Jenkins.ANONYMOUS2, Jenkins.ADMINISTER), "anon is admin"); - JenkinsRule.WebClient wc = r.createWebClient(); + JenkinsRule.WebClient wc = j.createWebClient(); configureGlobalMatrixAuthStrategyThroughUI(wc); - Assert.assertTrue("anon is admin", r.jenkins.getACL().hasPermission2(Jenkins.ANONYMOUS2, Jenkins.ADMINISTER)); - Assert.assertTrue(r.jenkins.getAuthorizationStrategy() instanceof GlobalMatrixAuthorizationStrategy); + assertTrue(j.jenkins.getACL().hasPermission2(Jenkins.ANONYMOUS2, Jenkins.ADMINISTER), "anon is admin"); + assertInstanceOf(GlobalMatrixAuthorizationStrategy.class, j.jenkins.getAuthorizationStrategy()); } private void configureGlobalMatrixAuthStrategyThroughUI(JenkinsRule.WebClient wc) throws Exception { @@ -168,53 +173,52 @@ private void configureGlobalMatrixAuthStrategyThroughUI(JenkinsRule.WebClient wc option.getTextContent().contains(GlobalMatrixAuthorizationStrategy.DESCRIPTOR.getDisplayName())) .findAny(); - if (!anyOption.isPresent()) { - throw new IllegalStateException("expected to find an option"); - } + assertFalse(anyOption.isEmpty(), "expected to find an option"); + HtmlOption option = (HtmlOption) anyOption.get(); HtmlSelect parent = (HtmlSelect) option.getParentNode(); parent.setSelectedAttribute(option, true); - r.submit(form); + j.submit(form); } @Test @LocalData - public void loadEmptyAuthorizationStrategy() { - Assert.assertTrue(r.jenkins.getSecurityRealm() instanceof HudsonPrivateSecurityRealm); - Assert.assertTrue(r.jenkins.getAuthorizationStrategy() instanceof GlobalMatrixAuthorizationStrategy); + void loadEmptyAuthorizationStrategy() { + assertInstanceOf(HudsonPrivateSecurityRealm.class, j.jenkins.getSecurityRealm()); + assertInstanceOf(GlobalMatrixAuthorizationStrategy.class, j.jenkins.getAuthorizationStrategy()); } @Test @LocalData - public void loadFilledAuthorizationStrategy() { - Assert.assertTrue(r.jenkins.getSecurityRealm() instanceof HudsonPrivateSecurityRealm); - Assert.assertTrue(r.jenkins.getAuthorizationStrategy() instanceof ProjectMatrixAuthorizationStrategy); + void loadFilledAuthorizationStrategy() { + assertInstanceOf(HudsonPrivateSecurityRealm.class, j.jenkins.getSecurityRealm()); + assertInstanceOf(ProjectMatrixAuthorizationStrategy.class, j.jenkins.getAuthorizationStrategy()); ProjectMatrixAuthorizationStrategy authorizationStrategy = - (ProjectMatrixAuthorizationStrategy) r.jenkins.getAuthorizationStrategy(); - Assert.assertTrue(authorizationStrategy.hasExplicitPermission("alice", Jenkins.ADMINISTER)); - Assert.assertFalse(authorizationStrategy.hasExplicitPermission("alice", Jenkins.READ)); - Assert.assertFalse(authorizationStrategy.hasExplicitPermission("bob", Jenkins.ADMINISTER)); + (ProjectMatrixAuthorizationStrategy) j.jenkins.getAuthorizationStrategy(); + assertTrue(authorizationStrategy.hasExplicitPermission("alice", Jenkins.ADMINISTER)); + assertFalse(authorizationStrategy.hasExplicitPermission("alice", Jenkins.READ)); + assertFalse(authorizationStrategy.hasExplicitPermission("bob", Jenkins.ADMINISTER)); } @Test @Issue("JENKINS-39873") - public void subdirectoriesCanExcludeOtherNonAdminUsers() throws Exception { + void subdirectoriesCanExcludeOtherNonAdminUsers() throws Exception { HudsonPrivateSecurityRealm securityRealm = new HudsonPrivateSecurityRealm(false, false, null); securityRealm.createAccount("admin", "admin"); securityRealm.createAccount("alice", "alice"); securityRealm.createAccount("bob", "bob"); securityRealm.createAccount("carol", "carol"); - r.jenkins.setSecurityRealm(securityRealm); + j.jenkins.setSecurityRealm(securityRealm); ProjectMatrixAuthorizationStrategy authorizationStrategy = new ProjectMatrixAuthorizationStrategy(); authorizationStrategy.add(Jenkins.ADMINISTER, "admin"); authorizationStrategy.add(Jenkins.READ, "alice"); authorizationStrategy.add(Jenkins.READ, "bob"); - r.jenkins.setAuthorizationStrategy(authorizationStrategy); + j.jenkins.setAuthorizationStrategy(authorizationStrategy); - Folder f = r.jenkins.createProject(Folder.class, "Folder"); + Folder f = j.jenkins.createProject(Folder.class, "Folder"); com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty amp = new com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty(Collections.emptyMap()); @@ -233,7 +237,7 @@ public void subdirectoriesCanExcludeOtherNonAdminUsers() throws Exception { aliceProjects.getProperties().add(aliceProp); - ACL acl = r.jenkins.getAuthorizationStrategy().getACL(aliceProjects); + ACL acl = j.jenkins.getAuthorizationStrategy().getACL(aliceProjects); Authentication alice = Objects.requireNonNull(User.get("alice", false, Collections.emptyMap())) .impersonate2(); @@ -242,38 +246,34 @@ public void subdirectoriesCanExcludeOtherNonAdminUsers() throws Exception { Authentication bob = Objects.requireNonNull(User.get("bob", false, Collections.emptyMap())) .impersonate2(); - Assert.assertTrue(acl.hasPermission2(alice, Item.READ)); - Assert.assertTrue(acl.hasPermission2(alice, Item.CONFIGURE)); - Assert.assertTrue(acl.hasPermission2(admin, Item.READ)); - Assert.assertTrue(acl.hasPermission2(admin, Item.CONFIGURE)); - Assert.assertFalse(acl.hasPermission2(bob, Item.READ)); - Assert.assertFalse(acl.hasPermission2(bob, Item.CONFIGURE)); + assertTrue(acl.hasPermission2(alice, Item.READ)); + assertTrue(acl.hasPermission2(alice, Item.CONFIGURE)); + assertTrue(acl.hasPermission2(admin, Item.READ)); + assertTrue(acl.hasPermission2(admin, Item.CONFIGURE)); + assertFalse(acl.hasPermission2(bob, Item.READ)); + assertFalse(acl.hasPermission2(bob, Item.CONFIGURE)); - JenkinsRule.WebClient wc = r.createWebClient().login("alice", "alice"); + JenkinsRule.WebClient wc = j.createWebClient().login("alice", "alice"); wc.goTo(aliceProjects.getUrl()); - wc = r.createWebClient().login("admin", "admin"); + wc = j.createWebClient().login("admin", "admin"); wc.goTo(aliceProjects.getUrl()); - wc = r.createWebClient().login("bob", "bob"); - try { - wc.goTo(aliceProjects.getUrl()); - Assert.fail(); - } catch (Exception expected) { - // expected - } + assertThrows( + FailingHttpStatusCodeException.class, + () -> j.createWebClient().login("bob", "bob").goTo(aliceProjects.getUrl())); } @Test - public void getGroupsAlwaysEverything() throws IOException { + void getGroupsAlwaysEverything() throws IOException { HudsonPrivateSecurityRealm securityRealm = new HudsonPrivateSecurityRealm(false, false, null); - r.jenkins.setSecurityRealm(securityRealm); + j.jenkins.setSecurityRealm(securityRealm); ProjectMatrixAuthorizationStrategy authorizationStrategy = new ProjectMatrixAuthorizationStrategy(); authorizationStrategy.add(Jenkins.READ, PermissionEntry.group("group1")); - r.jenkins.setAuthorizationStrategy(authorizationStrategy); + j.jenkins.setAuthorizationStrategy(authorizationStrategy); - final Folder f = r.jenkins.createProject(Folder.class, "F"); + final Folder f = j.jenkins.createProject(Folder.class, "F"); final FreeStyleProject job = f.createProject(FreeStyleProject.class, "job"); job.addProperty(new AuthorizationMatrixProperty( Map.of(Item.READ, Set.of(PermissionEntry.group("group2"))), new InheritParentStrategy())); diff --git a/src/test/java/hudson/security/Security410Test.java b/src/test/java/hudson/security/Security410Test.java index 37f1fa19..773c55de 100644 --- a/src/test/java/hudson/security/Security410Test.java +++ b/src/test/java/hudson/security/Security410Test.java @@ -1,23 +1,29 @@ package hudson.security; -import static org.junit.Assert.assertFalse; +import static org.junit.jupiter.api.Assertions.assertFalse; import hudson.PluginManager; import jenkins.model.Jenkins; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.Issue; import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; -public class Security410Test { +@WithJenkins +class Security410Test { - @Rule - public JenkinsRule j = new JenkinsRule(); + private JenkinsRule j; + + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } @Issue("SECURITY-410") @Test @SuppressWarnings("deprecation") - public void dangerousPermissions1() { + void dangerousPermissions1() { ProjectMatrixAuthorizationStrategy as = new ProjectMatrixAuthorizationStrategy(); assertFalse(((GlobalMatrixAuthorizationStrategy.DescriptorImpl) as.getDescriptor()) .showPermission(Jenkins.RUN_SCRIPTS)); diff --git a/src/test/java/org/jenkinsci/plugins/matrixauth/AmbiguityTest.java b/src/test/java/org/jenkinsci/plugins/matrixauth/AmbiguityTest.java index 284105cc..5abfcdea 100644 --- a/src/test/java/org/jenkinsci/plugins/matrixauth/AmbiguityTest.java +++ b/src/test/java/org/jenkinsci/plugins/matrixauth/AmbiguityTest.java @@ -1,10 +1,6 @@ package org.jenkinsci.plugins.matrixauth; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.*; import com.cloudbees.hudson.plugins.folder.Folder; import com.cloudbees.hudson.plugins.folder.properties.FolderContributor; @@ -26,18 +22,28 @@ import org.htmlunit.html.HtmlFormUtil; import org.htmlunit.html.HtmlPage; import org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.LogRecorder; import org.jvnet.hudson.test.MockAuthorizationStrategy; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; import org.jvnet.hudson.test.recipes.LocalData; -public class AmbiguityTest { - @Rule - public JenkinsRule j = new JenkinsRule(); +@WithJenkins +class AmbiguityTest { + + private final LogRecorder l = new LogRecorder(); + + private JenkinsRule j; + + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } @Test - public void anonymousIsUser() throws Exception { + void anonymousIsUser() throws Exception { j.jenkins.setSecurityRealm(j.createDummySecurityRealm()); final GlobalMatrixAuthorizationStrategy userStrategy = new GlobalMatrixAuthorizationStrategy(); userStrategy.add(Jenkins.READ, new PermissionEntry(AuthorizationType.USER, "anonymous")); @@ -56,7 +62,7 @@ public void anonymousIsUser() throws Exception { } @Test - public void anonymousIsAlsoGroup() throws Exception { // this wasn't always the case in older Jenkinses, but is now. + void anonymousIsAlsoGroup() throws Exception { // this wasn't always the case in older Jenkinses, but is now. j.jenkins.setSecurityRealm(j.createDummySecurityRealm()); final GlobalMatrixAuthorizationStrategy groupStrategy = new GlobalMatrixAuthorizationStrategy(); groupStrategy.add(Jenkins.READ, new PermissionEntry(AuthorizationType.GROUP, "anonymous")); @@ -67,7 +73,7 @@ public void anonymousIsAlsoGroup() throws Exception { // this wasn't always the } @Test - public void authenticatedIsAGroup() throws Exception { + void authenticatedIsAGroup() throws Exception { j.jenkins.setSecurityRealm(j.createDummySecurityRealm()); final GlobalMatrixAuthorizationStrategy userStrategy = new GlobalMatrixAuthorizationStrategy(); userStrategy.add(Jenkins.READ, new PermissionEntry(AuthorizationType.GROUP, "authenticated")); @@ -81,7 +87,7 @@ public void authenticatedIsAGroup() throws Exception { groupStrategy.add(Jenkins.READ, new PermissionEntry(AuthorizationType.USER, "authenticated")); j.jenkins.setAuthorizationStrategy(groupStrategy); FailingHttpStatusCodeException ex = assertThrows(FailingHttpStatusCodeException.class, () -> wc.goTo("")); - assertEquals("permission denied", 403, ex.getStatusCode()); + assertEquals(403, ex.getStatusCode(), "permission denied"); // Legacy config would still work j.jenkins.setSecurityRealm(j.createDummySecurityRealm()); @@ -93,7 +99,7 @@ public void authenticatedIsAGroup() throws Exception { } @Test - public void usersAreUsers() throws Exception { + void usersAreUsers() throws Exception { j.jenkins.setSecurityRealm(j.createDummySecurityRealm()); final GlobalMatrixAuthorizationStrategy userStrategy = new GlobalMatrixAuthorizationStrategy(); userStrategy.add(Jenkins.READ, new PermissionEntry(AuthorizationType.USER, "alice")); @@ -107,7 +113,7 @@ public void usersAreUsers() throws Exception { groupStrategy.add(Jenkins.READ, new PermissionEntry(AuthorizationType.GROUP, "alice")); j.jenkins.setAuthorizationStrategy(groupStrategy); FailingHttpStatusCodeException ex = assertThrows(FailingHttpStatusCodeException.class, () -> wc.goTo("")); - assertEquals("permission denied", 403, ex.getStatusCode()); + assertEquals(403, ex.getStatusCode(), "permission denied"); // Legacy config would still work j.jenkins.setSecurityRealm(j.createDummySecurityRealm()); @@ -119,7 +125,7 @@ public void usersAreUsers() throws Exception { } @Test - public void adminMonitorAppearsAndDisappears() throws Exception { + void adminMonitorAppearsAndDisappears() throws Exception { assertAdminMonitorVisible(false); j.jenkins.setSecurityRealm(j.createDummySecurityRealm()); final GlobalMatrixAuthorizationStrategy userStrategy = new GlobalMatrixAuthorizationStrategy(); @@ -171,7 +177,7 @@ public void adminMonitorAppearsAndDisappears() throws Exception { @LocalData @Test - public void testDataFrom2xReconfiguration() throws Exception { + void testDataFrom2xReconfiguration() throws Exception { assertAdminMonitorVisible(true); AmbiguityMonitor ambiguityMonitor = (AmbiguityMonitor) j.jenkins.getAdministrativeMonitor(AmbiguityMonitor.class.getName()); @@ -293,7 +299,7 @@ public void testDataFrom2xReconfiguration() throws Exception { @LocalData @Test - public void testDataFrom2xDeletion() throws Exception { + void testDataFrom2xDeletion() throws Exception { assertAdminMonitorVisible(true); AmbiguityMonitor ambiguityMonitor = (AmbiguityMonitor) j.jenkins.getAdministrativeMonitor(AmbiguityMonitor.class.getName()); @@ -328,9 +334,9 @@ public void testDataFrom2xDeletion() throws Exception { private void assertAdminMonitorVisible(boolean visible) { assertEquals( - "admin monitor should be visible? ", visible, Objects.requireNonNull(j.jenkins.getAdministrativeMonitor(AmbiguityMonitor.class.getName())) - .isActivated()); + .isActivated(), + "admin monitor should be visible? "); } } diff --git a/src/test/java/org/jenkinsci/plugins/matrixauth/AuthorizationContainerDescriptorTest.java b/src/test/java/org/jenkinsci/plugins/matrixauth/AuthorizationContainerDescriptorTest.java index b77f4e14..1c1420ff 100644 --- a/src/test/java/org/jenkinsci/plugins/matrixauth/AuthorizationContainerDescriptorTest.java +++ b/src/test/java/org/jenkinsci/plugins/matrixauth/AuthorizationContainerDescriptorTest.java @@ -1,19 +1,21 @@ package org.jenkinsci.plugins.matrixauth; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + import hudson.model.Item; import hudson.model.Run; import hudson.security.GlobalMatrixAuthorizationStrategy; import hudson.security.Permission; import hudson.security.PermissionScope; import jenkins.model.Jenkins; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.jvnet.localizer.Localizable; import org.jvnet.localizer.ResourceBundleHolder; -public class AuthorizationContainerDescriptorTest { +class AuthorizationContainerDescriptorTest { - private final Permission TEST_PERMISSION = new Permission( + private static final Permission TEST_PERMISSION = new Permission( Item.PERMISSIONS, "Test", new Localizable(ResourceBundleHolder.get(AuthorizationContainerDescriptorTest.class), "Test"), @@ -21,21 +23,19 @@ public class AuthorizationContainerDescriptorTest { PermissionScope.ITEM); @Test - public void testImpliedNotes() { + void testImpliedNotes() { { // no message on Administer String description = new GlobalMatrixAuthorizationStrategy.DescriptorImpl().getDescription(Jenkins.ADMINISTER); - Assert.assertFalse( - description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionNotImpliedBy())); - Assert.assertFalse(description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionImpliedBy( + assertFalse(description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionNotImpliedBy())); + assertFalse(description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionImpliedBy( Jenkins.PERMISSIONS.title.toString(), Jenkins.ADMINISTER.name))); } { // Run.ARTIFACTS is not implied by other permissions String description = new GlobalMatrixAuthorizationStrategy.DescriptorImpl().getDescription(Run.ARTIFACTS); - Assert.assertTrue( - description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionNotImpliedBy())); - Assert.assertFalse(description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionImpliedBy( + assertTrue(description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionNotImpliedBy())); + assertFalse(description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionImpliedBy( Jenkins.PERMISSIONS.title.toString(), Jenkins.ADMINISTER.name))); } @@ -43,9 +43,8 @@ public void testImpliedNotes() { // Use a fake permission for the 'implied by' message addition check, since Item.CANCEL changed behavior in // 2.120, and there's no permission left with the same behavior. String description = new GlobalMatrixAuthorizationStrategy.DescriptorImpl().getDescription(TEST_PERMISSION); - Assert.assertFalse( - description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionNotImpliedBy())); - Assert.assertTrue(description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionImpliedBy( + assertFalse(description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionNotImpliedBy())); + assertTrue(description.contains(Messages.GlobalMatrixAuthorizationStrategy_PermissionImpliedBy( Item.PERMISSIONS.title.toString(), Item.BUILD.name))); } } diff --git a/src/test/java/org/jenkinsci/plugins/matrixauth/AuthorizationMatrixNodePropertyTest.java b/src/test/java/org/jenkinsci/plugins/matrixauth/AuthorizationMatrixNodePropertyTest.java index 7f9dc020..6c9d9e40 100644 --- a/src/test/java/org/jenkinsci/plugins/matrixauth/AuthorizationMatrixNodePropertyTest.java +++ b/src/test/java/org/jenkinsci/plugins/matrixauth/AuthorizationMatrixNodePropertyTest.java @@ -24,6 +24,8 @@ package org.jenkinsci.plugins.matrixauth; +import static org.junit.jupiter.api.Assertions.*; + import hudson.model.Computer; import hudson.model.Node; import hudson.model.User; @@ -34,42 +36,47 @@ import java.util.Collections; import java.util.Objects; import jenkins.model.Jenkins; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; + +@WithJenkins +class AuthorizationMatrixNodePropertyTest { -public class AuthorizationMatrixNodePropertyTest { + private JenkinsRule j; - @Rule - public JenkinsRule r = new JenkinsRule(); + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } @Test - public void ensureCreatorHasPermissions() throws Exception { + void ensureCreatorHasPermissions() throws Exception { HudsonPrivateSecurityRealm realm = new HudsonPrivateSecurityRealm(false, false, null); realm.createAccount("alice", "alice"); realm.createAccount("bob", "bob"); - r.jenkins.setSecurityRealm(realm); + j.jenkins.setSecurityRealm(realm); ProjectMatrixAuthorizationStrategy authorizationStrategy = new ProjectMatrixAuthorizationStrategy(); authorizationStrategy.add(Computer.CREATE, PermissionEntry.user("alice")); authorizationStrategy.add(Jenkins.READ, PermissionEntry.user("alice")); addRunScriptsPermission(authorizationStrategy); - r.jenkins.setAuthorizationStrategy(authorizationStrategy); + j.jenkins.setAuthorizationStrategy(authorizationStrategy); Node node; try (ACLContext ignored = ACL.as(User.get("alice", false, Collections.emptyMap()))) { - node = r.createSlave(); + node = j.createSlave(); } - Assert.assertNotNull(node.getNodeProperty(AuthorizationMatrixNodeProperty.class)); - Assert.assertTrue(node.getACL() + assertNotNull(node.getNodeProperty(AuthorizationMatrixNodeProperty.class)); + assertTrue(node.getACL() .hasPermission2( Objects.requireNonNull(User.get("alice", false, Collections.emptyMap())) .impersonate2(), Computer.CONFIGURE)); - Assert.assertFalse(node.getACL() + assertFalse(node.getACL() .hasPermission2( Objects.requireNonNull(User.get("bob", false, Collections.emptyMap())) .impersonate2(), diff --git a/src/test/java/org/jenkinsci/plugins/matrixauth/Jenkins57313Test.java b/src/test/java/org/jenkinsci/plugins/matrixauth/Jenkins57313Test.java index 5218d407..60cef8b0 100644 --- a/src/test/java/org/jenkinsci/plugins/matrixauth/Jenkins57313Test.java +++ b/src/test/java/org/jenkinsci/plugins/matrixauth/Jenkins57313Test.java @@ -1,30 +1,39 @@ package org.jenkinsci.plugins.matrixauth; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import hudson.security.GlobalMatrixAuthorizationStrategy; import jenkins.model.Jenkins; import org.htmlunit.html.HtmlPage; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.Issue; import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; + +@WithJenkins +class Jenkins57313Test { -public class Jenkins57313Test { - @Rule - public JenkinsRule j = new JenkinsRule(); + private JenkinsRule j; + + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } @Test @Issue("JENKINS-57313") - public void testFormValidation() throws Exception { + void testFormValidation() throws Exception { j.jenkins.setSecurityRealm(j.createDummySecurityRealm()); GlobalMatrixAuthorizationStrategy authorizationStrategy = new GlobalMatrixAuthorizationStrategy(); authorizationStrategy.add(Jenkins.ADMINISTER, "anonymous"); j.jenkins.setAuthorizationStrategy(authorizationStrategy); HtmlPage page = j.createWebClient() .goTo(authorizationStrategy.getDescriptor().getDescriptorUrl() + "/checkName?value=[USER:alice]"); - Assert.assertEquals(200, page.getWebResponse().getStatusCode()); + assertEquals(200, page.getWebResponse().getStatusCode()); String responseText = page.getWebResponse().getContentAsString(); - Assert.assertTrue(responseText.contains("alice")); - Assert.assertTrue(responseText.contains("User")); + assertTrue(responseText.contains("alice")); + assertTrue(responseText.contains("User")); } } diff --git a/src/test/java/org/jenkinsci/plugins/matrixauth/PermissionAdderTest.java b/src/test/java/org/jenkinsci/plugins/matrixauth/PermissionAdderTest.java index 5913d5bc..ab42ee0f 100644 --- a/src/test/java/org/jenkinsci/plugins/matrixauth/PermissionAdderTest.java +++ b/src/test/java/org/jenkinsci/plugins/matrixauth/PermissionAdderTest.java @@ -1,5 +1,8 @@ package org.jenkinsci.plugins.matrixauth; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + import hudson.model.User; import hudson.security.GlobalMatrixAuthorizationStrategy; import hudson.security.HudsonPrivateSecurityRealm; @@ -8,21 +11,20 @@ import java.util.Objects; import jenkins.model.Jenkins; import org.htmlunit.ElementNotFoundException; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import org.jvnet.hudson.test.Issue; import org.jvnet.hudson.test.JenkinsRule; -import org.jvnet.hudson.test.JenkinsSessionRule; +import org.jvnet.hudson.test.junit.jupiter.JenkinsSessionExtension; -public class PermissionAdderTest { +class PermissionAdderTest { - @Rule - public JenkinsSessionRule sessions = new JenkinsSessionRule(); + @RegisterExtension + private final JenkinsSessionExtension sessions = new JenkinsSessionExtension(); @Test @Issue("JENKINS-20520") - public void ensureSavingAfterInitialUser() throws Throwable { + void ensureSavingAfterInitialUser() throws Throwable { sessions.then(j -> { j.jenkins.setSecurityRealm(new HudsonPrivateSecurityRealm(true, false, null)); j.jenkins.setAuthorizationStrategy(new GlobalMatrixAuthorizationStrategy()); @@ -40,10 +42,10 @@ public void ensureSavingAfterInitialUser() throws Throwable { } signup.submit(j); User alice = User.get("alice", false, Collections.emptyMap()); - Assert.assertNotNull(alice); - Assert.assertTrue(j.jenkins.getACL().hasPermission2(alice.impersonate2(), Jenkins.ADMINISTER)); + assertNotNull(alice); + assertTrue(j.jenkins.getACL().hasPermission2(alice.impersonate2(), Jenkins.ADMINISTER)); }); - sessions.then(j -> Assert.assertTrue(j.jenkins + sessions.then(j -> assertTrue(j.jenkins .getACL() .hasPermission2( Objects.requireNonNull(User.get("alice", false, Collections.emptyMap())) diff --git a/src/test/java/org/jenkinsci/plugins/matrixauth/ReadOnlyTest.java b/src/test/java/org/jenkinsci/plugins/matrixauth/ReadOnlyTest.java index 6fdb25ed..1fe7a3c5 100644 --- a/src/test/java/org/jenkinsci/plugins/matrixauth/ReadOnlyTest.java +++ b/src/test/java/org/jenkinsci/plugins/matrixauth/ReadOnlyTest.java @@ -1,5 +1,8 @@ package org.jenkinsci.plugins.matrixauth; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + import com.cloudbees.hudson.plugins.folder.Folder; import hudson.model.Computer; import hudson.model.FreeStyleProject; @@ -13,18 +16,37 @@ import jenkins.model.Jenkins; import org.htmlunit.html.HtmlPage; import org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.Issue; import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; import org.xml.sax.SAXException; @Issue("JENKINS-62202") -public class ReadOnlyTest { - @Rule - public JenkinsRule j = new JenkinsRule(); +@WithJenkins +class ReadOnlyTest { + + private JenkinsRule j; + + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + + Jenkins.SYSTEM_READ.enabled = true; + Item.EXTENDED_READ.enabled = true; + Computer.EXTENDED_READ.enabled = true; + Jenkins.get().setSecurityRealm(j.createDummySecurityRealm()); + final ProjectMatrixAuthorizationStrategy strategy = new ProjectMatrixAuthorizationStrategy(); + { + strategy.add(Jenkins.READ, "anonymous"); + strategy.add(Jenkins.SYSTEM_READ, "anonymous"); + strategy.add(Item.READ, "anonymous"); + strategy.add(Item.EXTENDED_READ, "anonymous"); + strategy.add(Computer.EXTENDED_READ, "anonymous"); + } + Jenkins.get().setAuthorizationStrategy(strategy); + } private static boolean containsClassName(String className, String value) { Objects.requireNonNull(className, "className"); @@ -43,45 +65,28 @@ private static boolean hasTagWithClassInPage(HtmlPage page, String tagName, Stri private HtmlPage initAndAssertPresent(String configurationUrl) throws IOException, SAXException { JenkinsRule.WebClient wc = j.createWebClient(); final HtmlPage page = wc.goTo(configurationUrl); - Assert.assertTrue( - "contains permission container", - hasTagWithClassInPage(page, "table", "global-matrix-authorization-strategy-table")); + assertTrue( + hasTagWithClassInPage(page, "table", "global-matrix-authorization-strategy-table"), + "contains permission container"); return page; } private void assertPresentAndEditable(String configurationUrl) throws IOException, SAXException { final HtmlPage page = initAndAssertPresent(configurationUrl); - Assert.assertTrue( - "should contain add group/user button", - hasTagWithClassInPage(page, "button", "matrix-auth-add-button")); + assertTrue( + hasTagWithClassInPage(page, "button", "matrix-auth-add-button"), + "should contain add group/user button"); } private void assertPresentAndReadOnly(String configurationUrl) throws IOException, SAXException { final HtmlPage page = initAndAssertPresent(configurationUrl); - Assert.assertFalse( - "should not contain add group/user button", - hasTagWithClassInPage(page, "button", "matrix-auth-add-button")); - } - - @Before - public void prepare() { - Jenkins.SYSTEM_READ.enabled = true; - Item.EXTENDED_READ.enabled = true; - Computer.EXTENDED_READ.enabled = true; - Jenkins.get().setSecurityRealm(j.createDummySecurityRealm()); - final ProjectMatrixAuthorizationStrategy strategy = new ProjectMatrixAuthorizationStrategy(); - { - strategy.add(Jenkins.READ, "anonymous"); - strategy.add(Jenkins.SYSTEM_READ, "anonymous"); - strategy.add(Item.READ, "anonymous"); - strategy.add(Item.EXTENDED_READ, "anonymous"); - strategy.add(Computer.EXTENDED_READ, "anonymous"); - } - Jenkins.get().setAuthorizationStrategy(strategy); + assertFalse( + hasTagWithClassInPage(page, "button", "matrix-auth-add-button"), + "should not contain add group/user button"); } @Test - public void testGlobalConfiguration() throws IOException, SAXException { + void testGlobalConfiguration() throws IOException, SAXException { assertPresentAndReadOnly("configureSecurity"); ((ProjectMatrixAuthorizationStrategy) Jenkins.get().getAuthorizationStrategy()) @@ -90,7 +95,7 @@ public void testGlobalConfiguration() throws IOException, SAXException { } @Test - public void testJobConfiguration() throws IOException, SAXException { + void testJobConfiguration() throws IOException, SAXException { final FreeStyleProject job = j.createFreeStyleProject(); // While 2.223 changed the UI (readOnlyMode), the basic behavior by this // plugin remains the same due to permission check @@ -108,7 +113,7 @@ public void testJobConfiguration() throws IOException, SAXException { } @Test - public void testFolderConfiguration() throws IOException, SAXException { + void testFolderConfiguration() throws IOException, SAXException { final Folder folder = Jenkins.get().createProject(Folder.class, "testFolder"); folder.addProperty( new com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty(Collections.emptyMap())); @@ -121,7 +126,7 @@ public void testFolderConfiguration() throws IOException, SAXException { } @Test - public void testAgentConfigurationGlobally() throws Exception { + void testAgentConfigurationGlobally() throws Exception { final Slave agent = j.createSlave(); agent.setNodeProperties(Collections.singletonList(new AuthorizationMatrixNodeProperty())); assertPresentAndReadOnly("computer/" + agent.getNodeName() + "/configure"); @@ -132,7 +137,7 @@ public void testAgentConfigurationGlobally() throws Exception { } @Test - public void testAgentConfigurationPerAgent() throws Exception { + void testAgentConfigurationPerAgent() throws Exception { final Slave agent = j.createSlave(); agent.setNodeProperties(Collections.singletonList(new AuthorizationMatrixNodeProperty())); assertPresentAndReadOnly("computer/" + agent.getNodeName() + "/configure"); diff --git a/src/test/java/org/jenkinsci/plugins/matrixauth/Security2180Test.java b/src/test/java/org/jenkinsci/plugins/matrixauth/Security2180Test.java index cb239e70..776910f0 100644 --- a/src/test/java/org/jenkinsci/plugins/matrixauth/Security2180Test.java +++ b/src/test/java/org/jenkinsci/plugins/matrixauth/Security2180Test.java @@ -3,9 +3,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.*; import com.cloudbees.hudson.plugins.folder.Folder; import hudson.Functions; @@ -33,16 +31,16 @@ import org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy; import org.jenkinsci.plugins.matrixauth.inheritance.InheritanceStrategy; import org.jenkinsci.plugins.matrixauth.inheritance.NonInheritingStrategy; -import org.junit.After; -import org.junit.Assert; -import org.junit.ClassRule; -import org.junit.Rule; -import org.junit.Test; -import org.jvnet.hudson.test.BuildWatcher; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.JenkinsRule; import org.jvnet.hudson.test.SleepBuilder; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; + +@WithJenkins +class Security2180Test { -public class Security2180Test { private static final String BUILD_CONTENT = "Started by user"; private static final String JOB_CONTENT = "Full project name: folder/job"; private static final Map> ANONYMOUS_CAN_ITEM_READ = @@ -50,14 +48,15 @@ public class Security2180Test { private static final Logger LOGGER = Logger.getLogger(Security2180Test.class.getName()); - @ClassRule - public static BuildWatcher watcher = new BuildWatcher(); + private JenkinsRule j; - @Rule - public JenkinsRule j = new JenkinsRule(); + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } - @After - public void stopBuilds() throws Exception { + @AfterEach + void stopBuilds() throws Exception { for (FreeStyleProject p : j.jenkins.allItems(FreeStyleProject.class)) { for (FreeStyleBuild b : p.getBuilds()) { LOGGER.info(() -> "Stopping " + b + "…"); @@ -128,7 +127,7 @@ private void assertJobVisibility(FreeStyleProject job, boolean visibleWithFix, b job.scheduleBuild2(0, new Cause.UserIdCause("admin")).waitForStart(); // schedule one build now QueueTaskFuture future = job.scheduleBuild2(0, new Cause.UserIdCause("admin")); // schedule an additional queue item - Assert.assertEquals(1, Jenkins.get().getQueue().getItems().length); // expect there to be one queue item + assertEquals(1, Jenkins.get().getQueue().getItems().length); // expect there to be one queue item final JenkinsRule.WebClient webClient = j.createWebClient().withThrowExceptionOnFailingStatusCode(false); @@ -221,12 +220,12 @@ private AuthorizationMatrixProperty createJobProperty( } @Test - public void testQueuePath() throws Exception { + void testQueuePath() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(); FreeStyleProject job = prepareNestedProject(null, new AuthorizationMatrixProperty(ANONYMOUS_CAN_ITEM_READ)); job.scheduleBuild2(1000, new Cause.UserIdCause("admin")); - Assert.assertEquals(1, Jenkins.get().getQueue().getItems().length); + assertEquals(1, Jenkins.get().getQueue().getItems().length); final JenkinsRule.WebClient webClient = j.createWebClient().withThrowExceptionOnFailingStatusCode(false); final HtmlPage htmlPage = webClient.goTo("queue/items/0/task/"); @@ -235,12 +234,12 @@ public void testQueuePath() throws Exception { } @Test - public void testQueueContent() throws Exception { + void testQueueContent() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(); FreeStyleProject job = prepareNestedProject(null, new AuthorizationMatrixProperty(ANONYMOUS_CAN_ITEM_READ)); job.scheduleBuild2(1000, new Cause.UserIdCause("admin")); - Assert.assertEquals(1, Jenkins.get().getQueue().getItems().length); + assertEquals(1, Jenkins.get().getQueue().getItems().length); final JenkinsRule.WebClient webClient = j.createWebClient(); final Page page = webClient.goTo("queue/api/xml/", "application/xml"); @@ -249,14 +248,14 @@ public void testQueueContent() throws Exception { } @Test - public void testExecutorsPath() throws Exception { + void testExecutorsPath() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(); FreeStyleProject job = prepareNestedProject(null, new AuthorizationMatrixProperty(ANONYMOUS_CAN_ITEM_READ)); final FreeStyleBuild build = job.scheduleBuild2(0, new Cause.UserIdCause("admin")).waitForStart(); final Executor executor = build.getExecutor(); - assertNotNull("null executor", executor); + assertNotNull(executor, "null executor"); final int number = executor.getNumber(); final JenkinsRule.WebClient webClient = j.createWebClient().withThrowExceptionOnFailingStatusCode(false); @@ -266,7 +265,7 @@ public void testExecutorsPath() throws Exception { } @Test - public void testExecutorsContent() throws Exception { + void testExecutorsContent() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(); Folder folder = j.jenkins.createProject(Folder.class, "folder"); FreeStyleProject job = createFreeStyleProjectWithReadPermissionForAnonymousInFolder(folder); @@ -280,13 +279,13 @@ public void testExecutorsContent() throws Exception { } @Test - public void testWidgets() throws Exception { + void testWidgets() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(); FreeStyleProject job = prepareNestedProject(null, createJobPropertyForAnonymousItemRead()); job.scheduleBuild2(0, new Cause.UserIdCause("admin")).waitForStart(); // schedule one build now job.scheduleBuild2(0, new Cause.UserIdCause("admin")); // schedule an additional queue item - Assert.assertEquals(1, Jenkins.get().getQueue().getItems().length); // expect there to be one queue item + assertEquals(1, Jenkins.get().getQueue().getItems().length); // expect there to be one queue item final JenkinsRule.WebClient webClient = j.createWebClient().withThrowExceptionOnFailingStatusCode(false); @@ -300,7 +299,7 @@ public void testWidgets() throws Exception { } @Test - public void testTwoNestedFolderWithSecondGrantingAccess() throws Exception { + void testTwoNestedFolderWithSecondGrantingAccess() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(); FreeStyleProject job = prepareNestedProject( null, @@ -310,7 +309,7 @@ public void testTwoNestedFolderWithSecondGrantingAccess() throws Exception { } @Test - public void testThreeNestedFolderWithSecondGrantingAccess() throws Exception { + void testThreeNestedFolderWithSecondGrantingAccess() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(); FreeStyleProject job = prepareNestedProject( null, // folder does not allow Item/Read for anon @@ -322,7 +321,7 @@ public void testThreeNestedFolderWithSecondGrantingAccess() throws Exception { } @Test - public void testGlobalItemReadBlockedByNonInheritingStrategyOnJob() throws Exception { + void testGlobalItemReadBlockedByNonInheritingStrategyOnJob() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); FreeStyleProject job = prepareNestedProject(null, createJobProperty(Collections.emptyMap(), new NonInheritingStrategy())); @@ -330,7 +329,7 @@ public void testGlobalItemReadBlockedByNonInheritingStrategyOnJob() throws Excep } @Test - public void testGlobalItemReadBlockedByNonInheritingStrategyOnMiddleFolder() throws Exception { + void testGlobalItemReadBlockedByNonInheritingStrategyOnMiddleFolder() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); FreeStyleProject job = prepareNestedProject( null, @@ -341,7 +340,7 @@ public void testGlobalItemReadBlockedByNonInheritingStrategyOnMiddleFolder() thr } @Test - public void testInheritGlobalMiddleFolderInheritParentInnerFolder() throws Exception { + void testInheritGlobalMiddleFolderInheritParentInnerFolder() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); // Global( Item/Read ) -> folder (no prop) -> folder2 (prop inherits global) -> folder3 (prop inherits parent, // grants Read) -> job (grants Read) @@ -354,7 +353,7 @@ public void testInheritGlobalMiddleFolderInheritParentInnerFolder() throws Excep } @Test - public void testNonInheritingOuterFolderBlocksInheritGlobalInnerFolder() throws Exception { + void testNonInheritingOuterFolderBlocksInheritGlobalInnerFolder() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); // Global( Item/Read ) -> folder (do not inherit) -> folder2 (prop inherits global) -> folder3 (prop inherits // parent, grants Read) -> job (grants Read) @@ -367,7 +366,7 @@ public void testNonInheritingOuterFolderBlocksInheritGlobalInnerFolder() throws } @Test - public void testInheritGlobalInFolderInheritParentAndExplicitGrantInItem() throws Exception { + void testInheritGlobalInFolderInheritParentAndExplicitGrantInItem() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); FreeStyleProject job = prepareNestedProject( createFolderProperty(Collections.emptyMap(), new InheritGlobalStrategy()), @@ -376,7 +375,7 @@ public void testInheritGlobalInFolderInheritParentAndExplicitGrantInItem() throw } @Test - public void testInheritGlobalInFolderInheritParentWithoutExplicitGrantInItem_visible() throws Exception { + void testInheritGlobalInFolderInheritParentWithoutExplicitGrantInItem_visible() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); FreeStyleProject job = prepareNestedProject( createFolderProperty(Collections.emptyMap(), new InheritGlobalStrategy()), @@ -385,7 +384,7 @@ public void testInheritGlobalInFolderInheritParentWithoutExplicitGrantInItem_vis } @Test - public void testExplicitNonInheritingThenInheritGlobalReadThenParent_visible() throws Exception { + void testExplicitNonInheritingThenInheritGlobalReadThenParent_visible() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); FreeStyleProject job = prepareNestedProject( createFolderProperty(ANONYMOUS_CAN_ITEM_READ, new NonInheritingStrategy()), @@ -395,7 +394,7 @@ public void testExplicitNonInheritingThenInheritGlobalReadThenParent_visible() t } @Test - public void testNonInheritingThenInheritGlobalReadThenParent_not_visible() throws Exception { + void testNonInheritingThenInheritGlobalReadThenParent_not_visible() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); FreeStyleProject job = prepareNestedProject( createFolderProperty(Collections.emptyMap(), new NonInheritingStrategy()), @@ -405,7 +404,7 @@ public void testNonInheritingThenInheritGlobalReadThenParent_not_visible() throw } @Test - public void testExplicitNonInheritingThenInheritGlobalNonReadThenParent_not_visible() throws Exception { + void testExplicitNonInheritingThenInheritGlobalNonReadThenParent_not_visible() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(); FreeStyleProject job = prepareNestedProject( createFolderProperty(ANONYMOUS_CAN_ITEM_READ, new NonInheritingStrategy()), @@ -415,7 +414,7 @@ public void testExplicitNonInheritingThenInheritGlobalNonReadThenParent_not_visi } @Test - public void testExplicitNonInheritingThenInheritGlobalReadThenNonInheriting_not_visible() throws Exception { + void testExplicitNonInheritingThenInheritGlobalReadThenNonInheriting_not_visible() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); FreeStyleProject job = prepareNestedProject( createFolderProperty(ANONYMOUS_CAN_ITEM_READ, new NonInheritingStrategy()), @@ -425,7 +424,7 @@ public void testExplicitNonInheritingThenInheritGlobalReadThenNonInheriting_not_ } @Test - public void testInheritGlobalInFolderInheritParentWithoutExplicitGrantInItem2_visible() throws Exception { + void testInheritGlobalInFolderInheritParentWithoutExplicitGrantInItem2_visible() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); FreeStyleProject job = prepareNestedProject( createFolderProperty(Collections.emptyMap(), new InheritGlobalStrategy()), @@ -434,7 +433,7 @@ public void testInheritGlobalInFolderInheritParentWithoutExplicitGrantInItem2_vi } @Test - public void testInheritGlobalInFolderAndItem_visible() throws Exception { + void testInheritGlobalInFolderAndItem_visible() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(Item.READ); FreeStyleProject job = prepareNestedProject( createFolderProperty(Collections.emptyMap(), new InheritGlobalStrategy()), @@ -443,7 +442,7 @@ public void testInheritGlobalInFolderAndItem_visible() throws Exception { } @Test - public void testNonInheritingItemWithExplicitGrantInsideNonGrantingFolder() throws Exception { + void testNonInheritingItemWithExplicitGrantInsideNonGrantingFolder() throws Exception { prepareJenkinsDefaultSetupWithOverallReadForAnonymous(); FreeStyleProject job = @@ -452,7 +451,7 @@ public void testNonInheritingItemWithExplicitGrantInsideNonGrantingFolder() thro } @Test - public void testEscapeHatch() throws Exception { + void testEscapeHatch() throws Exception { final String propertyName = hudson.security.AuthorizationMatrixProperty.class.getName() + ".checkParentPermissions"; try { @@ -463,7 +462,7 @@ public void testEscapeHatch() throws Exception { FreeStyleProject job = createFreeStyleProjectWithReadPermissionForAnonymousInFolder(folder); job.scheduleBuild2(1000, new Cause.UserIdCause("admin")); - Assert.assertEquals(1, Jenkins.get().getQueue().getItems().length); + assertEquals(1, Jenkins.get().getQueue().getItems().length); final JenkinsRule.WebClient webClient = j.createWebClient().withThrowExceptionOnFailingStatusCode(false); @@ -480,9 +479,9 @@ public void testEscapeHatch() throws Exception { final FreeStyleBuild build = job.scheduleBuild2(0, new Cause.UserIdCause("admin")).waitForStart(); final Executor executor = build.getExecutor(); - assertNotNull("null executor", executor); + assertNotNull(executor, "null executor"); final int number = executor.getNumber(); - Assert.assertEquals(0, Jenkins.get().getQueue().getItems().length); // collapsed queue items + assertEquals(0, Jenkins.get().getQueue().getItems().length); // collapsed queue items { // executor related assertions final HtmlPage htmlPage = diff --git a/src/test/java/org/jenkinsci/plugins/matrixauth/inheritance/InheritanceMigrationTest.java b/src/test/java/org/jenkinsci/plugins/matrixauth/inheritance/InheritanceMigrationTest.java index 26de9975..0911a877 100644 --- a/src/test/java/org/jenkinsci/plugins/matrixauth/inheritance/InheritanceMigrationTest.java +++ b/src/test/java/org/jenkinsci/plugins/matrixauth/inheritance/InheritanceMigrationTest.java @@ -3,6 +3,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; +import static org.junit.jupiter.api.Assertions.*; import com.cloudbees.hudson.plugins.folder.Folder; import com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty; @@ -11,71 +12,76 @@ import hudson.model.Job; import hudson.model.User; import hudson.security.ProjectMatrixAuthorizationStrategy; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; import org.jvnet.hudson.test.recipes.LocalData; -public class InheritanceMigrationTest { +@WithJenkins +class InheritanceMigrationTest { - @Rule - public JenkinsRule j = new JenkinsRule(); + private JenkinsRule j; + + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } @Test @LocalData @SuppressWarnings("deprecation") - public void testInheritanceMigration() throws Exception { - Assert.assertTrue(j.jenkins.getAuthorizationStrategy() instanceof ProjectMatrixAuthorizationStrategy); + void testInheritanceMigration() throws Exception { + assertInstanceOf(ProjectMatrixAuthorizationStrategy.class, j.jenkins.getAuthorizationStrategy()); { Folder folder = (Folder) j.jenkins.getItemByFullName("folder"); - Assert.assertNotNull(folder); + assertNotNull(folder); assertThat(folder.getConfigFile().asString(), containsString("blocksInheritance")); AuthorizationMatrixProperty prop = (folder).getProperties().get(AuthorizationMatrixProperty.class); - Assert.assertTrue(prop.isBlocksInheritance()); - Assert.assertTrue(prop.getInheritanceStrategy() instanceof NonInheritingStrategy); - Assert.assertTrue(prop.hasExplicitPermission("admin", Item.CONFIGURE)); - Assert.assertTrue(prop.hasExplicitPermission("admin", Item.READ)); - Assert.assertTrue(prop.hasExplicitPermission("admin", Item.CREATE)); - Assert.assertFalse(folder.getACL().hasPermission(User.get("alice").impersonate(), Item.READ)); - Assert.assertFalse(folder.getACL().hasPermission(User.get("bob").impersonate(), Item.READ)); + assertTrue(prop.isBlocksInheritance()); + assertInstanceOf(NonInheritingStrategy.class, prop.getInheritanceStrategy()); + assertTrue(prop.hasExplicitPermission("admin", Item.CONFIGURE)); + assertTrue(prop.hasExplicitPermission("admin", Item.READ)); + assertTrue(prop.hasExplicitPermission("admin", Item.CREATE)); + assertFalse(folder.getACL().hasPermission(User.get("alice").impersonate(), Item.READ)); + assertFalse(folder.getACL().hasPermission(User.get("bob").impersonate(), Item.READ)); folder.save(); assertThat(folder.getConfigFile().asString(), not(containsString("blocksInheritance"))); folder = (Folder) j.jenkins.getItemByFullName("folder1"); - Assert.assertNotNull(folder); + assertNotNull(folder); assertThat(folder.getConfigFile().asString(), containsString("blocksInheritance")); prop = (folder).getProperties().get(AuthorizationMatrixProperty.class); - Assert.assertTrue(prop.isBlocksInheritance()); - Assert.assertTrue(prop.getInheritanceStrategy() instanceof NonInheritingStrategy); - Assert.assertTrue(prop.hasExplicitPermission("admin", Item.CONFIGURE)); - Assert.assertFalse(prop.hasExplicitPermission("admin", Item.READ)); - Assert.assertTrue(folder.getACL() + assertTrue(prop.isBlocksInheritance()); + assertInstanceOf(NonInheritingStrategy.class, prop.getInheritanceStrategy()); + assertTrue(prop.hasExplicitPermission("admin", Item.CONFIGURE)); + assertFalse(prop.hasExplicitPermission("admin", Item.READ)); + assertTrue(folder.getACL() .hasPermission( User.get("admin").impersonate(), Item.READ)); // change from before (JENKINS-24878/JENKINS-37904) - Assert.assertTrue(folder.getACL().hasPermission(User.get("admin").impersonate(), Item.CONFIGURE)); - Assert.assertTrue(prop.hasExplicitPermission("alice", Item.CONFIGURE)); - Assert.assertTrue(prop.hasExplicitPermission("alice", Item.READ)); - Assert.assertTrue(folder.getACL().hasPermission(User.get("alice").impersonate(), Item.READ)); - Assert.assertFalse(prop.hasPermission("bob", Item.READ)); - Assert.assertFalse(folder.getACL().hasPermission(User.get("bob").impersonate(), Item.READ)); + assertTrue(folder.getACL().hasPermission(User.get("admin").impersonate(), Item.CONFIGURE)); + assertTrue(prop.hasExplicitPermission("alice", Item.CONFIGURE)); + assertTrue(prop.hasExplicitPermission("alice", Item.READ)); + assertTrue(folder.getACL().hasPermission(User.get("alice").impersonate(), Item.READ)); + assertFalse(prop.hasPermission("bob", Item.READ)); + assertFalse(folder.getACL().hasPermission(User.get("bob").impersonate(), Item.READ)); folder.save(); assertThat(folder.getConfigFile().asString(), not(containsString("blocksInheritance"))); } { Job job = (Job) j.jenkins.getItemByFullName("folder/inheritNone"); - Assert.assertNotNull(job); + assertNotNull(job); XmlFile configFile = job.getConfigFile(); assertThat("correct contents of " + configFile, configFile.asString(), containsString("blocksInheritance")); hudson.security.AuthorizationMatrixProperty prop = job.getProperty(hudson.security.AuthorizationMatrixProperty.class); - Assert.assertTrue(prop.isBlocksInheritance()); - Assert.assertEquals(0, prop.getGrantedPermissions().size()); - Assert.assertTrue(prop.getInheritanceStrategy() instanceof NonInheritingStrategy); - Assert.assertTrue(job.getACL() + assertTrue(prop.isBlocksInheritance()); + assertEquals(0, prop.getGrantedPermissions().size()); + assertInstanceOf(NonInheritingStrategy.class, prop.getInheritanceStrategy()); + assertTrue(job.getACL() .hasPermission( User.get("admin").impersonate(), Item.READ)); // change from before (JENKINS-24878/JENKINS-37904) @@ -83,15 +89,15 @@ public void testInheritanceMigration() throws Exception { assertThat(job.getConfigFile().asString(), not(containsString("blocksInheritance"))); job = (Job) j.jenkins.getItemByFullName("job"); - Assert.assertNotNull(job); + assertNotNull(job); assertThat(job.getConfigFile().asString(), containsString("blocksInheritance")); prop = job.getProperty(hudson.security.AuthorizationMatrixProperty.class); - Assert.assertFalse(prop.isBlocksInheritance()); - Assert.assertTrue(prop.getInheritanceStrategy() instanceof InheritParentStrategy); - Assert.assertTrue(job.getACL().hasPermission(User.get("bob").impersonate(), Item.READ)); - Assert.assertTrue(job.getACL().hasPermission(User.get("alice").impersonate(), Item.READ)); - Assert.assertTrue(job.getACL().hasPermission(User.get("admin").impersonate(), Item.READ)); - Assert.assertTrue(job.getACL().hasPermission(User.get("admin").impersonate(), Item.CONFIGURE)); + assertFalse(prop.isBlocksInheritance()); + assertInstanceOf(InheritParentStrategy.class, prop.getInheritanceStrategy()); + assertTrue(job.getACL().hasPermission(User.get("bob").impersonate(), Item.READ)); + assertTrue(job.getACL().hasPermission(User.get("alice").impersonate(), Item.READ)); + assertTrue(job.getACL().hasPermission(User.get("admin").impersonate(), Item.READ)); + assertTrue(job.getACL().hasPermission(User.get("admin").impersonate(), Item.CONFIGURE)); job.save(); assertThat(job.getConfigFile().asString(), not(containsString("blocksInheritance"))); } diff --git a/src/test/java/org/jenkinsci/plugins/matrixauth/integrations/casc/ExportTest.java b/src/test/java/org/jenkinsci/plugins/matrixauth/integrations/casc/ExportTest.java index c8c9ef52..5cc7b13e 100644 --- a/src/test/java/org/jenkinsci/plugins/matrixauth/integrations/casc/ExportTest.java +++ b/src/test/java/org/jenkinsci/plugins/matrixauth/integrations/casc/ExportTest.java @@ -2,8 +2,8 @@ import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile; import static io.jenkins.plugins.casc.misc.Util.toYamlString; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import hudson.model.Node; import hudson.security.ProjectMatrixAuthorizationStrategy; @@ -13,19 +13,25 @@ import io.jenkins.plugins.casc.model.CNode; import java.util.Objects; import org.jenkinsci.plugins.matrixauth.AuthorizationMatrixNodeProperty; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.junit.jupiter.WithJenkins; import org.jvnet.hudson.test.recipes.LocalData; -public class ExportTest { +@WithJenkins +class ExportTest { - @Rule - public JenkinsRule j = new JenkinsRule(); + private JenkinsRule j; + + @BeforeEach + void setUp(JenkinsRule rule) { + j = rule; + } @Test @LocalData - public void exportTestLegacy() throws Exception { + void exportTestLegacy() throws Exception { ConfiguratorRegistry registry = ConfiguratorRegistry.get(); ConfigurationContext context = new ConfigurationContext(registry); @@ -62,7 +68,7 @@ public void exportTestLegacy() throws Exception { @Test @LocalData - public void exportTest() throws Exception { + void exportTest() throws Exception { ConfiguratorRegistry registry = ConfiguratorRegistry.get(); ConfigurationContext context = new ConfigurationContext(registry); diff --git a/src/test/java/org/jenkinsci/plugins/matrixauth/integrations/casc/ImportTest.java b/src/test/java/org/jenkinsci/plugins/matrixauth/integrations/casc/ImportTest.java index 8da2a77a..9f7ce7d3 100644 --- a/src/test/java/org/jenkinsci/plugins/matrixauth/integrations/casc/ImportTest.java +++ b/src/test/java/org/jenkinsci/plugins/matrixauth/integrations/casc/ImportTest.java @@ -2,10 +2,7 @@ import static org.hamcrest.CoreMatchers.hasItems; import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.*; import com.cloudbees.hudson.plugins.folder.Folder; import com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty; @@ -26,19 +23,19 @@ import org.jenkinsci.plugins.matrixauth.PermissionEntry; import org.jenkinsci.plugins.matrixauth.inheritance.InheritGlobalStrategy; import org.jenkinsci.plugins.matrixauth.inheritance.NonInheritingStrategy; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import org.jvnet.hudson.test.JenkinsRule; -import org.jvnet.hudson.test.RealJenkinsRule; +import org.jvnet.hudson.test.junit.jupiter.RealJenkinsExtension; -public class ImportTest { +class ImportTest { - @Rule - public RealJenkinsRule rr = - new RealJenkinsRule().withLogger(MatrixAuthorizationStrategyConfigurator.class, Level.WARNING); + @RegisterExtension + private final RealJenkinsExtension rr = + new RealJenkinsExtension().withLogger(MatrixAuthorizationStrategyConfigurator.class, Level.WARNING); @Test - public void v3Test() throws Throwable { + void v3Test() throws Throwable { rr.then(ImportTest::v3TestStep); } @@ -47,45 +44,46 @@ private static void v3TestStep(JenkinsRule r) throws ConfiguratorException { .configure(Objects.requireNonNull(ImportTest.class.getResource("configuration-as-code-v3.yml")) .toExternalForm()); - assertTrue("security realm", r.jenkins.getSecurityRealm() instanceof HudsonPrivateSecurityRealm); + assertInstanceOf(HudsonPrivateSecurityRealm.class, r.jenkins.getSecurityRealm(), "security realm"); AuthorizationStrategy authorizationStrategy = r.jenkins.getAuthorizationStrategy(); - assertTrue("authorization strategy", authorizationStrategy instanceof ProjectMatrixAuthorizationStrategy); + assertInstanceOf(ProjectMatrixAuthorizationStrategy.class, authorizationStrategy, "authorization strategy"); ProjectMatrixAuthorizationStrategy projectMatrixAuthorizationStrategy = (ProjectMatrixAuthorizationStrategy) authorizationStrategy; { // global final List entries = projectMatrixAuthorizationStrategy.getAllPermissionEntries(); - assertEquals("2 real sids (we ignore anon/user)", 2, entries.size()); + assertEquals(2, entries.size(), "2 real sids (we ignore anon/user)"); assertThat( entries, hasItems( new PermissionEntry(AuthorizationType.GROUP, "authenticated"), new PermissionEntry(AuthorizationType.EITHER, "developer"))); assertTrue( - "anon can read", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.user("anonymous"), Jenkins.READ)); + PermissionEntry.user("anonymous"), Jenkins.READ), + "anon can read"); assertTrue( - "authenticated can read", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Jenkins.READ)); + PermissionEntry.group("authenticated"), Jenkins.READ), + "authenticated can read"); assertTrue( - "authenticated can build", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Item.BUILD)); + PermissionEntry.group("authenticated"), Item.BUILD), + "authenticated can build"); assertTrue( - "authenticated can delete jobs", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Item.DELETE)); + PermissionEntry.group("authenticated"), Item.DELETE), + "authenticated can delete jobs"); assertTrue( - "authenticated can administer", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Jenkins.ADMINISTER)); + PermissionEntry.group("authenticated"), Jenkins.ADMINISTER), + "authenticated can administer"); } { // item from Job DSL Folder folder = (Folder) r.jenkins.getItem("generated"); assertNotNull(folder); AuthorizationMatrixProperty property = folder.getProperties().get(AuthorizationMatrixProperty.class); - assertTrue("folder property inherits", property.getInheritanceStrategy() instanceof NonInheritingStrategy); + assertInstanceOf( + NonInheritingStrategy.class, property.getInheritanceStrategy(), "folder property inherits"); assertTrue(property.hasExplicitPermission(PermissionEntry.group("authenticated"), Item.BUILD)); assertTrue(property.hasExplicitPermission(PermissionEntry.group("authenticated"), Item.READ)); assertFalse(property.hasExplicitPermission(PermissionEntry.user("anonymous"), Item.READ)); @@ -97,21 +95,21 @@ private static void v3TestStep(JenkinsRule r) throws ConfiguratorException { assertNotNull(agent); AuthorizationMatrixNodeProperty property = agent.getNodeProperty(AuthorizationMatrixNodeProperty.class); assertNotNull(property); - assertTrue(property.getInheritanceStrategy() instanceof InheritGlobalStrategy); + assertInstanceOf(InheritGlobalStrategy.class, property.getInheritanceStrategy()); assertTrue(property.hasExplicitPermission(PermissionEntry.user("anonymous"), Computer.BUILD)); assertTrue(property.hasExplicitPermission(PermissionEntry.group("authenticated"), Computer.BUILD)); assertTrue(property.hasExplicitPermission(PermissionEntry.group("authenticated"), Computer.DISCONNECT)); } assertEquals( - "no messages", 0, Jenkins.logRecords.stream() .filter(l -> l.getLoggerName().equals(MatrixAuthorizationStrategyConfigurator.class.getName())) - .count()); + .count(), + "no messages"); } @Test - public void v2AmbiguousTest() throws Throwable { + void v2AmbiguousTest() throws Throwable { rr.then(ImportTest::v2AmbiguousTestStep); } @@ -121,84 +119,85 @@ private static void v2AmbiguousTestStep(JenkinsRule r) throws ConfiguratorExcept Objects.requireNonNull(ImportTest.class.getResource("configuration-as-code-v2-ambiguous.yml")) .toExternalForm()); - assertTrue("security realm", r.jenkins.getSecurityRealm() instanceof HudsonPrivateSecurityRealm); + assertInstanceOf(HudsonPrivateSecurityRealm.class, r.jenkins.getSecurityRealm(), "security realm"); AuthorizationStrategy authorizationStrategy = r.jenkins.getAuthorizationStrategy(); - assertTrue("authorization strategy", authorizationStrategy instanceof ProjectMatrixAuthorizationStrategy); + assertInstanceOf(ProjectMatrixAuthorizationStrategy.class, authorizationStrategy, "authorization strategy"); ProjectMatrixAuthorizationStrategy projectMatrixAuthorizationStrategy = (ProjectMatrixAuthorizationStrategy) authorizationStrategy; { // global assertEquals( - "two ambiguous sids", 2, - projectMatrixAuthorizationStrategy.getAllPermissionEntries().size()); + projectMatrixAuthorizationStrategy.getAllPermissionEntries().size(), + "two ambiguous sids"); assertThat( projectMatrixAuthorizationStrategy.getAllPermissionEntries(), hasItems( new PermissionEntry(AuthorizationType.EITHER, "anonymous"), new PermissionEntry(AuthorizationType.EITHER, "authenticated"))); assertTrue( - "anon can read", - projectMatrixAuthorizationStrategy.hasExplicitPermission("anonymous", Jenkins.READ)); + projectMatrixAuthorizationStrategy.hasExplicitPermission("anonymous", Jenkins.READ), + "anon can read"); assertTrue( - "authenticated can read", - projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Jenkins.READ)); + projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Jenkins.READ), + "authenticated can read"); assertTrue( - "authenticated can build", - projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Item.BUILD)); + projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Item.BUILD), + "authenticated can build"); assertTrue( - "authenticated can delete jobs", - projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Item.DELETE)); + projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Item.DELETE), + "authenticated can delete jobs"); assertTrue( - "authenticated can administer", - projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Jenkins.ADMINISTER)); + projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Jenkins.ADMINISTER), + "authenticated can administer"); assertFalse( - "anon (user) cannot explicitly read", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.user("anonymous"), Jenkins.READ)); + PermissionEntry.user("anonymous"), Jenkins.READ), + "anon (user) cannot explicitly read"); assertFalse( - "authenticated can read", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Jenkins.READ)); + PermissionEntry.group("authenticated"), Jenkins.READ), + "authenticated can read"); assertFalse( - "authenticated can build", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Item.BUILD)); + PermissionEntry.group("authenticated"), Item.BUILD), + "authenticated can build"); assertFalse( - "authenticated can delete jobs", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Item.DELETE)); + PermissionEntry.group("authenticated"), Item.DELETE), + "authenticated can delete jobs"); assertFalse( - "authenticated can administer", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Jenkins.ADMINISTER)); + PermissionEntry.group("authenticated"), Jenkins.ADMINISTER), + "authenticated can administer"); assertTrue( - "anon (either) can read", projectMatrixAuthorizationStrategy.hasExplicitPermission( - new PermissionEntry(AuthorizationType.EITHER, "anonymous"), Jenkins.READ)); + new PermissionEntry(AuthorizationType.EITHER, "anonymous"), Jenkins.READ), + "anon (either) can read"); assertTrue( - "authenticated (either) can read", projectMatrixAuthorizationStrategy.hasExplicitPermission( - new PermissionEntry(AuthorizationType.EITHER, "authenticated"), Jenkins.READ)); + new PermissionEntry(AuthorizationType.EITHER, "authenticated"), Jenkins.READ), + "authenticated (either) can read"); assertTrue( - "authenticated (either) can build", projectMatrixAuthorizationStrategy.hasExplicitPermission( - new PermissionEntry(AuthorizationType.EITHER, "authenticated"), Item.BUILD)); + new PermissionEntry(AuthorizationType.EITHER, "authenticated"), Item.BUILD), + "authenticated (either) can build"); assertTrue( - "authenticated (either) can delete jobs", projectMatrixAuthorizationStrategy.hasExplicitPermission( - new PermissionEntry(AuthorizationType.EITHER, "authenticated"), Item.DELETE)); + new PermissionEntry(AuthorizationType.EITHER, "authenticated"), Item.DELETE), + "authenticated (either) can delete jobs"); assertTrue( - "authenticated (either) can administer", projectMatrixAuthorizationStrategy.hasExplicitPermission( - new PermissionEntry(AuthorizationType.EITHER, "authenticated"), Jenkins.ADMINISTER)); + new PermissionEntry(AuthorizationType.EITHER, "authenticated"), Jenkins.ADMINISTER), + "authenticated (either) can administer"); } { // item from Job DSL Folder folder = (Folder) r.jenkins.getItem("generated"); assertNotNull(folder); AuthorizationMatrixProperty property = folder.getProperties().get(AuthorizationMatrixProperty.class); - assertTrue("folder property inherits", property.getInheritanceStrategy() instanceof NonInheritingStrategy); + assertInstanceOf( + NonInheritingStrategy.class, property.getInheritanceStrategy(), "folder property inherits"); assertTrue(property.hasExplicitPermission("authenticated", Item.BUILD)); assertTrue(property.hasExplicitPermission("authenticated", Item.READ)); assertFalse(property.hasExplicitPermission("anonymous", Item.READ)); @@ -210,21 +209,21 @@ private static void v2AmbiguousTestStep(JenkinsRule r) throws ConfiguratorExcept assertNotNull(agent1); AuthorizationMatrixNodeProperty property = agent1.getNodeProperty(AuthorizationMatrixNodeProperty.class); assertNotNull(property); - assertTrue(property.getInheritanceStrategy() instanceof InheritGlobalStrategy); + assertInstanceOf(InheritGlobalStrategy.class, property.getInheritanceStrategy()); assertTrue(property.hasExplicitPermission("anonymous", Computer.BUILD)); assertTrue(property.hasExplicitPermission("authenticated", Computer.BUILD)); assertTrue(property.hasExplicitPermission("authenticated", Computer.DISCONNECT)); } assertTrue( - "correct message", Jenkins.logRecords.stream() .anyMatch(l -> l.getLoggerName().equals(MatrixAuthorizationStrategyConfigurator.class.getName()) && l.getMessage() - .contains("Loading deprecated attribute 'permissions' for instance of"))); + .contains("Loading deprecated attribute 'permissions' for instance of")), + "correct message"); } @Test - public void v2Test() throws Throwable { + void v2Test() throws Throwable { rr.then(ImportTest::v2TestStep); } @@ -233,41 +232,42 @@ private static void v2TestStep(JenkinsRule r) throws ConfiguratorException { .configure(Objects.requireNonNull(ImportTest.class.getResource("configuration-as-code-v2.yml")) .toExternalForm()); - assertTrue("security realm", r.jenkins.getSecurityRealm() instanceof HudsonPrivateSecurityRealm); + assertInstanceOf(HudsonPrivateSecurityRealm.class, r.jenkins.getSecurityRealm(), "security realm"); AuthorizationStrategy authorizationStrategy = r.jenkins.getAuthorizationStrategy(); - assertTrue("authorization strategy", authorizationStrategy instanceof ProjectMatrixAuthorizationStrategy); + assertInstanceOf(ProjectMatrixAuthorizationStrategy.class, authorizationStrategy, "authorization strategy"); ProjectMatrixAuthorizationStrategy projectMatrixAuthorizationStrategy = (ProjectMatrixAuthorizationStrategy) authorizationStrategy; { // global final List entries = projectMatrixAuthorizationStrategy.getAllPermissionEntries(); - assertEquals("one real sid (we ignore anon/user)", 1, entries.size()); + assertEquals(1, entries.size(), "one real sid (we ignore anon/user)"); assertThat(entries, hasItems(new PermissionEntry(AuthorizationType.GROUP, "authenticated"))); assertTrue( - "anon can read", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.user("anonymous"), Jenkins.READ)); + PermissionEntry.user("anonymous"), Jenkins.READ), + "anon can read"); assertTrue( - "authenticated can read", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Jenkins.READ)); + PermissionEntry.group("authenticated"), Jenkins.READ), + "authenticated can read"); assertTrue( - "authenticated can build", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Item.BUILD)); + PermissionEntry.group("authenticated"), Item.BUILD), + "authenticated can build"); assertTrue( - "authenticated can delete jobs", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Item.DELETE)); + PermissionEntry.group("authenticated"), Item.DELETE), + "authenticated can delete jobs"); assertTrue( - "authenticated can administer", projectMatrixAuthorizationStrategy.hasExplicitPermission( - PermissionEntry.group("authenticated"), Jenkins.ADMINISTER)); + PermissionEntry.group("authenticated"), Jenkins.ADMINISTER), + "authenticated can administer"); } { // item from Job DSL Folder folder = (Folder) r.jenkins.getItem("generated"); assertNotNull(folder); AuthorizationMatrixProperty property = folder.getProperties().get(AuthorizationMatrixProperty.class); - assertTrue("folder property inherits", property.getInheritanceStrategy() instanceof NonInheritingStrategy); + assertInstanceOf( + NonInheritingStrategy.class, property.getInheritanceStrategy(), "folder property inherits"); assertTrue(property.hasExplicitPermission(PermissionEntry.group("authenticated"), Item.BUILD)); assertTrue(property.hasExplicitPermission(PermissionEntry.group("authenticated"), Item.READ)); assertFalse(property.hasExplicitPermission(PermissionEntry.user("anonymous"), Item.READ)); @@ -279,21 +279,21 @@ private static void v2TestStep(JenkinsRule r) throws ConfiguratorException { assertNotNull(agent); AuthorizationMatrixNodeProperty property = agent.getNodeProperty(AuthorizationMatrixNodeProperty.class); assertNotNull(property); - assertTrue(property.getInheritanceStrategy() instanceof InheritGlobalStrategy); + assertInstanceOf(InheritGlobalStrategy.class, property.getInheritanceStrategy()); assertTrue(property.hasExplicitPermission(PermissionEntry.user("anonymous"), Computer.BUILD)); assertTrue(property.hasExplicitPermission(PermissionEntry.group("authenticated"), Computer.BUILD)); assertTrue(property.hasExplicitPermission(PermissionEntry.group("authenticated"), Computer.DISCONNECT)); } assertTrue( - "correct message", Jenkins.logRecords.stream() .anyMatch(l -> l.getLoggerName().equals(MatrixAuthorizationStrategyConfigurator.class.getName()) && l.getMessage() - .contains("Loading deprecated attribute 'permissions' for instance of"))); + .contains("Loading deprecated attribute 'permissions' for instance of")), + "correct message"); } @Test - public void v1Test() throws Throwable { + void v1Test() throws Throwable { rr.then(ImportTest::v1TestStep); } @@ -302,45 +302,47 @@ private static void v1TestStep(JenkinsRule r) throws ConfiguratorException { .configure(Objects.requireNonNull(ImportTest.class.getResource("configuration-as-code-v1.yml")) .toExternalForm()); - assertTrue("security realm", r.jenkins.getSecurityRealm() instanceof HudsonPrivateSecurityRealm); + assertInstanceOf(HudsonPrivateSecurityRealm.class, r.jenkins.getSecurityRealm(), "security realm"); AuthorizationStrategy authorizationStrategy = r.jenkins.getAuthorizationStrategy(); - assertTrue("authorization strategy", authorizationStrategy instanceof ProjectMatrixAuthorizationStrategy); + assertInstanceOf(ProjectMatrixAuthorizationStrategy.class, authorizationStrategy, "authorization strategy"); ProjectMatrixAuthorizationStrategy projectMatrixAuthorizationStrategy = (ProjectMatrixAuthorizationStrategy) authorizationStrategy; { // global assertEquals( - "two ambiguous sids", 2, - projectMatrixAuthorizationStrategy.getAllPermissionEntries().size()); + projectMatrixAuthorizationStrategy.getAllPermissionEntries().size(), + "two ambiguous sids"); assertThat( projectMatrixAuthorizationStrategy.getAllPermissionEntries(), hasItems( new PermissionEntry(AuthorizationType.EITHER, "anonymous"), new PermissionEntry(AuthorizationType.EITHER, "authenticated"))); assertTrue( - "anon can read", - projectMatrixAuthorizationStrategy.hasExplicitPermission("anonymous", Jenkins.READ)); + projectMatrixAuthorizationStrategy.hasExplicitPermission("anonymous", Jenkins.READ), + "anon can read"); assertTrue( - "authenticated can read", - projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Jenkins.READ)); + projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Jenkins.READ), + "authenticated can read"); assertTrue( - "authenticated can build", - projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Item.BUILD)); + projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Item.BUILD), + "authenticated can build"); assertTrue( - "authenticated can delete jobs", - projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Item.DELETE)); + projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Item.DELETE), + "authenticated can delete jobs"); assertTrue( - "authenticated can administer", - projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Jenkins.ADMINISTER)); + projectMatrixAuthorizationStrategy.hasExplicitPermission("authenticated", Jenkins.ADMINISTER), + "authenticated can administer"); } - assertTrue("at least one warning", Jenkins.logRecords.stream().anyMatch(l -> l.getLoggerName() - .equals(MatrixAuthorizationStrategyConfigurator.class.getName()))); assertTrue( - "correct message", + Jenkins.logRecords.stream().anyMatch(l -> l.getLoggerName() + .equals(MatrixAuthorizationStrategyConfigurator.class.getName())), + "at least one warning"); + assertTrue( Jenkins.logRecords.stream() .anyMatch(l -> l.getLoggerName().equals(MatrixAuthorizationStrategyConfigurator.class.getName()) && l.getMessage() - .contains("Loading deprecated attribute 'grantedPermissions' for instance"))); + .contains("Loading deprecated attribute 'grantedPermissions' for instance")), + "correct message"); } }