Add missing test for credential provider. (#664)

This commit is contained in:
Don Laidlaw
2017-03-10 13:32:02 -04:00
committed by Spencer Gibb
parent 3797004492
commit 91372cad2d
3 changed files with 84 additions and 2 deletions

View File

@@ -428,7 +428,9 @@ public class JGitEnvironmentRepository extends AbstractScmEnvironmentRepository
}
private void setCredentialsProvider(TransportCommand<?, ?> cmd) {
if (hasText(getUsername())) {
if (gitCredentialsProvider != null) {
cmd.setCredentialsProvider(gitCredentialsProvider);
} else if (hasText(getUsername())) {
cmd.setCredentialsProvider(
new UsernamePasswordCredentialsProvider(getUsername(), getPassword()));
} else if (hasText(getPassphrase())) {

View File

@@ -16,7 +16,6 @@
package org.springframework.cloud.config.server.support;
import static org.springframework.util.StringUtils.hasText;
import org.apache.commons.logging.Log;

View File

@@ -56,6 +56,8 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.ArgumentCaptor;
import org.springframework.cloud.config.environment.Environment;
import org.springframework.cloud.config.server.support.AwsCodeCommitCredentialProvider;
import org.springframework.cloud.config.server.support.GitCredentialsProviderFactory;
import org.springframework.cloud.config.server.support.PassphraseCredentialsProvider;
import org.springframework.cloud.config.server.test.ConfigServerTestUtils;
import org.springframework.core.env.StandardEnvironment;
@@ -592,6 +594,85 @@ public class JGitEnvironmentRepositoryTests {
provider.get(new URIish(), stringCredential);
assertEquals(stringCredential.getValue(), passphrase);
}
@Test
public void gitCredentialsProviderFactoryCreatesPassphraseProvider() throws Exception {
final String passphrase = "mypassphrase";
final String gitUri = "git+ssh://git@somegitserver/somegitrepo";
GitCredentialsProviderFactory credentialsFactory = new GitCredentialsProviderFactory();
Git mockGit = mock(Git.class);
MockCloneCommand mockCloneCommand = new MockCloneCommand(mockGit);
JGitEnvironmentRepository envRepository = new JGitEnvironmentRepository(this.environment);
envRepository.setGitFactory(new MockGitFactory(mockGit, mockCloneCommand));
envRepository.setUri(gitUri);
envRepository.setBasedir(new File("./mybasedir"));
envRepository.setGitCredentialsProvider(credentialsFactory.createFor(gitUri, null, null, passphrase));
envRepository.setCloneOnStart(true);
envRepository.afterPropertiesSet();
assertTrue(mockCloneCommand.hasPassphraseCredentialsProvider());
CredentialsProvider provider = mockCloneCommand.getCredentialsProvider();
assertFalse(provider.isInteractive());
CredentialItem.StringType stringCredential = new CredentialItem.StringType(PassphraseCredentialsProvider.PROMPT, true);
assertTrue(provider.supports(stringCredential));
provider.get(new URIish(), stringCredential);
assertEquals(stringCredential.getValue(), passphrase);
}
@Test
public void gitCredentialsProviderFactoryCreatesUsernamePasswordProvider() throws Exception {
GitCredentialsProviderFactory credentialsFactory = new GitCredentialsProviderFactory();
Git mockGit = mock(Git.class);
MockCloneCommand mockCloneCommand = new MockCloneCommand(mockGit);
final String username = "someuser";
final String password = "mypassword";
JGitEnvironmentRepository envRepository = new JGitEnvironmentRepository(this.environment);
envRepository.setGitFactory(new MockGitFactory(mockGit, mockCloneCommand));
envRepository.setUri("git+ssh://git@somegitserver/somegitrepo");
envRepository.setBasedir(new File("./mybasedir"));
envRepository.setGitCredentialsProvider(credentialsFactory.createFor(
envRepository.getUri(), username, password, null));
envRepository.setCloneOnStart(true);
envRepository.afterPropertiesSet();
assertTrue(mockCloneCommand.getCredentialsProvider() instanceof UsernamePasswordCredentialsProvider);
CredentialsProvider provider = mockCloneCommand.getCredentialsProvider();
CredentialItem.Username usernameCredential = new CredentialItem.Username();
CredentialItem.Password passwordCredential = new CredentialItem.Password();
assertTrue(provider.supports(usernameCredential));
assertTrue(provider.supports(passwordCredential));
provider.get(new URIish(), usernameCredential);
assertEquals(usernameCredential.getValue(), username);
provider.get(new URIish(), passwordCredential);
assertEquals(String.valueOf(passwordCredential.getValue()), password);
}
@Test
public void gitCredentialsProviderFactoryCreatesAwsCodeCommitProvider() throws Exception {
GitCredentialsProviderFactory credentialsFactory = new GitCredentialsProviderFactory();
Git mockGit = mock(Git.class);
MockCloneCommand mockCloneCommand = new MockCloneCommand(mockGit);
final String awsUri = "https://git-codecommit.us-east-1.amazonaws.com/v1/repos/test";
JGitEnvironmentRepository envRepository = new JGitEnvironmentRepository(this.environment);
envRepository.setGitFactory(new MockGitFactory(mockGit, mockCloneCommand));
envRepository.setUri(awsUri);
envRepository.setGitCredentialsProvider(credentialsFactory.createFor(
envRepository.getUri(), null, null, null));
envRepository.setCloneOnStart(true);
envRepository.afterPropertiesSet();
assertTrue(mockCloneCommand.getCredentialsProvider() instanceof AwsCodeCommitCredentialProvider);
}
@Test
public void strictHostKeyCheckShouldCheck() throws Exception {