blob: e26b624c23fcdc483369e133bd256b0d7f7ed568 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2013 Nathan Hapke and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Nathan Hapke - initial API and implementation
* Tasktop Technologies - improvements
* Frank Becker - improvements
*******************************************************************************/
package org.eclipse.mylyn.bugzilla.tests.core;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.mylyn.bugzilla.tests.support.BugzillaFixture;
import org.eclipse.mylyn.commons.net.AuthenticationCredentials;
import org.eclipse.mylyn.commons.net.AuthenticationType;
import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil.PrivilegeLevel;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaAttribute;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryConnector;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaVersion;
import org.eclipse.mylyn.internal.bugzilla.core.RepositoryConfiguration;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery;
import org.eclipse.mylyn.internal.tasks.core.TaskTask;
import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel;
import org.eclipse.mylyn.tasks.core.ITaskMapping;
import org.eclipse.mylyn.tasks.core.RepositoryResponse;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.core.data.TaskDataCollector;
/**
* @author Nathan Hapke
* @author Rob Elves
* @author Thomas Ehrnhoefer
* @author Steffen Pingel
* @author Frank Becker
*/
public class BugzillaRepositoryConnectorStandaloneTest extends TestCase {
private TaskRepository repository;
private BugzillaRepositoryConnector connector;
private BugzillaClient client;
@Override
public void setUp() throws Exception {
client = BugzillaFixture.current().client(PrivilegeLevel.USER);
repository = BugzillaFixture.current().repository();
connector = BugzillaFixture.current().connector();
}
public void testHasTaskChanged() {
AbstractTask task = new TaskTask(repository.getConnectorKind(), repository.getRepositoryUrl(), "1");
task.setAttribute(BugzillaAttribute.DELTA_TS.getKey(), "2008-02-02 12:01:12");
TaskData data = new TaskData(connector.getTaskDataHandler().getAttributeMapper(repository),
repository.getConnectorKind(), repository.getRepositoryUrl(), "1");
TaskAttribute attribute = data.getRoot().createAttribute(BugzillaAttribute.DELTA_TS.getKey());
// Testing State 1
// Offline no timezone, repository no timezone, same time
attribute.setValue("2008-02-02 12:01:12");
assertFalse(connector.hasTaskChanged(repository, task, data));
// Offline no timezone, repository no timezone, different date
attribute.setValue("2008-02-03 12:01:12");
assertTrue(connector.hasTaskChanged(repository, task, data));
// Offline no timezone, repository no timezone, different time
attribute.setValue("2008-02-02 12:03:12");
assertTrue(connector.hasTaskChanged(repository, task, data));
// Offline no timezone, repository no timezone, different (older) time
attribute.setValue("2008-02-02 12:03:00");
assertTrue(connector.hasTaskChanged(repository, task, data));
// Testing Fuzzy States 2 & 3
// Offline have timezone, repository no timezone, same time
task.setAttribute(BugzillaAttribute.DELTA_TS.getKey(), "2008-02-02 12:01:12 -0700");
attribute.setValue("2008-02-02 12:01:12");
assertFalse(connector.hasTaskChanged(repository, task, data));
// Offline have timezone, repository no timezone, different time
task.setAttribute(BugzillaAttribute.DELTA_TS.getKey(), "2008-02-02 12:01:12 -0700");
attribute.setValue("2008-02-02 12:01:13");
assertTrue(connector.hasTaskChanged(repository, task, data));
// Offline no timezone, repository has timezone
task.setAttribute(BugzillaAttribute.DELTA_TS.getKey(), "2008-02-02 12:01:12");
attribute.setValue("2008-02-02 12:01:12 -0700");
assertFalse(connector.hasTaskChanged(repository, task, data));
// Offline no timezone, repository has timezone and different time (fuzzy check doesn't pass)
attribute.setValue("2008-02-02 12:01:13 -0700");
assertTrue(connector.hasTaskChanged(repository, task, data));
// Test backwards in time
task.setAttribute(BugzillaAttribute.DELTA_TS.getKey(), "2008-02-02 12:01:12");
attribute.setValue("2008-02-02 12:01:03 -0700");
assertTrue(connector.hasTaskChanged(repository, task, data));
// Testing State 4
// Same world time, reported wrt different time zones
task.setAttribute(BugzillaAttribute.DELTA_TS.getKey(), "2009-09-04 00:00:00 PDT");
attribute.setValue("2009-09-04 03:00:00 EDT");
assertFalse(connector.hasTaskChanged(repository, task, data));
// Different times, same time zone
task.setAttribute(BugzillaAttribute.DELTA_TS.getKey(), "2009-09-04 12:00:00 PDT");
attribute.setValue("2009-09-04 12:00:01 PDT");
assertTrue(connector.hasTaskChanged(repository, task, data));
// Same times, bogus format (string compare)
task.setAttribute(BugzillaAttribute.DELTA_TS.getKey(), "2009-09-04 12:00:::01 PDT");
attribute.setValue("2009-09-04 12:00:::01 PDT");
assertFalse(connector.hasTaskChanged(repository, task, data));
// Different times, bogus format (string compare)
task.setAttribute(BugzillaAttribute.DELTA_TS.getKey(), "2009-09X-04X12:00:::01 PDT");
attribute.setValue("2009-X-03 12:00:::01 PDT");
assertTrue(connector.hasTaskChanged(repository, task, data));
}
/**
* This is the first test so that the repository credentials are correctly set for the other tests
*/
public void testAddCredentials() {
AuthenticationCredentials auth = repository.getCredentials(AuthenticationType.REPOSITORY);
assertTrue(auth != null && auth.getPassword() != null && !auth.getPassword().equals("")
&& auth.getUserName() != null && !auth.getUserName().equals(""));
}
public void testGetTaskData() throws Exception {
TaskData taskData = BugzillaFixture.current().createTask(PrivilegeLevel.USER, null, null);
Set<String> taskIds = new HashSet<String>();
taskIds.add(taskData.getTaskId());
final Set<TaskData> results = new HashSet<TaskData>();
TaskDataCollector collector = new TaskDataCollector() {
@Override
public void accept(TaskData taskData) {
results.add(taskData);
}
};
connector.getTaskDataHandler().getMultiTaskData(repository, taskIds, collector, new NullProgressMonitor());
assertEquals(1, results.size());
TaskData updatedTaskData = results.iterator().next();
String taskId = updatedTaskData.getTaskId();
assertEquals(taskId, updatedTaskData.getTaskId());
assertEquals(taskData.getRoot().getAttribute(BugzillaAttribute.ASSIGNED_TO.getKey()).getValue(),
updatedTaskData.getRoot().getAttribute(BugzillaAttribute.ASSIGNED_TO.getKey()).getValue());
assertEquals(taskData.getRoot().getAttribute(BugzillaAttribute.LONG_DESC.getKey()).getValue(),
updatedTaskData.getRoot().getAttribute(BugzillaAttribute.LONG_DESC.getKey()).getValue());
assertEquals(taskData.getRoot().getAttribute(BugzillaAttribute.PRIORITY.getKey()).getValue(),
updatedTaskData.getRoot().getAttribute(BugzillaAttribute.PRIORITY.getKey()).getValue());
}
public void testGetMultiTaskData() throws Exception {
TaskData taskData = BugzillaFixture.current().createTask(PrivilegeLevel.USER, null, null);
TaskData taskData2 = BugzillaFixture.current().createTask(PrivilegeLevel.USER, null, null);
TaskData taskData3 = BugzillaFixture.current().createTask(PrivilegeLevel.USER, null, null);
Set<String> taskIds = new HashSet<String>();
taskIds.add(taskData.getTaskId());
taskIds.add(taskData2.getTaskId());
taskIds.add(taskData3.getTaskId());
final Map<String, TaskData> results = new HashMap<String, TaskData>();
TaskDataCollector collector = new TaskDataCollector() {
@Override
public void accept(TaskData taskData) {
results.put(taskData.getTaskId(), taskData);
}
};
connector.getTaskDataHandler().getMultiTaskData(repository, taskIds, collector, new NullProgressMonitor());
assertEquals(3, results.size());
TaskData updatedTaskData = results.get(taskData.getTaskId());
assertEquals(taskData.getRoot().getAttribute(BugzillaAttribute.ASSIGNED_TO.getKey()).getValue(),
updatedTaskData.getRoot().getAttribute(BugzillaAttribute.ASSIGNED_TO.getKey()).getValue());
assertEquals(taskData.getRoot().getAttribute(BugzillaAttribute.LONG_DESC.getKey()).getValue(),
updatedTaskData.getRoot().getAttribute(BugzillaAttribute.LONG_DESC.getKey()).getValue());
assertEquals(taskData.getRoot().getAttribute(BugzillaAttribute.PRIORITY.getKey()).getValue(),
updatedTaskData.getRoot().getAttribute(BugzillaAttribute.PRIORITY.getKey()).getValue());
updatedTaskData = results.get(taskData2.getTaskId());
assertEquals(taskData2.getRoot().getAttribute(BugzillaAttribute.ASSIGNED_TO.getKey()).getValue(),
updatedTaskData.getRoot().getAttribute(BugzillaAttribute.ASSIGNED_TO.getKey()).getValue());
assertEquals(taskData2.getRoot().getAttribute(BugzillaAttribute.LONG_DESC.getKey()).getValue(),
updatedTaskData.getRoot().getAttribute(BugzillaAttribute.LONG_DESC.getKey()).getValue());
updatedTaskData = results.get(taskData3.getTaskId());
assertEquals(taskData3.getRoot().getAttribute(BugzillaAttribute.ASSIGNED_TO.getKey()).getValue(),
updatedTaskData.getRoot().getAttribute(BugzillaAttribute.REPORTER.getKey()).getValue());
assertEquals(taskData3.getRoot().getAttribute(BugzillaAttribute.LONG_DESC.getKey()).getValue(),
updatedTaskData.getRoot().getAttribute(BugzillaAttribute.LONG_DESC.getKey()).getValue());
}
public void testPerformQuery() throws Exception {
RepositoryConfiguration repositoryConfiguration = connector.getRepositoryConfiguration(repository.getRepositoryUrl());
List<String> priorities = repositoryConfiguration.getOptionValues(BugzillaAttribute.PRIORITY);
final String priority = priorities.get(0);
final String severity = "trivial";
String email = "tests%40mylyn.eclipse.org";
final String summaryNotNull = "Summary for testPerformQuery " + new Date();
final String descriptionNotNull = "Description for testPerformQuery " + new Date();
// create a Task so we not have on for the query
BugzillaFixture.current().createTask(PrivilegeLevel.USER, new HashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
put(TaskAttribute.SUMMARY, summaryNotNull);
put(TaskAttribute.DESCRIPTION, descriptionNotNull);
put(BugzillaAttribute.OP_SYS.getKey(), "All");
put(BugzillaAttribute.REP_PLATFORM.getKey(), "All");
put(BugzillaAttribute.VERSION.getKey(), "unspecified");
put(TaskAttribute.PRIORITY, priority);
put(TaskAttribute.SEVERITY, severity);
}
});
// create the test Task
TaskData taskData = BugzillaFixture.current().createTask(PrivilegeLevel.USER, new HashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
put(TaskAttribute.SUMMARY, summaryNotNull);
put(TaskAttribute.DESCRIPTION, descriptionNotNull);
put(BugzillaAttribute.OP_SYS.getKey(), "All");
put(BugzillaAttribute.REP_PLATFORM.getKey(), "All");
put(BugzillaAttribute.VERSION.getKey(), "unspecified");
}
});
String bug_status = BugzillaFixture.current()
.getBugzillaVersion()
.compareMajorMinorOnly(BugzillaVersion.BUGZILLA_4_0) < 0
? "&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED"
: "&bug_status=UNCONFIRMED&bug_status=CONFIRMED";
String queryUrlString = repository.getRepositoryUrl() + "/buglist.cgi?priority=" + priority
+ "&emailassigned_to1=1&query_format=advanced&emailreporter1=1&field0-0-0=bug_status&bug_severity="
+ severity + bug_status + "&type0-0-1=equals&value0-0-1=tests%40mylyn.eclipse.org&email1=" + email
+ "&type0-0-0=notequals&field0-0-1=reporter&value0-0-0=UNCONFIRMED&emailtype1=exact&longdesc="
+ descriptionNotNull + "&longdesc_type=casesubstring";
// make sure initial task is not P1/trivial
assertFalse(taskData.getRoot()
.getMappedAttribute(BugzillaAttribute.PRIORITY.getKey())
.getValue()
.equals(priority));
assertFalse(taskData.getRoot()
.getMappedAttribute(BugzillaAttribute.BUG_SEVERITY.getKey())
.getValue()
.equals(severity));
// run query
RepositoryQuery query = new RepositoryQuery(repository.getConnectorKind(), "handle-testQueryViaConnector");
query.setUrl(queryUrlString);
final Map<String, TaskData> changedTaskData = new HashMap<String, TaskData>();
TaskDataCollector collector = new TaskDataCollector() {
@Override
public void accept(TaskData taskData) {
changedTaskData.put(taskData.getTaskId(), taskData);
}
};
connector.performQuery(repository, query, collector, null, new NullProgressMonitor());
assertEquals(1, changedTaskData.size());
// set priority and severity on task
taskData.getRoot()
.getMappedAttribute(BugzillaAttribute.SHORT_DESC.getKey())
.setValue(System.currentTimeMillis() + "");
taskData.getRoot().getMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue(priority);
taskData.getRoot().getMappedAttribute(BugzillaAttribute.BUG_SEVERITY.getKey()).setValue(severity);
taskData.getRoot().getMappedAttribute(TaskAttribute.DESCRIPTION).setValue(descriptionNotNull);
RepositoryResponse response = BugzillaFixture.current().submitTask(taskData, client);
assertFalse(response.getTaskId().equals(""));
TaskData taskDataNew = BugzillaFixture.current().getTask(response.getTaskId(), client);
// run query again
final Map<String, TaskData> changedTaskData2 = new HashMap<String, TaskData>();
TaskDataCollector collector2 = new TaskDataCollector() {
@Override
public void accept(TaskData taskData) {
changedTaskData2.put(taskData.getTaskId(), taskData);
}
};
connector.performQuery(repository, query, collector2, null, new NullProgressMonitor());
assertEquals(2, changedTaskData2.size());
// compare query results
changedTaskData2.keySet().removeAll(changedTaskData.keySet());
assertEquals(1, changedTaskData2.size());
taskData = changedTaskData2.get(taskData.getTaskId());
assertNotNull(taskData);
assertTrue(taskData.getRoot()
.getAttribute(BugzillaAttribute.SHORT_DESC.getKey())
.getValue()
.equals(taskDataNew.getRoot().getAttribute(BugzillaAttribute.SHORT_DESC.getKey()).getValue()));
}
public void testGetTaskMappingPriority() throws Exception {
BugzillaVersion version = new BugzillaVersion(BugzillaFixture.current().getVersion());
AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler();
TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(repository);
TaskData taskData = new TaskData(mapper, repository.getConnectorKind(), repository.getRepositoryUrl(), "");
ITaskMapping mapping = connector.getTaskMapping(taskData);
taskDataHandler.initializeTaskData(repository, taskData, null, null);
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P1");
assertEquals(PriorityLevel.P1, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P2");
assertEquals(PriorityLevel.P2, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P3");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P4");
assertEquals(PriorityLevel.P4, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P5");
assertEquals(PriorityLevel.P5, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("abc");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
if (!version.isSmaller(BugzillaVersion.BUGZILLA_3_6)) {
// fresh bugzilla 3.6 databases have a new schema for priorities
// the value "---" maybe present (as default) so we get P5 or P3 (if not present) as the level
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Highest");
assertEquals(PriorityLevel.P1, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("High");
assertEquals(PriorityLevel.P2, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Normal");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Low");
assertEquals(PriorityLevel.P4, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Lowest");
assertEquals(PriorityLevel.P5, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("---");
PriorityLevel pl = mapping.getPriorityLevel();
assertTrue("P3 or P5 expected! but got " + pl.toString(), pl == PriorityLevel.P3 || pl == PriorityLevel.P5);
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("abc");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
}
}
public void testGetTaskMappingPriorityNoConfiguration() throws Exception {
BugzillaVersion version = new BugzillaVersion(BugzillaFixture.current().getVersion());
AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler();
TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(repository);
TaskData taskData = new TaskData(mapper, repository.getConnectorKind(), repository.getRepositoryUrl(), "");
ITaskMapping mapping = connector.getTaskMapping(taskData);
taskDataHandler.initializeTaskData(repository, taskData, null, null);
connector.removeConfiguration(connector.getRepositoryConfiguration(repository.getRepositoryUrl()));
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P1");
assertEquals(PriorityLevel.P1, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P2");
assertEquals(PriorityLevel.P2, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P3");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P4");
assertEquals(PriorityLevel.P4, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P5");
assertEquals(PriorityLevel.P5, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("abc");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
if (!version.isSmaller(BugzillaVersion.BUGZILLA_3_6)) {
// fresh bugzilla 3.6 databases have a new schema for priorities
// the value "---" maybe present (as default) so we get P5 or P3 (if not present) as the level
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Highest");
assertEquals(PriorityLevel.P1, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("High");
assertEquals(PriorityLevel.P2, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Normal");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Low");
assertEquals(PriorityLevel.P4, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Lowest");
assertEquals(PriorityLevel.P5, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("---");
PriorityLevel pl = mapping.getPriorityLevel();
assertTrue("P3 or P5 expected! but got " + pl.toString(), pl == PriorityLevel.P3 || pl == PriorityLevel.P5);
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("abc");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
}
}
public void testGetTaskMappingPriorityCustom() throws Exception {
BugzillaVersion version = new BugzillaVersion(BugzillaFixture.current().getVersion());
AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler();
TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(repository);
TaskData taskData = new TaskData(mapper, repository.getConnectorKind(), repository.getRepositoryUrl(), "");
ITaskMapping mapping = connector.getTaskMapping(taskData);
taskDataHandler.initializeTaskData(repository, taskData, null, null);
RepositoryConfiguration config = connector.getRepositoryConfiguration(repository.getRepositoryUrl());
connector.removeConfiguration(config);
config = new RepositoryConfiguration();
config.setRepositoryUrl(repository.getRepositoryUrl());
config.addItem(BugzillaAttribute.PRIORITY, "MostHighest");
config.addItem(BugzillaAttribute.PRIORITY, "Highest");
config.addItem(BugzillaAttribute.PRIORITY, "Higher");
config.addItem(BugzillaAttribute.PRIORITY, "High");
config.addItem(BugzillaAttribute.PRIORITY, "Normal");
config.addItem(BugzillaAttribute.PRIORITY, "Low");
config.addItem(BugzillaAttribute.PRIORITY, "Lower");
config.addItem(BugzillaAttribute.PRIORITY, "Lowest");
config.addItem(BugzillaAttribute.PRIORITY, "MostLowest");
connector.addRepositoryConfiguration(config);
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P1");
assertEquals(PriorityLevel.P1, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P2");
assertEquals(PriorityLevel.P2, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P3");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P4");
assertEquals(PriorityLevel.P4, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P5");
assertEquals(PriorityLevel.P5, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("abc");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
if (!version.isSmaller(BugzillaVersion.BUGZILLA_3_6)) {
// fresh bugzilla 3.6 databases have a new schema for priorities
// the value "---" maybe present (as default) so we get P5 or P3 (if not present) as the level
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("MostHighest");
assertEquals(PriorityLevel.P1, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Highest");
assertEquals(PriorityLevel.P1, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Higher");
assertEquals(PriorityLevel.P2, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("High");
assertEquals(PriorityLevel.P2, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Normal");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Low");
assertEquals(PriorityLevel.P4, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Lower");
assertEquals(PriorityLevel.P4, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Lowest");
assertEquals(PriorityLevel.P5, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("MostLowest");
assertEquals(PriorityLevel.P5, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("---");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("abc");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
}
}
public void testGetTaskMappingPriorityCustomWithNoConfig() throws Exception {
BugzillaVersion version = new BugzillaVersion(BugzillaFixture.current().getVersion());
AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler();
TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(repository);
TaskData taskData = new TaskData(mapper, repository.getConnectorKind(), repository.getRepositoryUrl(), "");
ITaskMapping mapping = connector.getTaskMapping(taskData);
taskDataHandler.initializeTaskData(repository, taskData, null, null);
RepositoryConfiguration config = connector.getRepositoryConfiguration(repository.getRepositoryUrl());
connector.removeConfiguration(config);
config = new RepositoryConfiguration();
config.setRepositoryUrl(repository.getRepositoryUrl());
config.addItem(BugzillaAttribute.PRIORITY, "MostHighest");
config.addItem(BugzillaAttribute.PRIORITY, "Highest");
config.addItem(BugzillaAttribute.PRIORITY, "Higher");
config.addItem(BugzillaAttribute.PRIORITY, "High");
config.addItem(BugzillaAttribute.PRIORITY, "Normal");
config.addItem(BugzillaAttribute.PRIORITY, "Low");
config.addItem(BugzillaAttribute.PRIORITY, "Lower");
config.addItem(BugzillaAttribute.PRIORITY, "Lowest");
config.addItem(BugzillaAttribute.PRIORITY, "MostLowest");
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P1");
assertEquals(PriorityLevel.P1, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P2");
assertEquals(PriorityLevel.P2, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P3");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P4");
assertEquals(PriorityLevel.P4, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("P5");
assertEquals(PriorityLevel.P5, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("abc");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
if (!version.isSmaller(BugzillaVersion.BUGZILLA_3_6)) {
// fresh bugzilla 3.6 databases have a new schema for priorities
// the value "---" maybe present (as default) so we get P5 or P3 (if not present) as the level
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("MostHighest");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Highest");
assertEquals(PriorityLevel.P1, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Higher");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("High");
assertEquals(PriorityLevel.P2, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Normal");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Low");
assertEquals(PriorityLevel.P4, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Lower");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("Lowest");
assertEquals(PriorityLevel.P5, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("MostLowest");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("---");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
taskData.getRoot().createMappedAttribute(BugzillaAttribute.PRIORITY.getKey()).setValue("abc");
assertEquals(PriorityLevel.P3, mapping.getPriorityLevel());
}
}
}