SVN: svn authentication test to work on Unix as well (different defaults on different OSes)

This commit is contained in:
irengrig
2010-09-09 11:19:39 +04:00
parent 75f8c69ecf
commit afcefac5f0
@@ -17,6 +17,7 @@ package org.jetbrains.idea.svn;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.Trinity;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.testFramework.PlatformTestCase;
@@ -98,12 +99,13 @@ public class SvnAuthenticationTest extends PlatformTestCase {
listener.addStep(new Trinity<ProviderType, SVNURL, Type>(ProviderType.persistent, url, Type.save));
commonScheme(url, false, null);
Assert.assertEquals(3, listener.getCnt());
Assert.assertEquals((SystemInfo.isWindows ? 3 : 2), listener.getCnt());
//long start = System.currentTimeMillis();
//waitListenerStep(start, listener, 3);
SvnConfiguration.RUNTIME_AUTH_CACHE.clear();
listener.addStep(new Trinity<ProviderType, SVNURL, Type>(ProviderType.persistent, url, Type.request));
listener.addStep(new Trinity<ProviderType, SVNURL, Type>(ProviderType.interactive, url, Type.request));
commonScheme(url, false, null);
//start = System.currentTimeMillis();
//waitListenerStep(start, listener, 4);
@@ -121,13 +123,81 @@ public class SvnAuthenticationTest extends PlatformTestCase {
Assert.assertEquals(4, listener.getCnt());
listener.assertForAwt();
savedOnceListener.assertForAwt();
savedOnceListener.assertSaved(url, ISVNAuthenticationManager.PASSWORD);
if (SystemInfo.isWindows) {
savedOnceListener.assertSaved(url, ISVNAuthenticationManager.PASSWORD);
} else {
savedOnceListener.assertNotSaved(url, ISVNAuthenticationManager.PASSWORD);
}
if (exception[0] != null) {
throw exception[0];
}
}
public void testSavedAndReadUnix() throws Exception {
if (SystemInfo.isWindows) return;
final TestListener listener = new TestListener(mySynchObject);
myAuthenticationManager.addListener(listener);
final SavedOnceListener savedOnceListener = new SavedOnceListener();
myAuthenticationManager.addListener(savedOnceListener);
final SVNURL url = SVNURL.parseURIEncoded("http://some.host.com/repo");
final SVNException[] exception = new SVNException[1];
final Boolean[] result = new Boolean[1];
final File servers = new File(myConfiguration.getConfigurationDirectory(), "servers");
final File oldServers = new File(myConfiguration.getConfigurationDirectory(), "config_old");
FileUtil.copy(servers, oldServers);
try {
FileUtil.appendToFile(servers, "\nstore-plaintext-passwords=yes\n");
synchronousBackground(new Runnable() {
@Override
public void run() {
try {
listener.addStep(new Trinity<ProviderType, SVNURL, Type>(ProviderType.persistent, url, Type.request));
listener.addStep(new Trinity<ProviderType, SVNURL, Type>(ProviderType.interactive, url, Type.request));
listener.addStep(new Trinity<ProviderType, SVNURL, Type>(ProviderType.persistent, url, Type.save));
commonScheme(url, false, null);
Assert.assertEquals(3, listener.getCnt());
//long start = System.currentTimeMillis();
//waitListenerStep(start, listener, 3);
SvnConfiguration.RUNTIME_AUTH_CACHE.clear();
listener.addStep(new Trinity<ProviderType, SVNURL, Type>(ProviderType.persistent, url, Type.request));
commonScheme(url, false, null);
//start = System.currentTimeMillis();
//waitListenerStep(start, listener, 4);
Assert.assertEquals(4, listener.getCnt());
}
catch (SVNException e) {
exception[0] = e;
}
result[0] = true;
}
});
} finally {
FileUtil.delete(servers);
FileUtil.rename(oldServers, servers);
}
Assert.assertTrue(result[0]);
myTestInteraction.assertNothing();
Assert.assertEquals(4, listener.getCnt());
listener.assertForAwt();
savedOnceListener.assertForAwt();
savedOnceListener.assertSaved(url, ISVNAuthenticationManager.PASSWORD);
if (exception[0] != null) {
throw exception[0];
}
}
private void waitListenerStep(long start, TestListener listener, final int stepNoNext) {
while ((listener.getCnt() < stepNoNext) && ((System.currentTimeMillis() - start) < 10000)) {
synchronized (mySynchObject) {