Add missing test for credential provider. (#664)
This commit is contained in:
committed by
Spencer Gibb
parent
3797004492
commit
91372cad2d
@@ -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())) {
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.springframework.cloud.config.server.support;
|
||||
|
||||
|
||||
import static org.springframework.util.StringUtils.hasText;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user