blob: a0dfa979ea746f78bdebff4ab9da2f654e0a09dd [file] [log] [blame]
/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.idea.svn;
import com.intellij.openapi.progress.EmptyProgressIndicator;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vcs.*;
import com.intellij.openapi.vcs.changes.Change;
import com.intellij.openapi.vcs.changes.CurrentContentRevision;
import com.intellij.openapi.vcs.update.SequentialUpdatesContext;
import com.intellij.openapi.vcs.update.UpdateSession;
import com.intellij.openapi.vcs.update.UpdatedFiles;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.Processor;
import com.intellij.util.containers.Convertor;
import junit.framework.Assert;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.svn.api.Depth;
import org.jetbrains.idea.svn.auth.SvnAuthenticationManager;
import org.jetbrains.idea.svn.auth.SvnAuthenticationNotifier;
import org.jetbrains.idea.svn.checkout.SvnCheckoutProvider;
import org.junit.Before;
import org.tmatesoft.svn.core.*;
import org.tmatesoft.svn.core.auth.*;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.wc.SVNRevision;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: Irina.Chernushina
* Date: 3/4/13
* Time: 9:55 PM
*/
public class SvnNativeClientAuthTest extends Svn17TestCase {
private SvnVcs myVcs;
private int myCertificateAnswer = ISVNAuthenticationProvider.ACCEPTED_TEMPORARY;
private boolean myCredentialsCorrect = true;
private boolean mySaveCredentials = false;
private boolean myCancelAuth = false;
private String outHttpUser = "test";
private String outHttpPassword = "test";
private final static String ourHTTP_URL = "http://svnsrvtest/stuff/autoTest";
private final static String ourHTTPS_URL = "https://svnsrvtest:443/TestSSL/autoTest";
private int myCertificateAskedInteractivelyCount = 0;
private int myCredentialsAskedInteractivelyCount = 0;
private int myExpectedCreds = 0;
private int myExpectedCert = 0;
private boolean myIsSecure;
@Override
@Before
public void setUp() throws Exception {
super.setUp();
final File certFile = new File(myPluginRoot, getTestDataDir() + "/svn/____.pfx");
setNativeAcceleration(true);
myVcs = SvnVcs.getInstance(myProject);
// replace authentication provider so that pass credentials without dialogs
final SvnConfiguration configuration = SvnConfiguration.getInstance(myProject);
final File svnconfig = FileUtil.createTempDirectory("svnconfig", "");
configuration.setConfigurationDirParameters(false, svnconfig.getPath());
final SvnAuthenticationManager interactiveManager = configuration.getInteractiveManager(myVcs);
final SvnTestInteractiveAuthentication authentication = new SvnTestInteractiveAuthentication(interactiveManager) {
@Override
public int acceptServerAuthentication(SVNURL url, String realm, Object certificate, boolean resultMayBeStored) {
++ myCertificateAskedInteractivelyCount;
return myCertificateAnswer;
}
@Override
public SVNAuthentication requestClientAuthentication(String kind,
SVNURL url,
String realm,
SVNErrorMessage errorMessage,
SVNAuthentication previousAuth,
boolean authMayBeStored) {
if (myCancelAuth) return null;
return super.requestClientAuthentication(kind, url, realm, errorMessage, previousAuth, authMayBeStored);
}
};
interactiveManager.setAuthenticationProvider(authentication);
final SvnAuthenticationManager manager = configuration.getAuthenticationManager(myVcs);
// will be the same as in interactive -> authentication notifier is not used
manager.setAuthenticationProvider(authentication);
authentication.addAuthentication(ISVNAuthenticationManager.PASSWORD,
new Convertor<SVNURL, SVNAuthentication>() {
@Override
public SVNAuthentication convert(SVNURL o) {
++ myCredentialsAskedInteractivelyCount;
if (myCancelAuth) return null;
if (myCredentialsCorrect) {
return new SVNPasswordAuthentication(outHttpUser, outHttpPassword, mySaveCredentials, o, false);
} else {
myCredentialsCorrect = true;// only once
return new SVNPasswordAuthentication("1234214 23 4234", "324324", mySaveCredentials, o, false);
}
}
});
authentication.addAuthentication(ISVNAuthenticationManager.SSL,
new Convertor<SVNURL, SVNAuthentication>() {
@Override
public SVNAuthentication convert(SVNURL o) {
++ myCredentialsAskedInteractivelyCount;
if (myCancelAuth) return null;
if (myCredentialsCorrect) {
return new SVNSSLAuthentication(certFile, "12345", mySaveCredentials, o, false);
} else {
myCredentialsCorrect = true;// only once
return new SVNSSLAuthentication(new File("1232432423"), "3245321532534235445", mySaveCredentials, o, false);
}
}
});
myCertificateAskedInteractivelyCount = 0;
myCredentialsAskedInteractivelyCount = 0;
}
@Test
public void testTmpHttpUpdate() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTP_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = false;
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
// credentials are cached now only
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
}
@Test
public void testTmpSSLUpdate() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTPS_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = false;
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
// credentials are cached now only
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
}
@Test
public void testPermanentSSLUpdate() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTPS_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = true;
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
// credentials are cached now only
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
}
@Test
public void testPermanentHttpUpdate() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTP_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = true;
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
// credentials are cached now only
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
}
@Test
public void testTmpHttpCommit() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTP_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = false;
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
// credentials are cached now only
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
}
@Test
public void testTmpSSLCommit() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTPS_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = false;
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
// credentials are cached now only
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
}
@Test
public void testPermanentSSLCommit() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTPS_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = true;
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
// credentials are cached now only
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
}
@Test
public void test2PermanentSSLCommit() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTPS_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = true;
myCertificateAnswer = ISVNAuthenticationProvider.ACCEPTED;
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
// credentials are cached now only
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
}
private static void clearAuthCache(@NotNull SvnConfiguration instance) {
SvnAuthenticationNotifier.clearAuthenticationDirectory(instance);
instance.clearRuntimeStorage();
}
@Test
public void testMixedSSLCommit() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTPS_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = false;
myCertificateAnswer = ISVNAuthenticationProvider.ACCEPTED;
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
// credentials are cached now only
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
//------------
clearAuthCache(instance);
mySaveCredentials = true;
myCertificateAnswer = ISVNAuthenticationProvider.ACCEPTED_TEMPORARY;
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
}
@Test
public void testPermanentHttpCommit() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTP_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = true;
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
// credentials are cached now only
testCommitImpl(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
}
@Test
public void testFailedThenSuccessTmpHttpUpdate() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTP_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = false;
myCredentialsCorrect = false;
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
// credentials are cached now only
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
}
@Test
public void testFailedThenSuccessTmpSSLUpdate() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTPS_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = false;
myCredentialsCorrect = false;
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
// credentials wrong, but certificate was ok accepted
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
// credentials are cached now only
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
}
@Test
public void testCertificateRejectedThenCredentialsFailedThenSuccessTmpSSLUpdate() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTPS_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = false;
myCertificateAnswer = ISVNAuthenticationProvider.REJECTED;
updateExpectAuthCanceled(wc1, "Authentication canceled");
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
myCertificateAnswer = ISVNAuthenticationProvider.ACCEPTED_TEMPORARY;
myCredentialsCorrect = false;
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
// credentials wrong, but certificate was ok accepted
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
// credentials are cached now only
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
}
@Test
public void testCanceledThenFailedThenSuccessTmpHttpUpdate() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTP_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = false;
myCredentialsCorrect = false;
myCancelAuth = true;
updateExpectAuthCanceled(wc1, "Authentication canceled");
myCancelAuth = false;
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
// credentials are cached now only
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
}
@Test
public void testCanceledThenFailedThenSuccessTmpSSLUpdate() throws Exception {
final File wc1 = testCheckoutImpl(ourHTTPS_URL);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
final SvnConfiguration instance = SvnConfiguration.getInstance(myProject);
clearAuthCache(instance);
Assert.assertEquals(SvnConfiguration.UseAcceleration.commandLine, instance.getUseAcceleration());
mySaveCredentials = false;
myCredentialsCorrect = false;
myCancelAuth = true;
updateExpectAuthCanceled(wc1, "Authentication canceled");
myCancelAuth = false;
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
// credentials are cached now only
updateSimple(wc1);
//Assert.assertEquals(myExpectedCreds, myCredentialsAskedInteractivelyCount);
//Assert.assertEquals(myExpectedCert, myCertificateAskedInteractivelyCount);
}
private File testCommitImpl(File wc1) throws IOException {
Assert.assertTrue(wc1.isDirectory());
final File file = FileUtil.createTempFile(wc1, "file", ".txt");
final VirtualFile vf = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file);
Assert.assertNotNull(vf);
final ArrayList<VirtualFile> files = new ArrayList<VirtualFile>();
files.add(vf);
final List<VcsException> exceptions = myVcs.getCheckinEnvironment().scheduleUnversionedFilesForAddition(files);
Assert.assertTrue(exceptions.isEmpty());
final Change change = new Change(null, new CurrentContentRevision(new FilePathImpl(vf)));
final List<VcsException> commit = myVcs.getCheckinEnvironment().commit(Collections.singletonList(change), "commit");
Assert.assertTrue(commit.isEmpty());
++ myExpectedCreds;
++ myExpectedCert;
return file;
}
private File testCheckoutImpl(final String url) throws IOException {
final File root = FileUtil.createTempDirectory("checkoutRoot", "");
root.deleteOnExit();
Assert.assertTrue(root.exists());
SvnCheckoutProvider
.checkout(myProject, root, url, SVNRevision.HEAD, Depth.INFINITY, false, new CheckoutProvider.Listener() {
@Override
public void directoryCheckedOut(File directory, VcsKey vcs) {
}
@Override
public void checkoutCompleted() {
}
}, WorkingCopyFormat.ONE_DOT_SEVEN);
final int[] cnt = new int[1];
cnt[0] = 0;
FileUtil.processFilesRecursively(root, new Processor<File>() {
@Override
public boolean process(File file) {
++ cnt[0];
return ! (cnt[0] > 1);
}
});
Assert.assertTrue(cnt[0] > 1);
myIsSecure = url.contains("https:");
if (myIsSecure) {
++ myExpectedCreds;
++ myExpectedCert;
}
ProjectLevelVcsManager.getInstance(myProject).setDirectoryMapping(root.getPath(), SvnVcs.VCS_NAME);
refreshSvnMappingsSynchronously();
return root;
}
private void updateExpectAuthCanceled(File wc1, String expectedText) {
Assert.assertTrue(wc1.isDirectory());
final VirtualFile vf = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(wc1);
final UpdatedFiles files = UpdatedFiles.create();
final UpdateSession session =
myVcs.getUpdateEnvironment().updateDirectories(new FilePath[]{new FilePathImpl(vf)}, files, new EmptyProgressIndicator(),
new Ref<SequentialUpdatesContext>());
Assert.assertTrue(session.getExceptions() != null && ! session.getExceptions().isEmpty());
Assert.assertTrue(!session.isCanceled());
Assert.assertTrue(session.getExceptions().get(0).getMessage().contains(expectedText));
if (myIsSecure) {
++ myExpectedCreds;
++ myExpectedCert;
}
}
private void updateSimple(File wc1) {
Assert.assertTrue(wc1.isDirectory());
final VirtualFile vf = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(wc1);
final UpdatedFiles files = UpdatedFiles.create();
final UpdateSession session =
myVcs.getUpdateEnvironment().updateDirectories(new FilePath[]{new FilePathImpl(vf)}, files, new EmptyProgressIndicator(),
new Ref<SequentialUpdatesContext>());
Assert.assertTrue(session.getExceptions() == null || session.getExceptions().isEmpty());
Assert.assertTrue(!session.isCanceled());
if (myIsSecure) {
++ myExpectedCreds;
++ myExpectedCert;
}
}
private void testBrowseRepositoryImpl(final String url) throws SVNException {
final List<SVNDirEntry> list = new ArrayList<SVNDirEntry>();
final SVNRepository repository = myVcs.getSvnKitManager().createRepository(url);
repository.getDir(".", -1, null, new ISVNDirEntryHandler() {
@Override
public void handleDirEntry(SVNDirEntry dirEntry) throws SVNException {
list.add(dirEntry);
}
});
Assert.assertTrue(!list.isEmpty());
}
private static @interface Test {}
}