/*******************************************************************************
* Copyright (c) 2010 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.oslc.cm.tests;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import junit.framework.TestCase;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.mylyn.commons.net.AbstractWebLocation;
import org.eclipse.mylyn.commons.net.AuthenticationCredentials;
import org.eclipse.mylyn.commons.net.AuthenticationType;
import org.eclipse.mylyn.internal.oslc.core.OslcServiceDescriptor;
import org.eclipse.mylyn.internal.oslc.core.OslcServiceProvider;
import org.eclipse.mylyn.internal.oslc.core.client.AbstractOslcClient;
import org.eclipse.mylyn.internal.oslc.core.cm.AbstractChangeRequest;
import org.eclipse.mylyn.tasks.core.RepositoryResponse;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.TaskRepositoryLocationFactory;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskData;
/**
* Holds tests that exercise the Mylyn OSLC library against Rational Team Concert (RTC) OSLC api
* <ul>
* <li>To be run against a new RTC instance with BASIC auth enabled. BASE_URL need to be update.</li>
* <li>A workitem exists with title "my first work item"</li>
* </ul>
*
* @author Robert Elves
*/
public class RtcOlscTest extends TestCase {
private TaskRepository repository;
private AbstractWebLocation location;
private AbstractOslcClient client;
private static final String BASE_URL = "https://192.168.0.3:9443/jazz/oslc/workitems/catalog";
private static final String SERVICE_URL = "https://192.168.0.3:9443/jazz/oslc/contexts/_9Dyg4DLzEd-G-8cuiS4gvg/workitems/services.xml";
@Override
protected void setUp() throws Exception {
super.setUp();
this.repository = new TaskRepository("rtc", SERVICE_URL);
this.repository.setCredentials(AuthenticationType.REPOSITORY, new AuthenticationCredentials("ADMIN", "ADMIN"),
false);
this.location = new TaskRepositoryLocationFactory().createWebLocation(repository);
this.client = new AbstractOslcClient(location, new OslcServiceDescriptor(SERVICE_URL)) {
@Override
public RepositoryResponse putTaskData(TaskData taskData, Set<TaskAttribute> oldValues,
IProgressMonitor monitor) throws CoreException {
// ignore
return null;
}
@Override
public String getUserAgent() {
// ignore
return null;
}
@Override
public TaskData getTaskData(String encodedTaskId, TaskAttributeMapper mapper, IProgressMonitor monitor)
throws CoreException {
// ignore
return null;
}
@Override
protected AbstractChangeRequest createChangeRequest(String id, String title) {
return new AbstractChangeRequest(id, title) {
};
}
};
}
// Test Passing when resource urls below match up with your particular RTC instance
// and when BASE_URL set to service url.
/*public void testChangeRequestCreation() throws Exception {
TaskData data = new TaskData(new TaskAttributeMapper(repository), "oslc", BASE_URL, "");
data.getRoot().createAttribute(IOslcCoreConstants.ELEMENT_TITLE).setValue("New Title");
data.getRoot().createAttribute(IOslcCoreConstants.ELEMENT_TYPE).setValue(
"https://192.168.0.3:9443/jazz/oslc/types/_9Dyg4DLzEd-G-8cuiS4gvg/defect");
data.getRoot().createAttribute(IOslcCoreConstants.ELEMENT_DESCRIPTION).setValue("New Description");
data.getRoot().createAttribute(IOslcCoreConstants.ELEMENT_SUBJECT).setValue("New Subject");
data.getRoot()
.createAttribute("filedAgainst")
.setValue(
"https://192.168.0.3:9443/jazz/resource/itemOid/com.ibm.team.workitem.Category/_9cYnETLzEd-G-8cuiS4gvg");
RepositoryResponse response = client.postTaskData(data, null);
assertNotNull(response);
}*/
/**
* Service Discovery
*/
public void testServiceCatalogParsing() throws Exception {
List<OslcServiceProvider> services = client.getAvailableServices(BASE_URL, null);
assertEquals(1, services.size());
OslcServiceProvider desc = services.get(0);
OslcServiceDescriptor serviceDescriptor = client.getServiceDescriptor(desc, null);
assertTrue(serviceDescriptor.getSimpleQueryUrl().endsWith("/workitems"));
}
/**
* Simple Query for ChangeRequests
*/
public void testSimpleQuery() throws Exception {
List<OslcServiceProvider> services = client.getAvailableServices(BASE_URL, null);
@SuppressWarnings("unused")
OslcServiceProvider desc = services.get(0);
Collection<AbstractChangeRequest> result = client.performQuery("dc:title=\"my first work item\"", null);
assertEquals(1, result.size());
AbstractChangeRequest request = result.iterator().next();
request.getTitle().equals("my first work item");
}
}