From b722786ea79d07927e4191d1b014b65cf747f699 Mon Sep 17 00:00:00 2001 From: Vincent Latombe Date: Fri, 2 Sep 2022 13:00:14 +0200 Subject: [PATCH] Fix LiveTest (#264) Since https://github.com/jenkinsci/jenkins-test-harness/pull/475 & https://github.com/jenkinsci/jenkins-test-harness/pull/348, you need to call RealJenkinsRule#getUrl after starting Jenkins. --- .../org/jenkinsci/plugins/saml/LiveTest.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/test/java/org/jenkinsci/plugins/saml/LiveTest.java b/src/test/java/org/jenkinsci/plugins/saml/LiveTest.java index 31b1b602..51f83b34 100644 --- a/src/test/java/org/jenkinsci/plugins/saml/LiveTest.java +++ b/src/test/java/org/jenkinsci/plugins/saml/LiveTest.java @@ -67,10 +67,9 @@ public class LiveTest { @Test public void authenticationOK() throws Throwable { - startSimpleSAML(rr.getUrl().toString()); - String idpMetadata = readIdPMetadataFromURL(); - rr.then(new AuthenticationOK(idpMetadata)); + then(() -> new AuthenticationOK(readIdPMetadataFromURL())); } + private static class AuthenticationOK implements RealJenkinsRule.Step { private final String idpMetadata; AuthenticationOK(String idpMetadata) { @@ -87,9 +86,7 @@ public void run(JenkinsRule r) throws Throwable { @Test public void authenticationOKFromURL() throws Throwable { - startSimpleSAML(rr.getUrl().toString()); - String idpMetadataUrl = createIdPMetadataURL(); - rr.then(new AuthenticationOKFromURL(idpMetadataUrl)); + then(() -> new AuthenticationOKFromURL(createIdPMetadataURL())); } private static class AuthenticationOKFromURL implements RealJenkinsRule.Step { private final String idpMetadataUrl; @@ -109,9 +106,7 @@ public void run(JenkinsRule r) throws Throwable { @Test public void authenticationOKPostBinding() throws Throwable { - startSimpleSAML(rr.getUrl().toString()); - String idpMetadata = readIdPMetadataFromURL(); - rr.then(new AuthenticationOKPostBinding(idpMetadata)); + then(() -> new AuthenticationOKPostBinding(readIdPMetadataFromURL())); } private static class AuthenticationOKPostBinding implements RealJenkinsRule.Step { private final String idpMetadata; @@ -129,9 +124,7 @@ public void run(JenkinsRule r) throws Throwable { @Test public void authenticationFail() throws Throwable { - startSimpleSAML(rr.getUrl().toString()); - String idpMetadata = readIdPMetadataFromURL(); - rr.then(new AuthenticationFail(idpMetadata)); + then(() -> new AuthenticationFail(readIdPMetadataFromURL())); } private static class AuthenticationFail implements RealJenkinsRule.Step { private final String idpMetadata; @@ -164,6 +157,21 @@ private String createIdPMetadataURL() { return "http://" + samlContainer.getHost() + ":" + samlContainer.getFirstMappedPort() + "/simplesaml/saml2/idp/metadata.php"; } + @FunctionalInterface + private interface SupplierWithIO { + T get() throws IOException; + } + + private void then(SupplierWithIO provider) throws Throwable { + rr.startJenkins(); + try { + startSimpleSAML(rr.getUrl().toString()); + rr.runRemotely(provider.get()); + } finally { + rr.stopJenkins(); + } + } + private static void configureAuthorization() { Jenkins.get().setAuthorizationStrategy(new MockAuthorizationStrategy(). grant(Jenkins.ADMINISTER).everywhere().to("group1").