From d81c9250dc8c784961a06b8a8ba127f1209f4dc4 Mon Sep 17 00:00:00 2001 From: Don Laidlaw Date: Fri, 27 Jan 2017 15:20:31 +0000 Subject: [PATCH] Update package to match directory Missed a merge commit for AWS CodeCommit support --- .../MultipleJGitEnvironmentRepository.java | 12 ++++++--- .../AwsCodeCommitCredentialProvider.java | 2 +- .../server/support/CredentialException.java | 2 +- .../GitCredentialsProviderFactory.java | 13 ++++++++-- ...AwsCodeCommitCredentialsProviderTests.java | 4 ++- .../GitCredentialsProviderFactoryTests.java | 26 +++++++++++++------ 6 files changed, 43 insertions(+), 16 deletions(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/MultipleJGitEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/MultipleJGitEnvironmentRepository.java index 96a75a42..31a57708 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/MultipleJGitEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/MultipleJGitEnvironmentRepository.java @@ -27,7 +27,7 @@ import java.util.Map; import org.springframework.beans.BeanUtils; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.config.environment.Environment; -import org.springframework.cloud.config.server.credentials.GitCredentialsProviderFactory; +import org.springframework.cloud.config.server.support.GitCredentialsProviderFactory; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.util.PatternMatchUtils; import org.springframework.util.StringUtils; @@ -63,7 +63,8 @@ public class MultipleJGitEnvironmentRepository extends JGitEnvironmentRepository @Override public void afterPropertiesSet() throws Exception { GitCredentialsProviderFactory credentialFactory = new GitCredentialsProviderFactory(); - super.setGitCredentialsProvider(credentialFactory.createFor(getUri(), getUsername(), getPassword())); + super.setGitCredentialsProvider(credentialFactory.createFor(getUri(), + getUsername(), getPassword(), getPassphrase())); super.afterPropertiesSet(); for (String name : this.repos.keySet()) { PatternMatchingJGitEnvironmentRepository repo = this.repos.get(name); @@ -79,11 +80,16 @@ public class MultipleJGitEnvironmentRepository extends JGitEnvironmentRepository } String user = repo.getUsername(); String pass = repo.getPassword(); + String passphrase = repo.getPassphrase(); if (user == null) { user = getUsername(); pass = getPassword(); } - repo.setGitCredentialsProvider(credentialFactory.createFor(repo.getUri(), user, pass)); + if (passphrase == null) { + passphrase = getPassphrase(); + } + repo.setGitCredentialsProvider(credentialFactory.createFor(repo.getUri(), + user, pass, passphrase)); repo.afterPropertiesSet(); } } diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/AwsCodeCommitCredentialProvider.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/AwsCodeCommitCredentialProvider.java index 4ef927d9..7425067e 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/AwsCodeCommitCredentialProvider.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/AwsCodeCommitCredentialProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.config.server.credentials; +package org.springframework.cloud.config.server.support; import static org.springframework.util.StringUtils.hasText; diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/CredentialException.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/CredentialException.java index 4e35f495..ab222d80 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/CredentialException.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/CredentialException.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.config.server.credentials; +package org.springframework.cloud.config.server.support; /** * @author Don Laidlaw diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/GitCredentialsProviderFactory.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/GitCredentialsProviderFactory.java index ffec036d..097d6360 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/GitCredentialsProviderFactory.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/GitCredentialsProviderFactory.java @@ -14,7 +14,8 @@ * limitations under the License. */ -package org.springframework.cloud.config.server.credentials; +package org.springframework.cloud.config.server.support; + import static org.springframework.util.StringUtils.hasText; @@ -49,9 +50,12 @@ public class GitCredentialsProviderFactory { * @param uri the URI of the repository (cannot be null) * @param username the username provided for the repository (may be null) * @param password the password provided for the repository (may be null) + * @param passphrase the passphrase to unlock the ssh private key (may be null) * @return the first matched credentials provider or the default or null. */ - public CredentialsProvider createFor(String uri, String username, String password) { + public CredentialsProvider createFor(String uri, + String username, String password, String passphrase) { + CredentialsProvider provider = null; if (awsAvailable() && AwsCodeCommitCredentialProvider.canHandle(uri)) { logger.debug("Constructing AwsCodeCommitCredentialProvider for URI " + uri); @@ -64,6 +68,11 @@ public class GitCredentialsProviderFactory { logger.debug("Constructing UsernamePasswordCredentialsProvider for URI " + uri); provider = new UsernamePasswordCredentialsProvider(username, password.toCharArray()); } + else if (hasText(passphrase)) { + logger.debug("Constructing PassphraseCredentialsProvider for URI " + uri); + provider = new PassphraseCredentialsProvider(passphrase); + } + else { logger.debug("No credentials provider required for URI " + uri); } diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/AwsCodeCommitCredentialsProviderTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/AwsCodeCommitCredentialsProviderTests.java index c1536995..faf92b16 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/AwsCodeCommitCredentialsProviderTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/AwsCodeCommitCredentialsProviderTests.java @@ -25,6 +25,8 @@ import org.eclipse.jgit.transport.CredentialItem; import org.eclipse.jgit.transport.URIish; import org.junit.Before; import org.junit.Test; +import org.springframework.cloud.config.server.support.AwsCodeCommitCredentialProvider; +import org.springframework.cloud.config.server.support.GitCredentialsProviderFactory; import com.amazonaws.auth.AWSCredentialsProvider; @@ -48,7 +50,7 @@ public class AwsCodeCommitCredentialsProviderTests { public void init() { GitCredentialsProviderFactory factory = new GitCredentialsProviderFactory(); provider = (AwsCodeCommitCredentialProvider) - factory.createFor(AWS_REPO, USER, PASSWORD); + factory.createFor(AWS_REPO, USER, PASSWORD, null); } @Test diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/GitCredentialsProviderFactoryTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/GitCredentialsProviderFactoryTests.java index dde8b5ec..4f315ee1 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/GitCredentialsProviderFactoryTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/GitCredentialsProviderFactoryTests.java @@ -22,6 +22,9 @@ import org.eclipse.jgit.transport.CredentialsProvider; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.junit.Before; import org.junit.Test; +import org.springframework.cloud.config.server.support.AwsCodeCommitCredentialProvider; +import org.springframework.cloud.config.server.support.GitCredentialsProviderFactory; +import org.springframework.cloud.config.server.support.PassphraseCredentialsProvider; /** * @author don laidlaw @@ -43,33 +46,33 @@ public class GitCredentialsProviderFactoryTests { @Test public void testCreateForFileNoUsernameIsNull() { - CredentialsProvider provider = factory.createFor(FILE_REPO, null, null); + CredentialsProvider provider = factory.createFor(FILE_REPO, null, null, null); assertNull(provider); } @Test public void testCreateForFileWithUsername() { - CredentialsProvider provider = factory.createFor(FILE_REPO, USER, PASSWORD); + CredentialsProvider provider = factory.createFor(FILE_REPO, USER, PASSWORD, null); assertNotNull(provider); assertTrue(provider instanceof UsernamePasswordCredentialsProvider); } @Test public void testCreateForServerNoUsernameIsNull() { - CredentialsProvider provider = factory.createFor(GIT_REPO, null, null); + CredentialsProvider provider = factory.createFor(GIT_REPO, null, null, null); assertNull(provider); } @Test public void testCreateForServerWithUsername() { - CredentialsProvider provider = factory.createFor(GIT_REPO, USER, PASSWORD); + CredentialsProvider provider = factory.createFor(GIT_REPO, USER, PASSWORD, null); assertNotNull(provider); assertTrue(provider instanceof UsernamePasswordCredentialsProvider); } @Test public void testCreateForAwsNoUsername() { - CredentialsProvider provider = factory.createFor(AWS_REPO, null, null); + CredentialsProvider provider = factory.createFor(AWS_REPO, null, null, null); assertNotNull(provider); assertTrue(provider instanceof AwsCodeCommitCredentialProvider); AwsCodeCommitCredentialProvider aws = (AwsCodeCommitCredentialProvider) provider; @@ -79,7 +82,7 @@ public class GitCredentialsProviderFactoryTests { @Test public void testCreateForAwsWithUsername() { - CredentialsProvider provider = factory.createFor(AWS_REPO, USER, PASSWORD); + CredentialsProvider provider = factory.createFor(AWS_REPO, USER, PASSWORD, null); assertNotNull(provider); assertTrue(provider instanceof AwsCodeCommitCredentialProvider); AwsCodeCommitCredentialProvider aws = (AwsCodeCommitCredentialProvider) provider; @@ -90,13 +93,20 @@ public class GitCredentialsProviderFactoryTests { @Test public void testCreateForAwsDisabled() { factory.setAwsCodeCommitEnabled(false); - CredentialsProvider provider = factory.createFor(AWS_REPO, null, null); + CredentialsProvider provider = factory.createFor(AWS_REPO, null, null, null); assertNull(provider); - provider = factory.createFor(AWS_REPO, USER, PASSWORD); + provider = factory.createFor(AWS_REPO, USER, PASSWORD, null); assertNotNull(provider); assertTrue(provider instanceof UsernamePasswordCredentialsProvider); } + @Test + public void testCreatePassphraseCredentialProvider() { + CredentialsProvider provider = factory.createFor(GIT_REPO, null, null, PASSWORD); + assertNotNull(provider); + assertTrue(provider instanceof PassphraseCredentialsProvider); + } + @Test public void testIsAwsCodeCommitEnabled() {