From 93c026b7afdd3ccdab73a5b2a56efc836bf9851e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 May 2021 15:40:26 +0000 Subject: [PATCH 1/7] Chore(deps-dev): Bump mockito-core from 3.9.0 to 3.10.0 Bumps [mockito-core](https://github.com/mockito/mockito) from 3.9.0 to 3.10.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v3.9.0...v3.10.0) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c5e5a6dec..328464b74 100644 --- a/pom.xml +++ b/pom.xml @@ -525,7 +525,7 @@ org.mockito mockito-core - 3.9.0 + 3.10.0 test From 1c920dee069ead9bcced733b0327de955ebf70b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 May 2021 07:05:02 +0000 Subject: [PATCH 2/7] Chore(deps): Bump bridge-method-annotation from 1.18 to 1.21 Bumps [bridge-method-annotation](https://github.com/infradna/bridge-method-injector) from 1.18 to 1.21. - [Release notes](https://github.com/infradna/bridge-method-injector/releases) - [Commits](https://github.com/infradna/bridge-method-injector/compare/bridge-method-injector-parent-1.18...bridge-method-injector-parent-1.21) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 790eaddc7..44efcf160 100644 --- a/pom.xml +++ b/pom.xml @@ -436,7 +436,7 @@ com.infradna.tool bridge-method-annotation - 1.18 + 1.21 true From e34d33f1cd34706114d98b393fbfa66d715988c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 May 2021 07:05:30 +0000 Subject: [PATCH 3/7] Chore(deps): Bump maven-javadoc-plugin from 3.2.0 to 3.3.0 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.2.0 to 3.3.0. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.2.0...maven-javadoc-plugin-3.3.0) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 790eaddc7..c96507f49 100644 --- a/pom.xml +++ b/pom.xml @@ -206,7 +206,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.3.0 8 true From 80e17109de71a1536e1ae01c144350a10d7200ac Mon Sep 17 00:00:00 2001 From: Liam Newman Date: Thu, 27 May 2021 02:54:01 -0700 Subject: [PATCH 4/7] Fix withCredetials() to correctly detect missing creds Fixes #1155 --- .../org/kohsuke/github/GitHubBuilder.java | 4 +- .../kohsuke/github/GitHubConnectionTest.java | 62 +++++++++++++++++++ 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GitHubBuilder.java b/src/main/java/org/kohsuke/github/GitHubBuilder.java index 94ba46a0e..a5372af02 100644 --- a/src/main/java/org/kohsuke/github/GitHubBuilder.java +++ b/src/main/java/org/kohsuke/github/GitHubBuilder.java @@ -60,13 +60,13 @@ public class GitHubBuilder implements Cloneable { builder = fromEnvironment(); - if (builder.authorizationProvider != null) + if (builder.authorizationProvider != AuthorizationProvider.ANONYMOUS) return builder; try { builder = fromPropertyFile(); - if (builder.authorizationProvider != null) + if (builder.authorizationProvider != AuthorizationProvider.ANONYMOUS) return builder; } catch (FileNotFoundException e) { // fall through diff --git a/src/test/java/org/kohsuke/github/GitHubConnectionTest.java b/src/test/java/org/kohsuke/github/GitHubConnectionTest.java index 852b64e39..1c554d08b 100644 --- a/src/test/java/org/kohsuke/github/GitHubConnectionTest.java +++ b/src/test/java/org/kohsuke/github/GitHubConnectionTest.java @@ -2,6 +2,7 @@ package org.kohsuke.github; import org.junit.Assume; import org.junit.Test; +import org.kohsuke.github.authorization.AuthorizationProvider; import org.kohsuke.github.authorization.UserAuthorizationProvider; import java.io.IOException; @@ -137,6 +138,67 @@ public class GitHubConnectionTest extends AbstractGitHubWireMockTest { assertThat(((UserAuthorizationProvider) builder.authorizationProvider).getLogin(), equalTo("bogus login")); } + @Test + public void testGitHubBuilderFromCredentials() throws IOException { + // we disable this test for JDK 16+ as the current hacks in setupEnvironment() don't work with JDK 16+ + Assume.assumeThat(Double.valueOf(System.getProperty("java.specification.version")), lessThan(16.0)); + + Map props = new HashMap(); + + props.put("endpoint", "bogus endpoint url"); + props.put("oauth", "bogus oauth token string"); + setupEnvironment(props); + GitHubBuilder builder = GitHubBuilder.fromCredentials(); + + assertThat(builder.endpoint, equalTo("bogus endpoint url")); + + assertThat(builder.authorizationProvider, instanceOf(UserAuthorizationProvider.class)); + assertThat(builder.authorizationProvider.getEncodedAuthorization(), equalTo("token bogus oauth token string")); + assertThat(((UserAuthorizationProvider) builder.authorizationProvider).getLogin(), nullValue()); + + props.put("login", "bogus login"); + setupEnvironment(props); + builder = GitHubBuilder.fromCredentials(); + + assertThat(builder.authorizationProvider, instanceOf(UserAuthorizationProvider.class)); + assertThat(builder.authorizationProvider.getEncodedAuthorization(), equalTo("token bogus oauth token string")); + assertThat(((UserAuthorizationProvider) builder.authorizationProvider).getLogin(), equalTo("bogus login")); + + props.put("jwt", "bogus jwt token string"); + setupEnvironment(props); + builder = GitHubBuilder.fromCredentials(); + + assertThat(builder.authorizationProvider, not(instanceOf(UserAuthorizationProvider.class))); + assertThat(builder.authorizationProvider.getEncodedAuthorization(), equalTo("Bearer bogus jwt token string")); + + props.put("password", "bogus weak password"); + setupEnvironment(props); + builder = GitHubBuilder.fromCredentials(); + + assertThat(builder.authorizationProvider, instanceOf(UserAuthorizationProvider.class)); + assertThat(builder.authorizationProvider.getEncodedAuthorization(), + equalTo("Basic Ym9ndXMgbG9naW46Ym9ndXMgd2VhayBwYXNzd29yZA==")); + assertThat(((UserAuthorizationProvider) builder.authorizationProvider).getLogin(), equalTo("bogus login")); + } + + @Test + public void testAnonymous() throws IOException { + // we disable this test for JDK 16+ as the current hacks in setupEnvironment() don't work with JDK 16+ + Assume.assumeThat(Double.valueOf(System.getProperty("java.specification.version")), lessThan(16.0)); + + Map props = new HashMap(); + + props.put("endpoint", mockGitHub.apiServer().baseUrl()); + setupEnvironment(props); + + // No values present except endpoint + GitHubBuilder builder = GitHubBuilder + .fromEnvironment("customLogin", "customPassword", "customOauth", "endpoint"); + + assertThat(builder.endpoint, equalTo(mockGitHub.apiServer().baseUrl())); + assertThat(builder.authorizationProvider, sameInstance(AuthorizationProvider.ANONYMOUS)); + } + @Test public void testGithubBuilderWithAppInstallationToken() throws Exception { From 4dcc479d480ca09614f9e619f60639b154fe1601 Mon Sep 17 00:00:00 2001 From: Liam Newman Date: Thu, 27 May 2021 04:00:18 -0700 Subject: [PATCH 5/7] Add properties test --- .../org/kohsuke/github/GitHubBuilder.java | 5 +- .../kohsuke/github/GitHubConnectionTest.java | 82 ++++++++++++++++++- 2 files changed, 85 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GitHubBuilder.java b/src/main/java/org/kohsuke/github/GitHubBuilder.java index a5372af02..80960b979 100644 --- a/src/main/java/org/kohsuke/github/GitHubBuilder.java +++ b/src/main/java/org/kohsuke/github/GitHubBuilder.java @@ -24,6 +24,9 @@ import javax.annotation.Nonnull; */ public class GitHubBuilder implements Cloneable { + // for testing + static File HOME_DIRECTORY = null; + // default scoped so unit tests can read them. /* private */ String endpoint = GitHubClient.GITHUB_URL; @@ -178,7 +181,7 @@ public class GitHubBuilder implements Cloneable { * the io exception */ public static GitHubBuilder fromPropertyFile() throws IOException { - File homeDir = new File(System.getProperty("user.home")); + File homeDir = HOME_DIRECTORY != null ? HOME_DIRECTORY : new File(System.getProperty("user.home")); File propertyFile = new File(homeDir, ".github"); return fromPropertyFile(propertyFile.getPath()); } diff --git a/src/test/java/org/kohsuke/github/GitHubConnectionTest.java b/src/test/java/org/kohsuke/github/GitHubConnectionTest.java index 1c554d08b..832758210 100644 --- a/src/test/java/org/kohsuke/github/GitHubConnectionTest.java +++ b/src/test/java/org/kohsuke/github/GitHubConnectionTest.java @@ -5,11 +5,14 @@ import org.junit.Test; import org.kohsuke.github.authorization.AuthorizationProvider; import org.kohsuke.github.authorization.UserAuthorizationProvider; +import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.Field; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Properties; import static org.hamcrest.Matchers.*; @@ -139,7 +142,7 @@ public class GitHubConnectionTest extends AbstractGitHubWireMockTest { } @Test - public void testGitHubBuilderFromCredentials() throws IOException { + public void testGitHubBuilderFromCredentialsWithEnvironment() throws IOException { // we disable this test for JDK 16+ as the current hacks in setupEnvironment() don't work with JDK 16+ Assume.assumeThat(Double.valueOf(System.getProperty("java.specification.version")), lessThan(16.0)); @@ -181,6 +184,83 @@ public class GitHubConnectionTest extends AbstractGitHubWireMockTest { assertThat(((UserAuthorizationProvider) builder.authorizationProvider).getLogin(), equalTo("bogus login")); } + @Test + public void testGitHubBuilderFromCredentialsWithPropertyFile() throws IOException { + // we disable this test for JDK 16+ as the current hacks in setupEnvironment() don't work with JDK 16+ + Assume.assumeThat(Double.valueOf(System.getProperty("java.specification.version")), lessThan(16.0)); + + Map props = new HashMap(); + + // Clear the environment + setupEnvironment(props); + GitHubBuilder.HOME_DIRECTORY = new File(getTestDirectory()); + try { + try { + GitHubBuilder builder = GitHubBuilder.fromCredentials(); + fail(); + } catch (Exception e) { + assertThat(e, instanceOf(IOException.class)); + assertThat(e.getMessage(), equalTo("Failed to resolve credentials from ~/.github or the environment.")); + } + + props = new HashMap(); + + props.put("endpoint", "bogus endpoint url"); + props.put("oauth", "bogus oauth token string"); + + setupPropertyFile(props); + + GitHubBuilder builder = GitHubBuilder.fromCredentials(); + + assertThat(builder.endpoint, equalTo("bogus endpoint url")); + + assertThat(builder.authorizationProvider, instanceOf(UserAuthorizationProvider.class)); + assertThat(builder.authorizationProvider.getEncodedAuthorization(), + equalTo("token bogus oauth token string")); + assertThat(((UserAuthorizationProvider) builder.authorizationProvider).getLogin(), nullValue()); + + props.put("login", "bogus login"); + setupPropertyFile(props); + builder = GitHubBuilder.fromCredentials(); + + assertThat(builder.authorizationProvider, instanceOf(UserAuthorizationProvider.class)); + assertThat(builder.authorizationProvider.getEncodedAuthorization(), + equalTo("token bogus oauth token string")); + assertThat(((UserAuthorizationProvider) builder.authorizationProvider).getLogin(), equalTo("bogus login")); + + props.put("jwt", "bogus jwt token string"); + setupPropertyFile(props); + builder = GitHubBuilder.fromCredentials(); + + assertThat(builder.authorizationProvider, not(instanceOf(UserAuthorizationProvider.class))); + assertThat(builder.authorizationProvider.getEncodedAuthorization(), + equalTo("Bearer bogus jwt token string")); + + props.put("password", "bogus weak password"); + setupPropertyFile(props); + builder = GitHubBuilder.fromCredentials(); + + assertThat(builder.authorizationProvider, instanceOf(UserAuthorizationProvider.class)); + assertThat(builder.authorizationProvider.getEncodedAuthorization(), + equalTo("Basic Ym9ndXMgbG9naW46Ym9ndXMgd2VhayBwYXNzd29yZA==")); + assertThat(((UserAuthorizationProvider) builder.authorizationProvider).getLogin(), equalTo("bogus login")); + } finally { + File propertyFile = new File(getTestDirectory(), ".github"); + propertyFile.delete(); + } + } + + private void setupPropertyFile(Map props) throws IOException { + File propertyFile = new File(getTestDirectory(), ".github"); + Properties properties = new Properties(); + properties.putAll(props); + properties.store(new FileOutputStream(propertyFile), ""); + } + + private String getTestDirectory() { + return new File("target").getAbsolutePath(); + } + @Test public void testAnonymous() throws IOException { // we disable this test for JDK 16+ as the current hacks in setupEnvironment() don't work with JDK 16+ From 0e02444c0750d5a78f73d2d2b068d093f448ff0f Mon Sep 17 00:00:00 2001 From: Liam Newman Date: Thu, 27 May 2021 04:16:51 -0700 Subject: [PATCH 6/7] Environmentment tests do not work on windows --- src/test/java/org/kohsuke/github/GitHubConnectionTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/kohsuke/github/GitHubConnectionTest.java b/src/test/java/org/kohsuke/github/GitHubConnectionTest.java index 832758210..5e96cc280 100644 --- a/src/test/java/org/kohsuke/github/GitHubConnectionTest.java +++ b/src/test/java/org/kohsuke/github/GitHubConnectionTest.java @@ -1,5 +1,6 @@ package org.kohsuke.github; +import org.apache.commons.lang3.SystemUtils; import org.junit.Assume; import org.junit.Test; import org.kohsuke.github.authorization.AuthorizationProvider; @@ -145,6 +146,7 @@ public class GitHubConnectionTest extends AbstractGitHubWireMockTest { public void testGitHubBuilderFromCredentialsWithEnvironment() throws IOException { // we disable this test for JDK 16+ as the current hacks in setupEnvironment() don't work with JDK 16+ Assume.assumeThat(Double.valueOf(System.getProperty("java.specification.version")), lessThan(16.0)); + Assume.assumeFalse(SystemUtils.IS_OS_WINDOWS); Map props = new HashMap(); @@ -188,13 +190,14 @@ public class GitHubConnectionTest extends AbstractGitHubWireMockTest { public void testGitHubBuilderFromCredentialsWithPropertyFile() throws IOException { // we disable this test for JDK 16+ as the current hacks in setupEnvironment() don't work with JDK 16+ Assume.assumeThat(Double.valueOf(System.getProperty("java.specification.version")), lessThan(16.0)); + Assume.assumeFalse(SystemUtils.IS_OS_WINDOWS); Map props = new HashMap(); // Clear the environment setupEnvironment(props); - GitHubBuilder.HOME_DIRECTORY = new File(getTestDirectory()); try { + GitHubBuilder.HOME_DIRECTORY = new File(getTestDirectory()); try { GitHubBuilder builder = GitHubBuilder.fromCredentials(); fail(); @@ -245,6 +248,7 @@ public class GitHubConnectionTest extends AbstractGitHubWireMockTest { equalTo("Basic Ym9ndXMgbG9naW46Ym9ndXMgd2VhayBwYXNzd29yZA==")); assertThat(((UserAuthorizationProvider) builder.authorizationProvider).getLogin(), equalTo("bogus login")); } finally { + GitHubBuilder.HOME_DIRECTORY = null; File propertyFile = new File(getTestDirectory(), ".github"); propertyFile.delete(); } From 7d8335423db3c6870314a138793290f8cd796503 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 May 2021 11:24:26 +0000 Subject: [PATCH 7/7] Chore(deps-dev): Bump wiremock-jre8-standalone from 2.27.2 to 2.28.0 Bumps [wiremock-jre8-standalone](https://github.com/tomakehurst/wiremock) from 2.27.2 to 2.28.0. - [Release notes](https://github.com/tomakehurst/wiremock/releases) - [Commits](https://github.com/tomakehurst/wiremock/compare/2.27.2...2.28.0) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e60c535aa..94cf80a60 100644 --- a/pom.xml +++ b/pom.xml @@ -537,7 +537,7 @@ com.github.tomakehurst wiremock-jre8-standalone - 2.27.2 + 2.28.0 test