package com.asolutions.scmsshd.test.integration;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import org.apache.sshd.common.keyprovider.FileKeyPairProvider;
import org.junit.Test;
import org.spearce.jgit.lib.Repository;
import org.spearce.jgit.transport.FetchResult;
import com.asolutions.scmsshd.SCuMD;
import com.asolutions.scmsshd.authenticators.AlwaysPassPublicKeyAuthenticator;
import com.asolutions.scmsshd.authorizors.AlwaysPassProjectAuthorizer;
import com.asolutions.scmsshd.commands.factories.GitCommandFactory;
import com.asolutions.scmsshd.commands.factories.GitSCMCommandFactory;
import com.asolutions.scmsshd.test.integration.util.ConstantProjectNameConverter;
public class FetchTest extends IntegrationTestCase {
@Test
public void testFetchLocal() throws Exception {
File gitDir = new File(".git");
String remoteName = "origin";
Repository db = createCloneToRepo();
addRemoteConfigForLocalGitDirectory(db, gitDir, remoteName);
FetchResult r = cloneFromRemote(db, remoteName);
assert(r.getTrackingRefUpdates().size() > 0);
}
@Test
public void testFetchFromScumd() throws Exception {
final SCuMD sshd = new SCuMD();
try{
int serverPort = generatePort();
System.out.println("Running on port: " + serverPort);
sshd.setPort(serverPort);
sshd.setKeyPairProvider(new FileKeyPairProvider(new String[] { "src/main/resources/ssh_host_rsa_key",
"src/main/resources/ssh_host_dsa_key" }));
sshd.setPublickeyAuthenticator(new AlwaysPassPublicKeyAuthenticator());
GitCommandFactory factory = new GitCommandFactory();
factory.setPathToProjectNameConverter(new ConstantProjectNameConverter());
factory.setProjectAuthorizor(new AlwaysPassProjectAuthorizer());
Properties config = new Properties();
config.setProperty(GitSCMCommandFactory.REPOSITORY_BASE, System.getProperty("user.dir"));
factory.setConfiguration(config);
sshd.setCommandFactory(factory);
new Thread(){
@Override
public void run() {
try {
sshd.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
Thread.sleep(3000);
Repository db = createCloneToRepo();
String remoteName = "origin";
addRemoteConfigForRemoteGitDirectory(db, remoteName, serverPort, ".git");
FetchResult r = cloneFromRemote(db, remoteName);
System.out.println("results = " + r.getTrackingRefUpdates().size());
assertTrue(r.getTrackingRefUpdates().size() > 0);
}
finally{
sshd.stop();
}
}
}