package org.tmatesoft.svn.test;
import org.junit.Assume;
import org.junit.Ignore;
import org.junit.Test;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.BasicAuthenticationManager;
import org.tmatesoft.svn.core.wc2.SvnCheckout;
import org.tmatesoft.svn.core.wc2.SvnCommit;
import org.tmatesoft.svn.core.wc2.SvnOperationFactory;
import org.tmatesoft.svn.core.wc2.SvnTarget;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
@Ignore("Incomplete")
public class AuthTest {
@Test
public void testDavCommitFailsBecauseOfPathBasedAuth() throws Exception {
final TestOptions options = TestOptions.getInstance();
Assume.assumeTrue(TestUtil.areAllApacheOptionsSpecified(options));
final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".testDavCommitFailsBecauseOfPathBasedAuth", options);
try {
BasicAuthenticationManager authenticationManager1 = new BasicAuthenticationManager("user1", "password1");
final Map<String, String> loginToPassword = new HashMap<String, String>();
loginToPassword.put("user1", "password1"); //only user1 is allowed
final SVNURL url = sandbox.createSvnRepositoryWithDavAccess(loginToPassword);
final CommitBuilder commitBuilder = new CommitBuilder(url);
commitBuilder.setAuthenticationManager(authenticationManager1);
commitBuilder.addFile("directory/file");
commitBuilder.commit();
final File workingCopyDirectory = sandbox.createDirectory("wc");
//checkout with user1
svnOperationFactory.setAuthenticationManager(authenticationManager1);
final SvnCheckout checkout = svnOperationFactory.createCheckout();
checkout.setSource(SvnTarget.fromURL(url));
checkout.setSingleTarget(SvnTarget.fromFile(workingCopyDirectory));
checkout.run();
final File file = new File(workingCopyDirectory, "directory/file");
TestUtil.writeFileContentsString(file, "new contents");
final String readOnly =
"[/]" + "\n" +
"*=rw" + "\n" +
"[/directory]" + "\n" +
"*=r" + "\n";
sandbox.writeActiveAuthzContents(url, readOnly);
final SvnCommit commit = svnOperationFactory.createCommit();
commit.setSingleTarget(SvnTarget.fromFile(workingCopyDirectory));
commit.run();
} finally {
svnOperationFactory.dispose();
sandbox.dispose();
}
}
@Test
public void test() throws Exception {
final TestOptions options = TestOptions.getInstance();
Assume.assumeTrue(TestUtil.areAllApacheOptionsSpecified(options));
final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
final Sandbox sandbox = Sandbox.createWithCleanup(getTestName() + ".test", options);
try {
BasicAuthenticationManager authenticationManager1 = new BasicAuthenticationManager("user1", "password1");
final Map<String, String> loginToPassword = new HashMap<String, String>();
loginToPassword.put("user1", "password1"); //only user1 is allowed
final SVNURL url = sandbox.createSvnRepositoryWithDavAccess(loginToPassword);
final CommitBuilder commitBuilder = new CommitBuilder(url);
commitBuilder.setAuthenticationManager(authenticationManager1);
commitBuilder.addFile("directory/file");
commitBuilder.commit();
final File workingCopyDirectory = sandbox.createDirectory("wc");
//checkout with user1
svnOperationFactory.setAuthenticationManager(authenticationManager1);
final SvnCheckout checkout = svnOperationFactory.createCheckout();
checkout.setSource(SvnTarget.fromURL(url));
checkout.setSingleTarget(SvnTarget.fromFile(workingCopyDirectory));
checkout.run();
final File directory = new File(workingCopyDirectory, "directory");
final File file = new File(directory, "file");
TestUtil.writeFileContentsString(file, "new contents");
// final SvnScheduleForAddition scheduleForAddition = svnOperationFactory.createScheduleForAddition();
// scheduleForAddition.setSingleTarget(SvnTarget.fromFile(file));
// scheduleForAddition.run();
//
// final SvnSetProperty setProperty = svnOperationFactory.createSetProperty();
// setProperty.setPropertyName("test");
// setProperty.setPropertyValue(SVNPropertyValue.create("value"));
// setProperty.setSingleTarget(SvnTarget.fromFile(directory));
// setProperty.run();
final String readOnly =
"[/]" + "\n" +
"*=rw" + "\n" +
"[/directory]" + "\n" +
"*=r" + "\n";
sandbox.writeActiveAuthzContents(url, readOnly);
final SvnCommit commit = svnOperationFactory.createCommit();
commit.setSingleTarget(SvnTarget.fromFile(workingCopyDirectory));
commit.run();
} finally {
svnOperationFactory.dispose();
sandbox.dispose();
}
}
private String getTestName() {
return "AuthTest";
}
}