diff options
author | Sam Davis | 2014-02-19 22:17:04 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2014-03-04 00:45:53 +0000 |
commit | f22413b50b85920a132e804921dae9464b60904a (patch) | |
tree | 935e301e1ec8285f5d7f7f6b8f118a39a9633d05 /org.eclipse.mylyn.tasks.tests | |
parent | 5a436b4807e44da852cd36e84f4a34998afcc3ba (diff) | |
download | org.eclipse.mylyn.tasks-f22413b50b85920a132e804921dae9464b60904a.tar.gz org.eclipse.mylyn.tasks-f22413b50b85920a132e804921dae9464b60904a.tar.xz org.eclipse.mylyn.tasks-f22413b50b85920a132e804921dae9464b60904a.zip |
428504: bugzilla connector is logged out after credentials migrated from
keyring
Change-Id: I033be68acf2686a087058a7474289c842d7deebe
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=428504
Diffstat (limited to 'org.eclipse.mylyn.tasks.tests')
-rw-r--r-- | org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java | 81 |
1 files changed, 59 insertions, 22 deletions
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java index 04e7a5721..cd5880d4a 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java @@ -105,15 +105,14 @@ public class TaskRepositoryManagerTest extends TestCase { public void testsUseSecureStorage() throws Exception { TaskRepository repository = new TaskRepository("bugzilla", "http://repository2/"); + flushAuthenticationCredentials(repository); repository.setCredentials(AuthenticationType.REPOSITORY, new AuthenticationCredentials("testUserName", "testPassword"), true); repository.setCredentials(AuthenticationType.HTTP, new AuthenticationCredentials("httpUserName", "httpPassword"), true); - ISecurePreferences securePreferences = SecurePreferencesFactory.getDefault().node( - SECURE_CREDENTIALS_STORE_NODE_ID); - securePreferences = securePreferences.node(EncodingUtils.encodeSlashes(repository.getUrl())); + ISecurePreferences securePreferences = getSecurePreferences(repository); assertEquals("testPassword", securePreferences.get(AUTH_PASSWORD, null)); assertNull(securePreferences.get(AUTH_USERNAME, null)); assertEquals("httpUserName", securePreferences.get(AUTH_HTTP_USERNAME, null)); @@ -135,30 +134,50 @@ public class TaskRepositoryManagerTest extends TestCase { } public void testMigrationFromKeyring() throws Exception { - Map<String, String> authInfo = new HashMap<String, String>(); - authInfo.put(AUTH_USERNAME, "testuser"); - authInfo.put(AUTH_PASSWORD, "testpassword"); - authInfo.put(AUTH_HTTP_USERNAME, "testhttpuser"); - authInfo.put(AUTH_HTTP_PASSWORD, "testhttppassword"); - authInfo.put(AUTH_PROXY_USERNAME, "testproxyuser"); - authInfo.put(AUTH_PROXY_PASSWORD, "testproxypassword"); + Map<String, String> authInfo = createAuthInfo(); TaskRepository repository = new TaskRepository("bugzilla", "http://example.com/"); - repository.flushAuthenticationCredentials(); + flushAuthenticationCredentials(repository); Platform.addAuthorizationInfo(new URL(repository.getUrl()), AUTH_REALM, AUTH_SCHEME, authInfo); new TaskRepositoryKeyringMigrator(AUTH_REALM, AUTH_SCHEME).migrateCredentials(Collections.singleton(repository)); assertCredentialsMigrated(repository); repository = new TaskRepository("bugzilla", "I am not a url."); - repository.flushAuthenticationCredentials(); + flushAuthenticationCredentials(repository); Platform.addAuthorizationInfo(new URL("http://eclipse.org/mylyn"), repository.getUrl(), AUTH_SCHEME, authInfo); new TaskRepositoryKeyringMigrator(AUTH_REALM, AUTH_SCHEME).migrateCredentials(Collections.singleton(repository)); assertCredentialsMigrated(repository); } + public void testMigrationFromKeyringAfterGetUserNameCalled() throws Exception { + Map<String, String> authInfo = createAuthInfo(); + + TaskRepository repository = new TaskRepository("bugzilla", "http://example.com/"); + flushAuthenticationCredentials(repository); + Platform.addAuthorizationInfo(new URL(repository.getUrl()), AUTH_REALM, AUTH_SCHEME, authInfo); + + assertNull(repository.getUserName()); + + new TaskRepositoryKeyringMigrator(AUTH_REALM, AUTH_SCHEME).migrateCredentials(Collections.singleton(repository)); + assertNotNull(repository.getUserName()); + assertTrue(repository.getUserName().equals("testuser")); + assertCredentialsMigrated(repository); + } + + private Map<String, String> createAuthInfo() { + Map<String, String> authInfo = new HashMap<String, String>(); + authInfo.put(AUTH_USERNAME, "testuser"); + authInfo.put(AUTH_PASSWORD, "testpassword"); + authInfo.put(AUTH_HTTP_USERNAME, "testhttpuser"); + authInfo.put(AUTH_HTTP_PASSWORD, "testhttppassword"); + authInfo.put(AUTH_PROXY_USERNAME, "testproxyuser"); + authInfo.put(AUTH_PROXY_PASSWORD, "testproxypassword"); + return authInfo; + } + public void testMigrationFromOldSecureStoreNode() throws Exception { TaskRepository repository = new TaskRepository("bugzilla", "http://example.com/"); - repository.flushAuthenticationCredentials(); + flushAuthenticationCredentials(repository); repository.setProperty(AUTH_USERNAME, "testuser"); ISecurePreferences oldNode = SecurePreferencesFactory.getDefault().node(ITasksCoreConstants.ID_PLUGIN); @@ -177,17 +196,35 @@ public class TaskRepositoryManagerTest extends TestCase { StorageException { assertEquals("testuser", repository.getProperty(AUTH_USERNAME)); - ISecurePreferences newNode = SecurePreferencesFactory.getDefault().node(SECURE_CREDENTIALS_STORE_NODE_ID); - newNode = newNode.node(EncodingUtils.encodeSlashes(repository.getUrl())); - assertEquals("testpassword", newNode.get(AUTH_PASSWORD, null)); - assertEquals("testhttpuser", newNode.get(AUTH_HTTP_USERNAME, null)); - assertEquals("testhttppassword", newNode.get(AUTH_HTTP_PASSWORD, null)); - assertEquals("testproxyuser", newNode.get(AUTH_PROXY_USERNAME, null)); - assertEquals("testproxypassword", newNode.get(AUTH_PROXY_PASSWORD, null)); + ISecurePreferences securePreferences = getSecurePreferences(repository); + assertEquals("testpassword", securePreferences.get(AUTH_PASSWORD, null)); + assertEquals("testhttpuser", securePreferences.get(AUTH_HTTP_USERNAME, null)); + assertEquals("testhttppassword", securePreferences.get(AUTH_HTTP_PASSWORD, null)); + assertEquals("testproxyuser", securePreferences.get(AUTH_PROXY_USERNAME, null)); + assertEquals("testproxypassword", securePreferences.get(AUTH_PROXY_PASSWORD, null)); - for (String key : newNode.childrenNames()) { - assertEquals(key.endsWith(PASSWORD), newNode.isEncrypted(key)); + for (String key : securePreferences.childrenNames()) { + assertEquals(key.endsWith(PASSWORD), securePreferences.isEncrypted(key)); } + + assertEquals("testpassword", repository.getCredentials(AuthenticationType.REPOSITORY).getPassword()); + assertEquals("testhttpuser", repository.getCredentials(AuthenticationType.HTTP).getUserName()); + assertEquals("testhttppassword", repository.getCredentials(AuthenticationType.HTTP).getPassword()); + assertEquals("testproxyuser", repository.getCredentials(AuthenticationType.PROXY).getUserName()); + assertEquals("testproxypassword", repository.getCredentials(AuthenticationType.PROXY).getPassword()); + } + + private ISecurePreferences getSecurePreferences(TaskRepository repository) { + ISecurePreferences rootNode = SecurePreferencesFactory.getDefault().node(SECURE_CREDENTIALS_STORE_NODE_ID); + return rootNode.node(EncodingUtils.encodeSlashes(repository.getUrl())); + } + + private void flushAuthenticationCredentials(TaskRepository repository) { + repository.flushAuthenticationCredentials(); + assertTrue(getSecurePreferences(repository).keys().length == 0); + repository.setProperty(AUTH_REPOSITORY + ".enabled", Boolean.toString(true)); + repository.setProperty(AUTH_HTTP + ".enabled", Boolean.toString(true)); + repository.setProperty(AUTH_PROXY + ".enabled", Boolean.toString(true)); } public void testRepositoryWithSlash() throws MalformedURLException { |