From d989d73278a8e0434fee3f940a26b6c657859965 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Dec 2023 22:47:37 +0000 Subject: [PATCH 1/2] Bump org.jenkins-ci.main:jenkins-test-harness Bumps [org.jenkins-ci.main:jenkins-test-harness](https://github.com/jenkinsci/jenkins-test-harness) from 2135.v8f2e9795cf3f to 2137.vb_4eb_49f51c4b_. - [Release notes](https://github.com/jenkinsci/jenkins-test-harness/releases) - [Changelog](https://github.com/jenkinsci/jenkins-test-harness/blob/master/docs/CHANGELOG-OLD.md) - [Commits](https://github.com/jenkinsci/jenkins-test-harness/commits) --- updated-dependencies: - dependency-name: org.jenkins-ci.main:jenkins-test-harness dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- test/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/pom.xml b/test/pom.xml index 71d4556b7162..dac1f5262364 100644 --- a/test/pom.xml +++ b/test/pom.xml @@ -131,7 +131,7 @@ THE SOFTWARE. ${project.groupId} jenkins-test-harness - 2135.v8f2e9795cf3f + 2137.vb_4eb_49f51c4b_ test From cdcfe702459a3995bf9cd52bd9c2a9ba04142f29 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Wed, 13 Dec 2023 14:59:24 -0800 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=92=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/src/test/java/hudson/model/NodeTest.java | 3 +- .../src/test/java/hudson/model/QueueTest.java | 4 +- .../java/hudson/tasks/BuildTriggerTest.java | 4 +- .../triggers/ReverseBuildTriggerTest.java | 57 ++++++++++--------- 4 files changed, 35 insertions(+), 33 deletions(-) diff --git a/test/src/test/java/hudson/model/NodeTest.java b/test/src/test/java/hudson/model/NodeTest.java index 7523f52c51a9..39ffe25f7643 100644 --- a/test/src/test/java/hudson/model/NodeTest.java +++ b/test/src/test/java/hudson/model/NodeTest.java @@ -58,7 +58,6 @@ import java.util.Collection; import java.util.GregorianCalendar; import java.util.List; -import java.util.Map; import jenkins.model.Jenkins; import jenkins.security.QueueItemAuthenticatorConfiguration; import org.htmlunit.HttpMethod; @@ -222,7 +221,7 @@ public void testCanTake() throws Exception { j.jenkins.setSecurityRealm(realm); realm.createAccount("John", ""); notTake = false; - QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator(Map.of(project.getFullName(), user.impersonate2()))); + QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator().authenticate(project.getFullName(), user.impersonate2())); assertNotNull("Node should not take project because user does not have build permission.", node.canTake(item)); message = Messages._Node_LackingBuildPermission(item.authenticate2().getName(), node.getNodeName()).toString(); assertEquals("Cause of blockage should be build permission label.", message, node.canTake(item).getShortDescription()); diff --git a/test/src/test/java/hudson/model/QueueTest.java b/test/src/test/java/hudson/model/QueueTest.java index bd46fc333e30..5e52bf6416d5 100644 --- a/test/src/test/java/hudson/model/QueueTest.java +++ b/test/src/test/java/hudson/model/QueueTest.java @@ -819,7 +819,7 @@ public boolean perform(AbstractBuild build, Launcher launcher, BuildListen */ @Test public void accessControl() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); - QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator(Map.of(p.getFullName(), alice))); + QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator().authenticate(p.getFullName(), alice)); p.getBuildersList().add(new TestBuilder() { @Override public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) { @@ -845,7 +845,7 @@ public boolean perform(AbstractBuild build, Launcher launcher, BuildListen DumbSlave s2 = r.createSlave(); FreeStyleProject p = r.createFreeStyleProject(); - QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator(Map.of(p.getFullName(), alice))); + QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator().authenticate(p.getFullName(), alice)); p.getBuildersList().add(new TestBuilder() { @Override public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) { diff --git a/test/src/test/java/hudson/tasks/BuildTriggerTest.java b/test/src/test/java/hudson/tasks/BuildTriggerTest.java index b8038afceebe..aa4569d104a6 100644 --- a/test/src/test/java/hudson/tasks/BuildTriggerTest.java +++ b/test/src/test/java/hudson/tasks/BuildTriggerTest.java @@ -152,7 +152,7 @@ public void downstreamProjectSecurity() throws Exception { j.jenkins.setAuthorizationStrategy(auth); final FreeStyleProject upstream = j. createFreeStyleProject("upstream"); Authentication alice = User.getOrCreateByIdOrFullName("alice").impersonate2(); - QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator(Map.of("upstream", alice))); + QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator().authenticate("upstream", alice)); Map> perms = new HashMap<>(); perms.put(Item.READ, Set.of("alice")); perms.put(Item.CONFIGURE, Set.of("alice")); @@ -207,7 +207,7 @@ public void downstreamProjectSecurity() throws Exception { assertNotNull(cause); assertEquals(b, cause.getUpstreamRun()); // Now if we have configured some QIA’s but they are not active on this job, we should normally fall back to running as anonymous. Which would normally have no permissions: - QueueItemAuthenticatorConfiguration.get().getAuthenticators().replace(new MockQueueItemAuthenticator(Map.of("upstream", Jenkins.ANONYMOUS2))); + QueueItemAuthenticatorConfiguration.get().getAuthenticators().replace(new MockQueueItemAuthenticator().authenticate("upstream", Jenkins.ANONYMOUS2)); assertDoCheck(alice, Messages.BuildTrigger_you_have_no_permission_to_build_(downstreamName), upstream, downstreamName); assertDoCheck(alice, null, null, downstreamName); b = j.buildAndAssertSuccess(upstream); diff --git a/test/src/test/java/jenkins/triggers/ReverseBuildTriggerTest.java b/test/src/test/java/jenkins/triggers/ReverseBuildTriggerTest.java index 22dc81086364..a8b9022b03a1 100644 --- a/test/src/test/java/jenkins/triggers/ReverseBuildTriggerTest.java +++ b/test/src/test/java/jenkins/triggers/ReverseBuildTriggerTest.java @@ -42,9 +42,7 @@ import hudson.tasks.BuildTrigger; import hudson.tasks.BuildTriggerTest; import hudson.triggers.Trigger; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Set; import jenkins.model.Jenkins; import jenkins.security.QueueItemAuthenticatorConfiguration; @@ -57,7 +55,6 @@ import org.jvnet.hudson.test.JenkinsRule; import org.jvnet.hudson.test.MockAuthorizationStrategy; import org.jvnet.hudson.test.MockQueueItemAuthenticator; -import org.springframework.security.core.Authentication; public class ReverseBuildTriggerTest { @@ -116,40 +113,44 @@ public void runMoreQuickly() throws Exception { assertNotNull(JenkinsRule.getLog(b), downstream.getLastBuild()); assertEquals(1, downstream.getLastBuild().number); // A QIA is configured but does not specify any authentication for downstream, so upstream should not trigger it: - Map qiaConfig = new HashMap<>(); - qiaConfig.put(upstreamName, User.get("admin").impersonate2()); - qiaConfig.put(downstreamName, Jenkins.ANONYMOUS2); - QueueItemAuthenticatorConfiguration.get().getAuthenticators().add(new MockQueueItemAuthenticator(qiaConfig)); + QueueItemAuthenticatorConfiguration.get() + .getAuthenticators() + .add(new MockQueueItemAuthenticator() + .authenticate(upstreamName, User.get("admin").impersonate2()) + .authenticate(downstreamName, Jenkins.ANONYMOUS2)); b = r.buildAndAssertSuccess(upstream); r.assertLogContains(downstreamName, b); r.assertLogContains(Messages.ReverseBuildTrigger_running_as_cannot_even_see_for_trigger_f("anonymous", upstreamName, downstreamName), b); r.waitUntilNoActivity(); assertEquals(1, downstream.getLastBuild().number); // Auth for upstream is defined but cannot see downstream, so no message is printed about it: - qiaConfig = new HashMap<>(); - qiaConfig.put(upstreamName, User.get("bob").impersonate2()); - qiaConfig.put(downstreamName, Jenkins.ANONYMOUS2); - QueueItemAuthenticatorConfiguration.get().getAuthenticators().replace(new MockQueueItemAuthenticator(qiaConfig)); + QueueItemAuthenticatorConfiguration.get() + .getAuthenticators() + .replace(new MockQueueItemAuthenticator() + .authenticate(upstreamName, User.get("bob").impersonate2()) + .authenticate(downstreamName, Jenkins.ANONYMOUS2)); b = r.buildAndAssertSuccess(upstream); r.assertLogNotContains(downstreamName, b); r.waitUntilNoActivity(); assertEquals(1, downstream.getLastBuild().number); // Alice can see upstream, so downstream gets built, but the upstream build cannot see downstream: auth.grant(Item.READ).onItems(upstream).to("alice", "bob"); - qiaConfig = new HashMap<>(); - qiaConfig.put(upstreamName, User.get("bob").impersonate2()); - qiaConfig.put(downstreamName, User.get("alice").impersonate2()); - QueueItemAuthenticatorConfiguration.get().getAuthenticators().replace(new MockQueueItemAuthenticator(qiaConfig)); + QueueItemAuthenticatorConfiguration.get() + .getAuthenticators() + .replace(new MockQueueItemAuthenticator() + .authenticate(upstreamName, User.get("bob").impersonate2()) + .authenticate(downstreamName, User.get("alice").impersonate2())); b = r.buildAndAssertSuccess(upstream); r.assertLogNotContains(downstreamName, b); r.waitUntilNoActivity(); assertEquals(2, downstream.getLastBuild().number); assertEquals(new Cause.UpstreamCause((Run) b), downstream.getLastBuild().getCause(Cause.UpstreamCause.class)); // Now if upstream build is permitted to report on downstream: - qiaConfig = new HashMap<>(); - qiaConfig.put(upstreamName, User.get("admin").impersonate2()); - qiaConfig.put(downstreamName, User.get("alice").impersonate2()); - QueueItemAuthenticatorConfiguration.get().getAuthenticators().replace(new MockQueueItemAuthenticator(qiaConfig)); + QueueItemAuthenticatorConfiguration.get() + .getAuthenticators() + .replace(new MockQueueItemAuthenticator() + .authenticate(upstreamName, User.get("admin").impersonate2()) + .authenticate(downstreamName, User.get("alice").impersonate2())); b = r.buildAndAssertSuccess(upstream); r.assertLogContains(downstreamName, b); r.waitUntilNoActivity(); @@ -165,10 +166,11 @@ public void runMoreQuickly() throws Exception { .grant(Item.DISCOVER).onItems(upstream).to("alice"); r.jenkins.setAuthorizationStrategy(auth); auth.grant(Item.READ).onItems(downstream).to("alice"); - qiaConfig = new HashMap<>(); - qiaConfig.put(upstreamName, User.get("bob").impersonate2()); - qiaConfig.put(downstreamName, User.get("alice").impersonate2()); - QueueItemAuthenticatorConfiguration.get().getAuthenticators().replace(new MockQueueItemAuthenticator(qiaConfig)); + QueueItemAuthenticatorConfiguration.get() + .getAuthenticators() + .replace(new MockQueueItemAuthenticator() + .authenticate(upstreamName, User.get("bob").impersonate2()) + .authenticate(downstreamName, User.get("alice").impersonate2())); b = r.buildAndAssertSuccess(upstream); r.assertLogNotContains(downstreamName, b); r.waitUntilNoActivity(); @@ -178,10 +180,11 @@ public void runMoreQuickly() throws Exception { // so no message is printed about it, and no Exception neither (JENKINS-42707) auth.grant(Item.READ).onItems(upstream).to("bob"); auth.grant(Item.DISCOVER).onItems(upstream).to("anonymous"); - qiaConfig = new HashMap<>(); - qiaConfig.put(upstreamName, User.get("bob").impersonate2()); - qiaConfig.put(downstreamName, Jenkins.ANONYMOUS2); - QueueItemAuthenticatorConfiguration.get().getAuthenticators().replace(new MockQueueItemAuthenticator(qiaConfig)); + QueueItemAuthenticatorConfiguration.get() + .getAuthenticators() + .replace(new MockQueueItemAuthenticator() + .authenticate(upstreamName, User.get("bob").impersonate2()) + .authenticate(downstreamName, Jenkins.ANONYMOUS2)); b = r.buildAndAssertSuccess(upstream); r.assertLogNotContains(downstreamName, b); r.assertLogNotContains("Please login to access job " + upstreamName, b);