blob: cfef4285034b3fd2be67e575e0d18831b141b5e4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2013 Tasktop Technologies and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.tasks.tests;
import org.eclipse.mylyn.commons.net.AuthenticationType;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnectorUi;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositorySettingsPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import junit.framework.TestCase;
/**
* @author Steffen Pingel
*/
public class RepositorySettingsPageTest extends TestCase {
public void testNeedsEncoding() {
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://localhost/");
repository.setCharacterEncoding("UTF-8");
MockRepositorySettingsPage page = new MockRepositorySettingsPage(repository);
page.setNeedsEncoding(true);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
page.setVisible(true);
TaskRepository repository2 = page.createTaskRepository();
assertEquals("UTF-8", repository2.getCharacterEncoding());
}
public void testNeedsEncodingFalse() {
MockRepositorySettingsPage page = new MockRepositorySettingsPage(null);
page.setNeedsEncoding(false);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
page.setVisible(true);
page.createTaskRepository();
}
public void testNeedsAnonyoumousLoginFalse() {
MockRepositorySettingsPage page = new MockRepositorySettingsPage(null);
page.setNeedsAnonymousLogin(false);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
page.setVisible(true);
assertNull(page.getAnonymousButton());
}
public void testNeedsAnonyoumousLoginNoRepository() {
MockRepositorySettingsPage page = new MockRepositorySettingsPage(null);
page.setNeedsAnonymousLogin(true);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
page.setVisible(true);
assertNotNull(page.getAnonymousButton());
assertTrue(page.getAnonymousButton().getSelection());
assertFalse(page.getUserNameEditor().getTextControl(page.getParent()).isEnabled());
assertFalse(page.getPasswordEditor().getTextControl(page.getParent()).isEnabled());
assertEquals("", page.getUserName());
assertEquals("", page.getPassword());
page.getAnonymousButton().setSelection(false);
}
public void testNeedsAnonyoumousLogin() {
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://localhost/");
TasksUiPlugin.getDefault().addRepositoryConnectorUi(new MockRepositoryConnectorUi());
MockRepositorySettingsPage page = new MockRepositorySettingsPage(repository);
page.setNeedsAnonymousLogin(true);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
page.setVisible(true);
assertNotNull(page.getAnonymousButton());
assertTrue(page.getAnonymousButton().getSelection());
assertFalse(page.getUserNameEditor().getTextControl(page.getParent()).isEnabled());
assertFalse(page.getPasswordEditor().getTextControl(page.getParent()).isEnabled());
assertEquals("", page.getUserName());
assertEquals("", page.getPassword());
page.getAnonymousButton().setSelection(false);
page.getAnonymousButton().notifyListeners(SWT.Selection, new Event());
assertTrue(page.getUserNameEditor().getTextControl(page.getParent()).isEnabled());
assertTrue(page.getPasswordEditor().getTextControl(page.getParent()).isEnabled());
page.getUserNameEditor().setStringValue("user");
page.getPasswordEditor().setStringValue("password");
assertEquals("user", page.getUserName());
assertEquals("password", page.getPassword());
page.getAnonymousButton().setSelection(true);
page.getAnonymousButton().notifyListeners(SWT.Selection, new Event());
assertFalse(page.getUserNameEditor().getTextControl(page.getParent()).isEnabled());
assertFalse(page.getPasswordEditor().getTextControl(page.getParent()).isEnabled());
assertEquals("", page.getUserName());
assertEquals("", page.getPassword());
page.getAnonymousButton().setSelection(false);
page.getAnonymousButton().notifyListeners(SWT.Selection, new Event());
assertTrue(page.getUserNameEditor().getTextControl(page.getParent()).isEnabled());
assertTrue(page.getPasswordEditor().getTextControl(page.getParent()).isEnabled());
assertEquals("user", page.getUserNameEditor().getStringValue());
assertEquals("password", page.getPasswordEditor().getStringValue());
assertEquals("user", page.getUserName());
assertEquals("password", page.getPassword());
}
public void testSavePassword() {
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://localhost/");
TasksUiPlugin.getDefault().addRepositoryConnectorUi(new MockRepositoryConnectorUi());
assertTrue(repository.getSavePassword(AuthenticationType.REPOSITORY));
MockRepositorySettingsPage page = new MockRepositorySettingsPage(repository);
try {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
assertTrue(page.getSavePassword());
} finally {
page.dispose();
}
repository.setCredentials(AuthenticationType.REPOSITORY, null, false);
page = new MockRepositorySettingsPage(repository);
try {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
assertFalse(page.getSavePassword());
} finally {
page.dispose();
}
}
public void testSaveHttpPassword() {
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://localhost/");
TasksUiPlugin.getDefault().addRepositoryConnectorUi(new MockRepositoryConnectorUi());
assertTrue(repository.getSavePassword(AuthenticationType.HTTP));
MockRepositorySettingsPage page = new MockRepositorySettingsPage(repository);
page.setNeedsHttpAuth(true);
try {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
assertTrue(page.getSaveHttpPassword());
} finally {
page.dispose();
}
repository.setCredentials(AuthenticationType.HTTP, null, false);
// page = new MockRepositorySettingsPage(repository);
page.setNeedsHttpAuth(true);
try {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
assertFalse(page.getSaveHttpPassword());
} finally {
page.dispose();
}
}
public void testSaveProxyPassword() {
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://localhost/");
TasksUiPlugin.getDefault().addRepositoryConnectorUi(new MockRepositoryConnectorUi());
assertTrue(repository.getSavePassword(AuthenticationType.PROXY));
MockRepositorySettingsPage page = new MockRepositorySettingsPage(repository);
page.setNeedsProxy(true);
try {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
assertTrue(page.getSaveProxyPassword());
} finally {
page.dispose();
}
repository.setCredentials(AuthenticationType.PROXY, null, false);
page = new MockRepositorySettingsPage(repository);
page.setNeedsProxy(true);
try {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
assertFalse(page.getSaveProxyPassword());
} finally {
page.dispose();
}
}
public void testValidUrl() throws Exception {
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://localhost/");
MockRepositorySettingsPage page = new MockRepositorySettingsPage(repository);
assertFalse(page.isValidUrl(""));
assertFalse(page.isValidUrl("http:/google.com"));
assertFalse(page.isValidUrl("http:/google.com/"));
assertTrue(page.isValidUrl("http://google.com"));
assertTrue(page.isValidUrl("https://google.com"));
assertTrue(page.isValidUrl("http://mylyn.org/bugzilla34"));
assertTrue(page.isValidUrl("http://www.mylyn.org/bugzilla34"));
}
public void testInjectConnectorIntoSettingsPage() throws Exception {
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://localhost/");
MockRepositoryConnector connector = new MockRepositoryConnector();
MockRepositorySettingsPage page = new MockRepositorySettingsPage(repository, connector);
assertSame(page.getConnector(), connector);
}
public void testNeedsRepositoryCredentialsDefaultsToTrue() {
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://localhost/");
MockRepositorySettingsPage page = new MockRepositorySettingsPage(repository);
assertTrue(page.needsRepositoryCredentials());
}
public void testNeedsRepositoryCredentialsCanBeSetToFalse() {
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://localhost/");
MockRepositorySettingsPage page = new MockRepositorySettingsPage(repository);
page.setNeedsRepositoryCredentials(false);
assertFalse(page.needsRepositoryCredentials());
}
public void testNeedsRepositoryCredentialsPageCompletesWithoutCredentials() {
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://localhost/");
MockRepositorySettingsPage page = new MockRepositorySettingsPage(repository);
page.setNeedsRepositoryCredentials(false);
try {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
page.createControl(shell);
page.setUrl("http://example.com");
assertNull(page.getRepositoryUserNameEditor());
assertNull(page.getRepositoryPasswordEditor());
assertTrue(page.isPageComplete());
assertNull(page.getMessage());
assertNotNull(page.createTaskRepository());
} finally {
page.dispose();
}
}
}