| /******************************************************************************* |
| * Copyright (c) 2014 Frank Becker 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: |
| * Frank Becker - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.mylyn.bugzilla.rest.core.tests; |
| |
| import static org.hamcrest.CoreMatchers.is; |
| import static org.hamcrest.Matchers.greaterThan; |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.assertNull; |
| import static org.junit.Assert.assertThat; |
| import static org.junit.Assert.assertTrue; |
| import static org.junit.Assert.fail; |
| |
| import java.io.File; |
| import java.io.FileOutputStream; |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.io.OutputStream; |
| import java.util.ArrayList; |
| import java.util.Arrays; |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.HashMap; |
| import java.util.HashSet; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.Map.Entry; |
| import java.util.Set; |
| |
| import org.apache.commons.io.IOUtils; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.mylyn.bugzilla.rest.test.support.BugzillaRestHarness; |
| import org.eclipse.mylyn.bugzilla.rest.test.support.BugzillaRestTestFixture; |
| import org.eclipse.mylyn.commons.repositories.core.RepositoryLocation; |
| import org.eclipse.mylyn.commons.repositories.core.auth.AuthenticationType; |
| import org.eclipse.mylyn.commons.repositories.core.auth.UserCredentials; |
| import org.eclipse.mylyn.commons.sdk.util.AbstractTestFixture; |
| import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil; |
| import org.eclipse.mylyn.commons.sdk.util.ConditionalIgnoreRule; |
| import org.eclipse.mylyn.commons.sdk.util.IFixtureJUnitClass; |
| import org.eclipse.mylyn.commons.sdk.util.Junit4TestFixtureRunner; |
| import org.eclipse.mylyn.commons.sdk.util.Junit4TestFixtureRunner.FixtureDefinition; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestAttachmentMapper; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestClient; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestConfiguration; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestConnector; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestCreateTaskSchema; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestException; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestTaskAttachmentHandler; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestTaskSchema; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestVersion; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.IBugzillaRestConstants; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.response.data.Field; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.response.data.Parameters; |
| import org.eclipse.mylyn.internal.bugzilla.rest.core.response.data.Product; |
| import org.eclipse.mylyn.internal.commons.core.operations.NullOperationMonitor; |
| import org.eclipse.mylyn.internal.commons.repositories.core.InMemoryCredentialsStore; |
| import org.eclipse.mylyn.internal.tasks.core.TaskTask; |
| import org.eclipse.mylyn.internal.tasks.core.data.FileTaskAttachmentSource; |
| import org.eclipse.mylyn.internal.tasks.core.data.TaskDataState; |
| import org.eclipse.mylyn.tasks.core.ITask; |
| import org.eclipse.mylyn.tasks.core.RepositoryResponse; |
| import org.eclipse.mylyn.tasks.core.RepositoryResponse.ResponseKind; |
| import org.eclipse.mylyn.tasks.core.TaskMapping; |
| 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; |
| import org.eclipse.mylyn.tasks.core.data.TaskMapper; |
| import org.junit.Before; |
| import org.junit.Rule; |
| import org.junit.Test; |
| import org.junit.rules.ExpectedException; |
| import org.junit.runner.RunWith; |
| |
| import com.google.gson.Gson; |
| |
| @SuppressWarnings("restriction") |
| @RunWith(Junit4TestFixtureRunner.class) |
| @FixtureDefinition(fixtureClass = BugzillaRestTestFixture.class, fixtureType = "bugzillaREST") |
| // use this if you only want to run the test class if the property exists with |
| // the value in the fixture. |
| // Note: When there is no fixture with this property no tests get executed |
| //@RunOnlyWhenProperty(property = "default", value = "1") |
| public class BugzillaRestClientTest implements IFixtureJUnitClass { |
| private final BugzillaRestTestFixture actualFixture; |
| |
| @Rule |
| public ConditionalIgnoreRule rule = new ConditionalIgnoreRule(this); |
| |
| @Rule |
| public ExpectedException thrown = ExpectedException.none(); |
| |
| private BugzillaRestConnector connector; |
| |
| private BugzillaRestHarness harness; |
| |
| public BugzillaRestClientTest(BugzillaRestTestFixture fixture) { |
| this.actualFixture = fixture; |
| } |
| |
| @Before |
| public void setUp() { |
| connector = actualFixture.connector(); |
| harness = actualFixture.createHarness(); |
| } |
| |
| public AbstractTestFixture getActualFixture() { |
| return actualFixture; |
| } |
| |
| @Test |
| public void testConnectorClientCache() throws Exception { |
| BugzillaRestClient client1 = connector.getClient(actualFixture.repository()); |
| assertNotNull(client1); |
| } |
| |
| @Test |
| public void testGetVersion() throws Exception { |
| BugzillaRestClient client = new BugzillaRestClient(actualFixture.location(), connector); |
| assertNotNull(client.getClient()); |
| BugzillaRestVersion version = client.getVersion(new NullOperationMonitor()); |
| assertEquals("expeccted: " + actualFixture.getVersion() + " actual: " + version.toString(), |
| actualFixture.getVersion(), version.toString()); |
| } |
| |
| @Test |
| public void testValidate() throws Exception { |
| BugzillaRestClient client = new BugzillaRestClient(actualFixture.location(), connector); |
| assertNotNull(client.getClient()); |
| assertTrue(client.validate(new NullOperationMonitor())); |
| } |
| |
| @Test |
| public void testInvalidUserValidate() throws BugzillaRestException { |
| RepositoryLocation location = new RepositoryLocation(); |
| location.setUrl(actualFixture.getRepositoryUrl()); |
| location.setProxy(null); |
| location.setCredentialsStore(new InMemoryCredentialsStore()); |
| location.setCredentials(AuthenticationType.REPOSITORY, new UserCredentials("wrong", "wrong")); |
| BugzillaRestClient client; |
| client = new BugzillaRestClient(location, connector); |
| assertNotNull(client.getClient()); |
| thrown.expect(BugzillaRestException.class); |
| thrown.expectMessage("Unauthorized"); |
| client.validate(new NullOperationMonitor()); |
| } |
| |
| @Test |
| public void testNoUserValidate() throws BugzillaRestException { |
| RepositoryLocation location = new RepositoryLocation(); |
| location.setUrl(actualFixture.getRepositoryUrl()); |
| location.setProxy(null); |
| location.setCredentialsStore(new InMemoryCredentialsStore()); |
| location.setCredentials(AuthenticationType.REPOSITORY, null); |
| BugzillaRestClient client; |
| client = new BugzillaRestClient(location, connector); |
| thrown.expect(IllegalStateException.class); |
| thrown.expectMessage("Authentication requested without valid credentials"); |
| client.validate(new NullOperationMonitor()); |
| } |
| |
| @Test |
| public void testInvalidPasswordValidate() throws BugzillaRestException { |
| RepositoryLocation location = new RepositoryLocation(); |
| location.setUrl(actualFixture.getRepositoryUrl()); |
| location.setProxy(null); |
| location.setCredentialsStore(new InMemoryCredentialsStore()); |
| location.setCredentials(AuthenticationType.REPOSITORY, new UserCredentials("tests@mylyn.eclipse.org", "wrong")); |
| BugzillaRestClient client; |
| client = new BugzillaRestClient(location, connector); |
| assertNotNull(client.getClient()); |
| thrown.expect(BugzillaRestException.class); |
| thrown.expectMessage("Unauthorized"); |
| client.validate(new NullOperationMonitor()); |
| } |
| |
| @Test |
| @ConditionalIgnoreRule.ConditionalIgnore(condition = MustRunOnApikeyRule.class) |
| public void testApikeyValidate() throws BugzillaRestException { |
| RepositoryLocation location = new RepositoryLocation(); |
| location.setUrl(actualFixture.getRepositoryUrl()); |
| location.setProxy(null); |
| location.setCredentialsStore(new InMemoryCredentialsStore()); |
| location.setCredentials(AuthenticationType.REPOSITORY, new UserCredentials("tests@mylyn.eclipse.org", "")); |
| location.setProperty(IBugzillaRestConstants.REPOSITORY_USE_API_KEY, Boolean.toString(true)); |
| location.setProperty(IBugzillaRestConstants.REPOSITORY_API_KEY, "wvkz2SoBMBQEKv6ishp1j7NY1R9l711g5w2afXc6"); |
| BugzillaRestClient client; |
| client = new BugzillaRestClient(location, connector); |
| assertNotNull(client.getClient()); |
| assertTrue(client.validate(new NullOperationMonitor())); |
| } |
| |
| @Test |
| @ConditionalIgnoreRule.ConditionalIgnore(condition = MustRunOnApikeyRule.class) |
| public void testInvalidApikeyValidate() throws BugzillaRestException { |
| RepositoryLocation location = new RepositoryLocation(); |
| location.setUrl(actualFixture.getRepositoryUrl()); |
| location.setProxy(null); |
| location.setCredentialsStore(new InMemoryCredentialsStore()); |
| location.setCredentials(AuthenticationType.REPOSITORY, new UserCredentials("tests@mylyn.eclipse.org", "")); |
| location.setProperty(IBugzillaRestConstants.REPOSITORY_USE_API_KEY, Boolean.toString(true)); |
| location.setProperty(IBugzillaRestConstants.REPOSITORY_API_KEY, "wvkz2SoBMBQEKv6ishp1j7NY1R9l711g5w2afXc8"); |
| BugzillaRestClient client; |
| client = new BugzillaRestClient(location, connector); |
| assertNotNull(client.getClient()); |
| thrown.expect(BugzillaRestException.class); |
| thrown.expectMessage("The API key you specified is invalid"); |
| client.validate(new NullOperationMonitor()); |
| } |
| |
| @Test |
| public void testGetConfiguration() throws Exception { |
| TaskRepository repository = actualFixture.repository(); |
| BugzillaRestClient client = connector.getClient(repository); |
| BugzillaRestConfiguration configuration = client.getConfiguration(repository, new NullOperationMonitor()); |
| Map<String, Field> fields = configuration.getFields(); |
| Collection<Field> fieldCollection = fields.values(); |
| assertConfigurationFieldNames(fieldCollection); |
| assertEquals( |
| IOUtils.toString(CommonTestUtil.getResource(this, actualFixture.getTestDataFolder() + "/fields.json")), |
| new Gson().toJson(fields)); |
| Map<String, Product> products = configuration.getProducts(); |
| assertEquals( |
| IOUtils.toString( |
| CommonTestUtil.getResource(this, actualFixture.getTestDataFolder() + "/products.json")), |
| new Gson().toJson(products)); |
| Parameters parameter = configuration.getParameters(); |
| assertEquals( |
| IOUtils.toString( |
| CommonTestUtil.getResource(this, actualFixture.getTestDataFolder() + "/parameters.json")), |
| new Gson().toJson(parameter).replaceAll(repository.getRepositoryUrl(), "http://dummy.url")); |
| assertEquals( |
| IOUtils.toString( |
| CommonTestUtil.getResource(this, actualFixture.getTestDataFolder() + "/configuration.json")), |
| new Gson().toJson(configuration).replaceAll(repository.getRepositoryUrl(), "http://dummy.url")); |
| } |
| |
| private void assertConfigurationFieldNames(Collection<Field> fields) throws IOException { |
| List<String> fieldNameList = new ArrayList<String>(fields.size()); |
| for (Field field : fields) { |
| fieldNameList.add(field.getName()); |
| } |
| Collections.sort(fieldNameList); |
| assertEquals( |
| IOUtils.toString( |
| CommonTestUtil.getResource(this, actualFixture.getTestDataFolder() + "/fieldName.json")), |
| new Gson().toJson(fieldNameList)); |
| } |
| |
| @Test |
| public void testinitializeTaskData() throws Exception { |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "The Summary"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The Description"; |
| } |
| }; |
| final TaskMapping taskMappingSelect = new TaskMapping() { |
| @Override |
| public String getProduct() { |
| return "TestProduct"; |
| } |
| }; |
| |
| AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler(); |
| TaskRepository repository = actualFixture.repository(); |
| TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(repository); |
| TaskData taskData = new TaskData(mapper, repository.getConnectorKind(), repository.getRepositoryUrl(), ""); |
| assertTrue(taskDataHandler.initializeTaskData(repository, taskData, null, null)); |
| assertEquals( |
| IOUtils.toString(CommonTestUtil.getResource(this, actualFixture.getTestDataFolder() + "/taskData.txt")), |
| taskData.getRoot().toString()); |
| taskData = new TaskData(mapper, repository.getConnectorKind(), repository.getRepositoryUrl(), ""); |
| assertTrue(taskDataHandler.initializeTaskData(repository, taskData, taskMappingInit, null)); |
| assertEquals( |
| IOUtils.toString( |
| CommonTestUtil.getResource(this, actualFixture.getTestDataFolder() + "/taskData1.txt")), |
| taskData.getRoot().toString()); |
| taskData = new TaskData(mapper, repository.getConnectorKind(), repository.getRepositoryUrl(), ""); |
| assertTrue(taskDataHandler.initializeTaskData(repository, taskData, taskMappingSelect, null)); |
| assertEquals( |
| IOUtils.toString( |
| CommonTestUtil.getResource(this, actualFixture.getTestDataFolder() + "/taskData2.txt")), |
| taskData.getRoot().toString()); |
| } |
| |
| @Test |
| public void testPostTaskDataWithoutProduct() throws Exception { |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "The Summary"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The Description"; |
| } |
| |
| }; |
| AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler(); |
| TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(actualFixture.repository()); |
| TaskData taskData = new TaskData(mapper, actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), ""); |
| taskDataHandler.initializeTaskData(actualFixture.repository(), taskData, taskMappingInit, null); |
| taskData.getRoot().getAttribute("cf_dropdown").setValue("one"); |
| try { |
| connector.getClient(actualFixture.repository()).postTaskData(taskData, null, null); |
| fail("never reach this!"); |
| } catch (BugzillaRestException e) { |
| String url = actualFixture.getRepositoryUrl(); |
| assertEquals("You must select/enter a product. (status: Bad Request from " |
| + url.substring(url.lastIndexOf('/')) + "/rest.cgi/bug)", e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void testPostTaskDataWithoutMilestone() throws Exception { |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "The Summary"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The Description"; |
| } |
| |
| @Override |
| public String getProduct() { |
| return "ManualTest"; |
| } |
| |
| @Override |
| public String getComponent() { |
| return "ManualC1"; |
| } |
| |
| @Override |
| public String getVersion() { |
| return "R1"; |
| } |
| }; |
| AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler(); |
| TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(actualFixture.repository()); |
| TaskData taskData = new TaskData(mapper, actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), ""); |
| taskDataHandler.initializeTaskData(actualFixture.repository(), taskData, taskMappingInit, null); |
| taskData.getRoot().getAttribute("cf_dropdown").setValue("one"); |
| try { |
| connector.getClient(actualFixture.repository()).postTaskData(taskData, null, null); |
| fail("never reach this!"); |
| } catch (BugzillaRestException e) { |
| String url = actualFixture.getRepositoryUrl(); |
| assertEquals("You must select/enter a milestone. (status: Bad Request from " |
| + url.substring(url.lastIndexOf('/')) + "/rest.cgi/bug)", e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void testPostTaskData() throws Exception { |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "The Summary"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The Description"; |
| } |
| |
| @Override |
| public String getProduct() { |
| return "ManualTest"; |
| } |
| |
| @Override |
| public String getComponent() { |
| return "ManualC1"; |
| } |
| |
| @Override |
| public String getVersion() { |
| return "R1"; |
| } |
| }; |
| AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler(); |
| TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(actualFixture.repository()); |
| TaskData taskData = new TaskData(mapper, actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), ""); |
| taskDataHandler.initializeTaskData(actualFixture.repository(), taskData, taskMappingInit, null); |
| taskData.getRoot().getAttribute("cf_dropdown").setValue("one"); |
| taskData.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().TARGET_MILESTONE.getKey()) |
| .setValue("M2"); |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskData, null, |
| null); |
| assertEquals(ResponseKind.TASK_CREATED, reposonse.getReposonseKind()); |
| } |
| |
| @Test |
| public void testPostTaskDataFromTaskdata() throws Exception { |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "The Summary"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The Description"; |
| } |
| |
| @Override |
| public String getProduct() { |
| return "ManualTest"; |
| } |
| |
| @Override |
| public String getComponent() { |
| return "ManualC1"; |
| } |
| |
| @Override |
| public String getVersion() { |
| return "R1"; |
| } |
| }; |
| AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler(); |
| TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(actualFixture.repository()); |
| TaskData taskData = new TaskData(mapper, actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), ""); |
| taskDataHandler.initializeTaskData(actualFixture.repository(), taskData, taskMappingInit, null); |
| taskData.getRoot().getAttribute("cf_dropdown").setValue("one"); |
| taskData.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().TARGET_MILESTONE.getKey()) |
| .setValue("M2"); |
| |
| TaskData taskDataSubmit = new TaskData(mapper, actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), ""); |
| taskDataHandler.initializeTaskData(actualFixture.repository(), taskDataSubmit, null, null); |
| TaskMapper mapper1 = new TaskMapper(taskData); |
| connector.getTaskMapping(taskDataSubmit).merge(mapper1); |
| |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataSubmit, |
| null, null); |
| assertEquals(ResponseKind.TASK_CREATED, reposonse.getReposonseKind()); |
| } |
| |
| @Test |
| public void testGetTaskData() throws Exception { |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "The Summary"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The Description"; |
| } |
| |
| @Override |
| public String getProduct() { |
| return "ManualTest"; |
| } |
| |
| @Override |
| public String getComponent() { |
| return "ManualC1"; |
| } |
| |
| @Override |
| public String getVersion() { |
| return "R1"; |
| } |
| }; |
| TaskData taskData = harness.createTaskData(taskMappingInit, null, null); |
| |
| taskData.getRoot().getAttribute("cf_dropdown").setValue("one"); |
| taskData.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().TARGET_MILESTONE.getKey()) |
| .setValue("M2"); |
| String taskId = harness.submitNewTask(taskData); |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| // description is only for old tasks readonly and has the two sub attributes |
| // COMMENT_NUMBER and COMMENT_ISPRIVATE |
| TaskAttribute getDesc = taskDataGet.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().DESCRIPTION.getKey()); |
| getDesc.getMetaData().setReadOnly(false); |
| getDesc.removeAttribute(TaskAttribute.COMMENT_ISPRIVATE); |
| getDesc.removeAttribute(TaskAttribute.COMMENT_NUMBER); |
| |
| // resolution is only for new tasks readonly |
| taskData.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().RESOLUTION.getKey()) |
| .getMetaData() |
| .setReadOnly(false); |
| |
| // attributes we know that they can not be equal |
| taskData.getRoot().removeAttribute(BugzillaRestTaskSchema.getDefault().STATUS.getKey()); |
| taskDataGet.getRoot().removeAttribute(BugzillaRestTaskSchema.getDefault().STATUS.getKey()); |
| taskData.getRoot().removeAttribute(BugzillaRestTaskSchema.getDefault().ASSIGNED_TO.getKey()); |
| taskDataGet.getRoot().removeAttribute(BugzillaRestTaskSchema.getDefault().ASSIGNED_TO.getKey()); |
| taskData.getRoot().removeAttribute(TaskAttribute.OPERATION); |
| taskDataGet.getRoot().removeAttribute(TaskAttribute.OPERATION); |
| taskDataGet.getRoot().removeAttribute(BugzillaRestTaskSchema.getDefault().DATE_MODIFICATION.getKey()); |
| taskData.getRoot().removeAttribute(BugzillaRestTaskSchema.getDefault().DATE_MODIFICATION.getKey()); |
| // CC attribute has diverences in the meta data between create and update |
| taskData.getRoot().removeAttribute(TaskAttribute.USER_CC); |
| taskDataGet.getRoot().removeAttribute(TaskAttribute.USER_CC); |
| |
| // attributes only in old tasks |
| taskData.getRoot().removeAttribute("description_is_private"); |
| |
| // attributes only in new tasks |
| taskDataGet.getRoot().removeAttribute("bug_id"); |
| taskDataGet.getRoot().removeAttribute(TaskAttribute.COMMENT_NEW); |
| taskDataGet.getRoot().removeAttribute("addCC"); |
| taskDataGet.getRoot().removeAttribute("removeCC"); |
| taskDataGet.getRoot().removeAttribute(BugzillaRestTaskSchema.getDefault().RESET_QA_CONTACT.getKey()); |
| taskDataGet.getRoot().removeAttribute(BugzillaRestTaskSchema.getDefault().RESET_ASSIGNED_TO.getKey()); |
| taskDataGet.getRoot().removeAttribute(BugzillaRestTaskSchema.getDefault().ADD_SELF_CC.getKey()); |
| ArrayList<TaskAttribute> flags = new ArrayList<>(); |
| for (TaskAttribute attribute : taskDataGet.getRoot().getAttributes().values()) { |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| flags.add(attribute); |
| } |
| } |
| for (TaskAttribute taskAttribute : flags) { |
| taskDataGet.getRoot().removeAttribute(taskAttribute.getId()); |
| } |
| |
| // attributes for operations |
| taskDataGet.getRoot().removeAttribute("task.common.operation-CONFIRMED"); |
| taskDataGet.getRoot().removeAttribute("task.common.operation-IN_PROGRESS"); |
| taskDataGet.getRoot().removeAttribute("task.common.operation-RESOLVED"); |
| taskDataGet.getRoot().removeAttribute("resolutionInput"); |
| taskDataGet.getRoot().removeAttribute("task.common.operation-duplicate"); |
| taskDataGet.getRoot().removeAttribute(BugzillaRestTaskSchema.getDefault().DUPE_OF.getKey()); |
| |
| assertEquals(taskData.getRoot().toString(), taskDataGet.getRoot().toString()); |
| assertEquals( |
| IOUtils.toString( |
| CommonTestUtil.getResource(this, actualFixture.getTestDataFolder() + "/taskDataFlags.txt")), |
| flags.toString()); } |
| |
| @Test |
| public void testUpdateTaskData() throws Exception { |
| String taskId = harness.getNewTaksId4TestProduct(); |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| Set<TaskAttribute> changed = new HashSet<TaskAttribute>(); |
| |
| TaskAttribute attribute = taskDataGet.getRoot() |
| .getMappedAttribute(BugzillaRestCreateTaskSchema.getDefault().PRODUCT.getKey()); |
| attribute.setValue("Product with Spaces"); |
| changed.add(attribute); |
| attribute = taskDataGet.getRoot() |
| .getMappedAttribute(BugzillaRestCreateTaskSchema.getDefault().COMPONENT.getKey()); |
| attribute.setValue("Component 1"); |
| changed.add(attribute); |
| attribute = taskDataGet.getRoot() |
| .getMappedAttribute(BugzillaRestCreateTaskSchema.getDefault().VERSION.getKey()); |
| attribute.setValue("b"); |
| changed.add(attribute); |
| attribute = taskDataGet.getRoot() |
| .getMappedAttribute(BugzillaRestCreateTaskSchema.getDefault().TARGET_MILESTONE.getKey()); |
| attribute.setValue("M3.0"); |
| changed.add(attribute); |
| |
| attribute = taskDataGet.getRoot().getAttribute("cf_dropdown"); |
| attribute.setValue("two"); |
| changed.add(attribute); |
| attribute = taskDataGet.getRoot().getAttribute("cf_multiselect"); |
| attribute.setValues(Arrays.asList("Red", "Yellow")); |
| changed.add(attribute); |
| |
| //Act |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataGet, |
| changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| TaskData taskDataUpdate = harness.getTaskFromServer(taskId); |
| |
| attribute = taskDataUpdate.getRoot() |
| .getMappedAttribute(BugzillaRestCreateTaskSchema.getDefault().PRODUCT.getKey()); |
| assertThat(attribute.getValue(), is("Product with Spaces")); |
| attribute = taskDataUpdate.getRoot() |
| .getMappedAttribute(BugzillaRestCreateTaskSchema.getDefault().COMPONENT.getKey()); |
| assertThat(attribute.getValue(), is("Component 1")); |
| attribute = taskDataUpdate.getRoot() |
| .getMappedAttribute(BugzillaRestCreateTaskSchema.getDefault().VERSION.getKey()); |
| assertThat(attribute.getValue(), is("b")); |
| attribute = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().TARGET_MILESTONE.getKey()); |
| assertThat(attribute.getValue(), is("M3.0")); |
| attribute = taskDataUpdate.getRoot().getAttribute("cf_dropdown"); |
| assertThat(attribute.getValue(), is("two")); |
| attribute = taskDataUpdate.getRoot().getAttribute("cf_multiselect"); |
| assertThat(attribute.getValues(), is(Arrays.asList("Red", "Yellow"))); |
| } |
| |
| @Test |
| public void testAddComment() throws Exception { |
| String taskId = harness.getNewTaksId4TestProduct(); |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| Set<TaskAttribute> changed = new HashSet<TaskAttribute>(); |
| |
| TaskAttribute attribute = taskDataGet.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().NEW_COMMENT.getKey()); |
| attribute.setValue("The Comment"); |
| changed.add(attribute); |
| |
| //Act |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataGet, |
| changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| TaskData taskDataUpdate = harness.getTaskFromServer(taskId); |
| |
| attribute = taskDataUpdate.getRoot().getMappedAttribute(TaskAttribute.PREFIX_COMMENT + "1"); |
| assertNotNull(attribute); |
| TaskAttribute commentAttribute = attribute.getMappedAttribute(TaskAttribute.COMMENT_TEXT); |
| assertNotNull(commentAttribute); |
| assertThat(commentAttribute.getValue(), is("The Comment")); |
| commentAttribute = attribute.getMappedAttribute(TaskAttribute.COMMENT_NUMBER); |
| assertNotNull(commentAttribute); |
| assertThat(commentAttribute.getValue(), is("1")); |
| commentAttribute = attribute.getMappedAttribute(TaskAttribute.COMMENT_ISPRIVATE); |
| assertNotNull(commentAttribute); |
| assertThat(commentAttribute.getValue(), is("false")); |
| } |
| |
| @Test |
| public void testGifAttachment() throws Exception { |
| TaskAttribute attachmentAttribute = null; |
| TaskRepository repository = actualFixture.repository(); |
| |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "Bug for Gif Attachment"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The bug is used to test that gif attachments can be put and get correctly!"; |
| } |
| |
| @Override |
| public String getProduct() { |
| return "ManualTest"; |
| } |
| |
| @Override |
| public String getComponent() { |
| return "ManualC1"; |
| } |
| |
| @Override |
| public String getVersion() { |
| return "R1"; |
| } |
| }; |
| String taskId = harness.getNewTaksIdFromInitMapping(taskMappingInit, harness.taskInitializationData); |
| TaskData taskData = harness.getTaskFromServer(taskId); |
| assertNotNull(taskData); |
| for (Entry<String, TaskAttribute> entry : taskData.getRoot().getAttributes().entrySet()) { |
| if (TaskAttribute.TYPE_ATTACHMENT.equals(entry.getValue().getMetaData().getType())) { |
| attachmentAttribute = entry.getValue(); |
| } |
| } |
| assertNull(attachmentAttribute); |
| BugzillaRestTaskAttachmentHandler attachmentHandler = new BugzillaRestTaskAttachmentHandler(connector); |
| ITask task = new TaskTask(actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), taskId); |
| |
| InputStream in = CommonTestUtil.getResource(this, "testdata/icons/bugzilla-logo.gif"); |
| File file = File.createTempFile("attachment", null); |
| file.deleteOnExit(); |
| OutputStream out = new FileOutputStream(file); |
| try { |
| IOUtils.copy(in, out); |
| } finally { |
| in.close(); |
| out.close(); |
| } |
| |
| FileTaskAttachmentSource attachment = new FileTaskAttachmentSource(file); |
| attachment.setContentType("image/gif"); |
| attachment.setDescription("My Attachment 2"); |
| attachment.setName("Attachment 2.gif"); |
| attachmentHandler.postContent(repository, task, attachment, "comment", null, null); |
| taskData = getTaskData(taskId); |
| assertNotNull(taskData); |
| for (Entry<String, TaskAttribute> entry : taskData.getRoot().getAttributes().entrySet()) { |
| if (TaskAttribute.TYPE_ATTACHMENT.equals(entry.getValue().getMetaData().getType())) { |
| attachmentAttribute = entry.getValue(); |
| } |
| } |
| assertNotNull(attachmentAttribute); |
| InputStream instream = attachmentHandler.getContent(actualFixture.repository(), task, attachmentAttribute, |
| null); |
| InputStream instream2 = CommonTestUtil.getResource(this, "testdata/icons/bugzilla-logo.gif"); |
| assertTrue(IOUtils.contentEquals(instream, instream2)); |
| } |
| |
| @Test |
| public void testTextAttachment() throws Exception { |
| TaskAttribute attachmentAttribute = null; |
| TaskRepository repository = actualFixture.repository(); |
| |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "Bug for Text Attachment"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The bug is used to test that text attachments can be put and get correctly!"; |
| } |
| |
| @Override |
| public String getProduct() { |
| return "ManualTest"; |
| } |
| |
| @Override |
| public String getComponent() { |
| return "ManualC1"; |
| } |
| |
| @Override |
| public String getVersion() { |
| return "R1"; |
| } |
| }; |
| String taskId = harness.getNewTaksIdFromInitMapping(taskMappingInit, harness.taskInitializationData); |
| TaskData taskData = harness.getTaskFromServer(taskId); |
| assertNotNull(taskData); |
| for (Entry<String, TaskAttribute> entry : taskData.getRoot().getAttributes().entrySet()) { |
| if (TaskAttribute.TYPE_ATTACHMENT.equals(entry.getValue().getMetaData().getType())) { |
| attachmentAttribute = entry.getValue(); |
| } |
| } |
| assertNull(attachmentAttribute); |
| BugzillaRestTaskAttachmentHandler attachmentHandler = new BugzillaRestTaskAttachmentHandler(connector); |
| ITask task = new TaskTask(actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), taskId); |
| |
| InputStream in = CommonTestUtil.getResource(this, "testdata/AttachmentTest.txt"); |
| File file = File.createTempFile("attachment", null); |
| file.deleteOnExit(); |
| OutputStream out = new FileOutputStream(file); |
| try { |
| IOUtils.copy(in, out); |
| } finally { |
| in.close(); |
| out.close(); |
| } |
| |
| FileTaskAttachmentSource attachment = new FileTaskAttachmentSource(file); |
| attachment.setContentType("text/plain"); |
| attachment.setDescription("My Attachment 2"); |
| attachment.setName("Attachment 2.txt"); |
| attachmentHandler.postContent(repository, task, attachment, "comment", null, null); |
| taskData = getTaskData(taskId); |
| assertNotNull(taskData); |
| for (Entry<String, TaskAttribute> entry : taskData.getRoot().getAttributes().entrySet()) { |
| if (TaskAttribute.TYPE_ATTACHMENT.equals(entry.getValue().getMetaData().getType())) { |
| attachmentAttribute = entry.getValue(); |
| } |
| } |
| assertNotNull(attachmentAttribute); |
| InputStream instream = attachmentHandler.getContent(actualFixture.repository(), task, attachmentAttribute, |
| null); |
| InputStream instream2 = CommonTestUtil.getResource(this, "testdata/AttachmentTest.txt"); |
| assertTrue(IOUtils.contentEquals(instream, instream2)); |
| } |
| |
| private TaskData getTaskData(final String taskId) throws CoreException, BugzillaRestException { |
| BugzillaRestClient client = connector.getClient(actualFixture.repository()); |
| final Map<String, TaskData> results = new HashMap<String, TaskData>(); |
| client.getTaskData(new HashSet<String>() { |
| private static final long serialVersionUID = 1L; |
| |
| { |
| add(taskId); |
| } |
| }, actualFixture.repository(), new TaskDataCollector() { |
| |
| @Override |
| public void accept(TaskData taskData) { |
| results.put(taskData.getTaskId(), taskData); |
| } |
| }, null); |
| return results.get(taskId); |
| } |
| |
| @Test |
| public void testCreateCCAttribute() throws Exception { |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "Test CC Attribute"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The Description"; |
| } |
| |
| @Override |
| public String getProduct() { |
| return "ManualTest"; |
| } |
| |
| @Override |
| public String getComponent() { |
| return "ManualC1"; |
| } |
| |
| @Override |
| public String getVersion() { |
| return "R1"; |
| } |
| }; |
| AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler(); |
| TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(actualFixture.repository()); |
| TaskData taskData = new TaskData(mapper, actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), ""); |
| taskDataHandler.initializeTaskData(actualFixture.repository(), taskData, taskMappingInit, null); |
| taskData.getRoot().getAttribute("cf_dropdown").setValue("one"); |
| taskData.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().TARGET_MILESTONE.getKey()) |
| .setValue("M2"); |
| taskData.getRoot().getAttribute(BugzillaRestCreateTaskSchema.getDefault().CC.getKey()).setValue( |
| "admin@mylyn.eclipse.org, tests@mylyn.eclipse.org"); |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskData, null, |
| null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_CREATED)); |
| TaskData taskDataUpdate = harness.getTaskFromServer(reposonse.getTaskId()); |
| TaskAttribute ccAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().CC.getKey()); |
| assertEquals(2, ccAttrib.getValues().size()); |
| assertEquals("admin@mylyn.eclipse.org", ccAttrib.getValues().get(0)); |
| assertEquals("tests@mylyn.eclipse.org", ccAttrib.getValues().get(1)); |
| } |
| |
| @Test |
| public void testCreateBlocksAttribute() throws Exception { |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "Test blocks Attribute"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The Description"; |
| } |
| |
| @Override |
| public String getProduct() { |
| return "ManualTest"; |
| } |
| |
| @Override |
| public String getComponent() { |
| return "ManualC1"; |
| } |
| |
| @Override |
| public String getVersion() { |
| return "R1"; |
| } |
| }; |
| String[] taskIdRel = harness.getRelationTasks(); |
| AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler(); |
| TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(actualFixture.repository()); |
| TaskData taskData = new TaskData(mapper, actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), ""); |
| taskDataHandler.initializeTaskData(actualFixture.repository(), taskData, taskMappingInit, null); |
| taskData.getRoot().getAttribute("cf_dropdown").setValue("one"); |
| taskData.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().TARGET_MILESTONE.getKey()) |
| .setValue("M2"); |
| taskData.getRoot().getAttribute(BugzillaRestCreateTaskSchema.getDefault().BLOCKS.getKey()).setValue( |
| taskIdRel[0] + ", " + taskIdRel[1]); |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskData, null, |
| null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_CREATED)); |
| TaskData taskDataUpdate = harness.getTaskFromServer(reposonse.getTaskId()); |
| TaskAttribute blocksAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().BLOCKS.getKey()); |
| assertEquals(2, blocksAttrib.getValues().size()); |
| assertEquals(taskIdRel[0], blocksAttrib.getValues().get(0)); |
| assertEquals(taskIdRel[1], blocksAttrib.getValues().get(1)); |
| } |
| |
| @Test |
| public void testCreateDependsOnAttribute() throws Exception { |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "Test depends_on Attribute"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The Description"; |
| } |
| |
| @Override |
| public String getProduct() { |
| return "ManualTest"; |
| } |
| |
| @Override |
| public String getComponent() { |
| return "ManualC1"; |
| } |
| |
| @Override |
| public String getVersion() { |
| return "R1"; |
| } |
| }; |
| String[] taskIdRel = harness.getRelationTasks(); |
| AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler(); |
| TaskAttributeMapper mapper = taskDataHandler.getAttributeMapper(actualFixture.repository()); |
| TaskData taskData = new TaskData(mapper, actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), ""); |
| taskDataHandler.initializeTaskData(actualFixture.repository(), taskData, taskMappingInit, null); |
| taskData.getRoot().getAttribute("cf_dropdown").setValue("one"); |
| taskData.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().TARGET_MILESTONE.getKey()) |
| .setValue("M2"); |
| taskData.getRoot().getAttribute(BugzillaRestCreateTaskSchema.getDefault().DEPENDS_ON.getKey()).setValue( |
| taskIdRel[0] + ", " + taskIdRel[1]); |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskData, null, |
| null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_CREATED)); |
| TaskData taskDataUpdate = harness.getTaskFromServer(reposonse.getTaskId()); |
| TaskAttribute dependsOnAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().DEPENDS_ON.getKey()); |
| assertEquals(2, dependsOnAttrib.getValues().size()); |
| assertEquals(taskIdRel[0], dependsOnAttrib.getValues().get(0)); |
| assertEquals(taskIdRel[1], dependsOnAttrib.getValues().get(1)); |
| } |
| |
| @Test |
| public void testCCAttribute() throws Exception { |
| String taskId = harness.getNewTaksId4TestProduct(); |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| Set<TaskAttribute> changed = new HashSet<TaskAttribute>(); |
| |
| TaskAttribute attribute = taskDataGet.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().ADD_CC.getKey()); |
| attribute.setValue("tests@mylyn.eclipse.org"); |
| changed.add(attribute); |
| |
| //Act |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataGet, |
| changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| TaskData taskDataUpdate = harness.getTaskFromServer(taskId); |
| TaskAttribute ccAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().CC.getKey()); |
| assertEquals(1, ccAttrib.getValues().size()); |
| assertEquals("tests@mylyn.eclipse.org", ccAttrib.getValues().get(0)); |
| |
| TaskAttribute ccAddAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().ADD_CC.getKey()); |
| ccAddAttrib.setValue("admin@mylyn.eclipse.org"); |
| changed.add(ccAddAttrib); |
| |
| TaskAttribute ccRemoveAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().REMOVE_CC.getKey()); |
| ccRemoveAttrib.setValue("tests@mylyn.eclipse.org"); |
| changed.add(ccRemoveAttrib); |
| |
| //Act |
| reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataUpdate, changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| taskDataUpdate = harness.getTaskFromServer(taskId); |
| ccAttrib = taskDataUpdate.getRoot().getAttribute(BugzillaRestCreateTaskSchema.getDefault().CC.getKey()); |
| assertEquals(1, ccAttrib.getValues().size()); |
| assertEquals("admin@mylyn.eclipse.org", ccAttrib.getValues().get(0)); |
| } |
| |
| @Test |
| public void testBlocksAttributeV1() throws Exception { |
| String taskId = harness.getNewTaksId4TestProduct(); |
| String[] taskIdRel = harness.getRelationTasks(); |
| |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| Set<TaskAttribute> changed = new HashSet<TaskAttribute>(); |
| TaskData taskDataOld = TaskDataState.createCopy(taskDataGet); |
| |
| TaskAttribute attribute = taskDataGet.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().BLOCKS.getKey()); |
| attribute.setValue(taskIdRel[0] + ", " + taskIdRel[1]); |
| changed.add(taskDataOld.getRoot().getAttribute(BugzillaRestTaskSchema.getDefault().BLOCKS.getKey())); |
| |
| //Act |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataGet, |
| changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| TaskData taskDataUpdate = harness.getTaskFromServer(taskId); |
| TaskAttribute blocksAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().BLOCKS.getKey()); |
| assertEquals(2, blocksAttrib.getValues().size()); |
| assertEquals(taskIdRel[0], blocksAttrib.getValues().get(0)); |
| assertEquals(taskIdRel[1], blocksAttrib.getValues().get(1)); |
| changed.clear(); |
| changed.add(taskDataGet.getRoot().getAttribute(BugzillaRestTaskSchema.getDefault().BLOCKS.getKey())); |
| |
| blocksAttrib.setValue(taskIdRel[0] + ", " + taskIdRel[1] + ", " + taskIdRel[2]); |
| |
| //Act |
| reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataUpdate, changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| taskDataUpdate = harness.getTaskFromServer(taskId); |
| blocksAttrib = taskDataUpdate.getRoot().getAttribute(BugzillaRestCreateTaskSchema.getDefault().BLOCKS.getKey()); |
| assertEquals(3, blocksAttrib.getValues().size()); |
| assertEquals(taskIdRel[0], blocksAttrib.getValues().get(0)); |
| assertEquals(taskIdRel[1], blocksAttrib.getValues().get(1)); |
| assertEquals(taskIdRel[2], blocksAttrib.getValues().get(2)); |
| } |
| |
| @Test |
| public void testBlocksAttributeV2() throws Exception { |
| String taskId = harness.getNewTaksId4TestProduct(); |
| String[] taskIdRel = harness.getRelationTasks(); |
| |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| Set<TaskAttribute> changed = new HashSet<TaskAttribute>(); |
| TaskData taskDataOld = TaskDataState.createCopy(taskDataGet); |
| |
| TaskAttribute attribute = taskDataGet.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().BLOCKS.getKey()); |
| attribute.setValue(taskIdRel[0]); |
| attribute.addValue(taskIdRel[1]); |
| changed.add(taskDataOld.getRoot().getAttribute(BugzillaRestTaskSchema.getDefault().BLOCKS.getKey())); |
| |
| //Act |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataGet, |
| changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| TaskData taskDataUpdate = harness.getTaskFromServer(taskId); |
| TaskAttribute blocksAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().BLOCKS.getKey()); |
| assertEquals(2, blocksAttrib.getValues().size()); |
| assertEquals(taskIdRel[0], blocksAttrib.getValues().get(0)); |
| assertEquals(taskIdRel[1], blocksAttrib.getValues().get(1)); |
| changed.clear(); |
| changed.add(taskDataGet.getRoot().getAttribute(BugzillaRestTaskSchema.getDefault().BLOCKS.getKey())); |
| |
| blocksAttrib.setValue(taskIdRel[0]); |
| blocksAttrib.addValue(taskIdRel[1]); |
| blocksAttrib.addValue(taskIdRel[2]); |
| |
| //Act |
| reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataUpdate, changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| taskDataUpdate = harness.getTaskFromServer(taskId); |
| blocksAttrib = taskDataUpdate.getRoot().getAttribute(BugzillaRestCreateTaskSchema.getDefault().BLOCKS.getKey()); |
| assertEquals(3, blocksAttrib.getValues().size()); |
| assertEquals(taskIdRel[0], blocksAttrib.getValues().get(0)); |
| assertEquals(taskIdRel[1], blocksAttrib.getValues().get(1)); |
| assertEquals(taskIdRel[2], blocksAttrib.getValues().get(2)); |
| } |
| |
| @Test |
| public void testDependsOnAttributeV1() throws Exception { |
| String taskId = harness.getNewTaksId4TestProduct(); |
| String[] taskIdRel = harness.getRelationTasks(); |
| |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| Set<TaskAttribute> changed = new HashSet<TaskAttribute>(); |
| TaskData taskDataOld = TaskDataState.createCopy(taskDataGet); |
| |
| TaskAttribute attribute = taskDataGet.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().DEPENDS_ON.getKey()); |
| attribute.setValue(taskIdRel[0] + ", " + taskIdRel[1]); |
| changed.add(taskDataOld.getRoot().getAttribute(BugzillaRestTaskSchema.getDefault().DEPENDS_ON.getKey())); |
| |
| //Act |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataGet, |
| changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| TaskData taskDataUpdate = harness.getTaskFromServer(taskId); |
| TaskAttribute dependsOnAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().DEPENDS_ON.getKey()); |
| assertEquals(2, dependsOnAttrib.getValues().size()); |
| assertEquals(taskIdRel[0], dependsOnAttrib.getValues().get(0)); |
| assertEquals(taskIdRel[1], dependsOnAttrib.getValues().get(1)); |
| changed.clear(); |
| changed.add(taskDataGet.getRoot().getAttribute(BugzillaRestTaskSchema.getDefault().DEPENDS_ON.getKey())); |
| |
| dependsOnAttrib.setValue(taskIdRel[0] + ", " + taskIdRel[1] + ", " + taskIdRel[2]); |
| |
| //Act |
| reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataUpdate, changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| taskDataUpdate = harness.getTaskFromServer(taskId); |
| dependsOnAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().DEPENDS_ON.getKey()); |
| assertEquals(3, dependsOnAttrib.getValues().size()); |
| assertEquals(taskIdRel[0], dependsOnAttrib.getValues().get(0)); |
| assertEquals(taskIdRel[1], dependsOnAttrib.getValues().get(1)); |
| assertEquals(taskIdRel[2], dependsOnAttrib.getValues().get(2)); |
| } |
| |
| @Test |
| public void testDependsOnAttributeV2() throws Exception { |
| String taskId = harness.getNewTaksId4TestProduct(); |
| String[] taskIdRel = harness.getRelationTasks(); |
| |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| Set<TaskAttribute> changed = new HashSet<TaskAttribute>(); |
| TaskData taskDataOld = TaskDataState.createCopy(taskDataGet); |
| |
| TaskAttribute attribute = taskDataGet.getRoot() |
| .getAttribute(BugzillaRestTaskSchema.getDefault().DEPENDS_ON.getKey()); |
| attribute.setValue(taskIdRel[0]); |
| attribute.addValue(taskIdRel[1]); |
| changed.add(taskDataOld.getRoot().getAttribute(BugzillaRestTaskSchema.getDefault().DEPENDS_ON.getKey())); |
| |
| //Act |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataGet, |
| changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| TaskData taskDataUpdate = harness.getTaskFromServer(taskId); |
| TaskAttribute dependsOnAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().DEPENDS_ON.getKey()); |
| assertEquals(2, dependsOnAttrib.getValues().size()); |
| assertEquals(taskIdRel[0], dependsOnAttrib.getValues().get(0)); |
| assertEquals(taskIdRel[1], dependsOnAttrib.getValues().get(1)); |
| changed.clear(); |
| changed.add(taskDataGet.getRoot().getAttribute(BugzillaRestTaskSchema.getDefault().DEPENDS_ON.getKey())); |
| |
| dependsOnAttrib.setValue(taskIdRel[0]); |
| dependsOnAttrib.addValue(taskIdRel[1]); |
| dependsOnAttrib.addValue(taskIdRel[2]); |
| |
| //Act |
| reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataUpdate, changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| taskDataUpdate = harness.getTaskFromServer(taskId); |
| dependsOnAttrib = taskDataUpdate.getRoot() |
| .getAttribute(BugzillaRestCreateTaskSchema.getDefault().DEPENDS_ON.getKey()); |
| assertEquals(3, dependsOnAttrib.getValues().size()); |
| assertEquals(taskIdRel[0], dependsOnAttrib.getValues().get(0)); |
| assertEquals(taskIdRel[1], dependsOnAttrib.getValues().get(1)); |
| assertEquals(taskIdRel[2], dependsOnAttrib.getValues().get(2)); |
| } |
| |
| @Test |
| public void testFlagsSet() throws Exception { |
| String taskId = harness.getNewTaksId4TestProduct(); |
| |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| Set<TaskAttribute> changed = new HashSet<TaskAttribute>(); |
| TaskData taskDataOld = TaskDataState.createCopy(taskDataGet); |
| for (TaskAttribute attribute : taskDataGet.getRoot().getAttributes().values()) { |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| boolean found; |
| TaskAttribute state = attribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(attribute); |
| if (state != null) { |
| switch (state.getMetaData().getLabel()) { |
| case "BugFlag1": |
| state.setValue("-"); |
| found = true; |
| break; |
| case "BugFlag2": |
| state.setValue("?"); |
| found = true; |
| break; |
| case "BugFlag3": |
| state.setValue("+"); |
| found = true; |
| break; |
| case "BugFlag4": |
| state.setValue("?"); |
| attribute.getAttribute("requestee").setValue("admin@mylyn.eclipse.org"); |
| found = true; |
| break; |
| default: |
| found = false; |
| break; |
| } |
| if (found) { |
| changed.add(taskDataOld.getRoot().getAttribute(attribute.getId())); |
| } |
| } |
| } |
| } |
| |
| //Act |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataGet, |
| changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| //Assert |
| TaskData taskDataUpdate = harness.getTaskFromServer(taskId); |
| int flagcount = 0; |
| for (TaskAttribute attribute : taskDataUpdate.getRoot().getAttributes().values()) { |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG)) { |
| flagcount++; |
| TaskAttribute state = attribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(attribute); |
| if (state != null) { |
| switch (state.getMetaData().getLabel()) { |
| case "BugFlag1": |
| assertEquals("-", state.getValue()); |
| assertEquals("[, -, +]", state.getOptions().values().toString()); |
| assertEquals("1", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| break; |
| case "BugFlag2": |
| assertEquals("?", state.getValue()); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("2", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| break; |
| case "BugFlag3": |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| assertEquals(" ", state.getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| } else { |
| assertEquals("+", state.getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| } |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("5", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| break; |
| case "BugFlag4": |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| assertEquals(" ", state.getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| } else { |
| assertEquals("?", state.getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals("admin@mylyn.eclipse.org", attribute.getAttribute("requestee").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| } |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("6", attribute.getAttribute("typeId").getValue()); |
| break; |
| default: |
| fail("No flag with name " + state.getMetaData().getLabel()); |
| break; |
| } |
| } |
| } |
| } |
| assertEquals(6, flagcount); |
| } |
| |
| @Test |
| public void testFlagsReset() throws Exception { |
| String taskId = harness.getNewTaksId4TestProduct(); |
| |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| Set<TaskAttribute> changed = new HashSet<TaskAttribute>(); |
| TaskData taskDataOld = TaskDataState.createCopy(taskDataGet); |
| for (TaskAttribute attribute : taskDataGet.getRoot().getAttributes().values()) { |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| boolean found; |
| TaskAttribute state = attribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(attribute); |
| if (state != null) { |
| switch (state.getMetaData().getLabel()) { |
| case "BugFlag1": |
| state.setValue("-"); |
| found = true; |
| break; |
| case "BugFlag2": |
| state.setValue("?"); |
| found = true; |
| break; |
| case "BugFlag3": |
| state.setValue("+"); |
| found = true; |
| break; |
| case "BugFlag4": |
| state.setValue("?"); |
| attribute.getAttribute("requestee").setValue("admin@mylyn.eclipse.org"); |
| found = true; |
| break; |
| default: |
| found = false; |
| break; |
| } |
| if (found) { |
| changed.add(taskDataOld.getRoot().getAttribute(attribute.getId())); |
| } |
| } |
| } |
| } |
| |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataGet, |
| changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| TaskData taskDataUpdate = harness.getTaskFromServer(taskId); |
| Set<TaskAttribute> changedUpdate = new HashSet<TaskAttribute>(); |
| TaskData taskDataOldUpdate = TaskDataState.createCopy(taskDataUpdate); |
| for (TaskAttribute attribute : taskDataUpdate.getRoot().getAttributes().values()) { |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG)) { |
| TaskAttribute state = attribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(attribute); |
| if (state != null) { |
| boolean found; |
| switch (state.getMetaData().getLabel()) { |
| case "BugFlag1": |
| assertEquals("-", state.getValue()); |
| assertEquals("[, -, +]", state.getOptions().values().toString()); |
| assertEquals("1", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| state.setValue(" "); |
| found = true; |
| break; |
| case "BugFlag2": |
| assertEquals("?", state.getValue()); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("2", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| state.setValue(" "); |
| found = true; |
| break; |
| case "BugFlag3": |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| assertEquals(" ", state.getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| } else { |
| assertEquals("+", state.getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| state.setValue(" "); |
| } |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("5", attribute.getAttribute("typeId").getValue()); |
| found = true; |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| break; |
| case "BugFlag4": |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| assertEquals(" ", state.getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| } else { |
| assertEquals("?", state.getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals("admin@mylyn.eclipse.org", attribute.getAttribute("requestee").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| state.setValue(" "); |
| } |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("6", attribute.getAttribute("typeId").getValue()); |
| found = true; |
| break; |
| default: |
| fail("No flag with name " + state.getMetaData().getLabel()); |
| found = false; |
| break; |
| } |
| if (found) { |
| changedUpdate.add(taskDataOldUpdate.getRoot().getAttribute(attribute.getId())); |
| } |
| } |
| } |
| } |
| //Act |
| reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataUpdate, changedUpdate, null); |
| //Assert |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| taskDataUpdate = harness.getTaskFromServer(taskId); |
| int flagcount = 0; |
| for (TaskAttribute attribute : taskDataUpdate.getRoot().getAttributes().values()) { |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG)) { |
| flagcount++; |
| TaskAttribute state = attribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(attribute); |
| if (state != null) { |
| switch (state.getMetaData().getLabel()) { |
| case "BugFlag1": |
| assertEquals(IBugzillaRestConstants.KIND_FLAG_TYPE + "1", attribute.getId()); |
| assertEquals(" ", state.getValue()); |
| assertEquals("[, -, +]", state.getOptions().values().toString()); |
| assertEquals("1", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| break; |
| case "BugFlag2": |
| assertEquals(IBugzillaRestConstants.KIND_FLAG_TYPE + "2", attribute.getId()); |
| assertEquals(" ", state.getValue()); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("2", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| break; |
| case "BugFlag3": |
| assertEquals(IBugzillaRestConstants.KIND_FLAG_TYPE + "5", attribute.getId()); |
| assertEquals(" ", state.getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("5", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| break; |
| case "BugFlag4": |
| assertEquals(IBugzillaRestConstants.KIND_FLAG_TYPE + "6", attribute.getId()); |
| assertEquals(" ", state.getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("6", attribute.getAttribute("typeId").getValue()); |
| break; |
| default: |
| fail("No flag with name " + state.getMetaData().getLabel()); |
| break; |
| } |
| } |
| } |
| } |
| assertEquals(4, flagcount); |
| } |
| |
| @Test |
| public void testFlagsChange() throws Exception { |
| String taskId = harness.getNewTaksId4TestProduct(); |
| |
| TaskData taskDataGet = harness.getTaskFromServer(taskId); |
| |
| Set<TaskAttribute> changed = new HashSet<TaskAttribute>(); |
| TaskData taskDataOld = TaskDataState.createCopy(taskDataGet); |
| for (TaskAttribute attribute : taskDataGet.getRoot().getAttributes().values()) { |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| boolean found; |
| TaskAttribute state = attribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(attribute); |
| if (state != null) { |
| switch (state.getMetaData().getLabel()) { |
| case "BugFlag1": |
| state.setValue("-"); |
| found = true; |
| break; |
| case "BugFlag2": |
| state.setValue("?"); |
| found = true; |
| break; |
| case "BugFlag3": |
| state.setValue("+"); |
| found = true; |
| break; |
| case "BugFlag4": |
| state.setValue("?"); |
| attribute.getAttribute("requestee").setValue("admin@mylyn.eclipse.org"); |
| found = true; |
| break; |
| default: |
| found = false; |
| break; |
| } |
| if (found) { |
| changed.add(taskDataOld.getRoot().getAttribute(attribute.getId())); |
| } |
| } |
| } |
| } |
| |
| RepositoryResponse reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataGet, |
| changed, null); |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| TaskData taskDataUpdate = harness.getTaskFromServer(taskId); |
| Set<TaskAttribute> changedUpdate = new HashSet<TaskAttribute>(); |
| TaskData taskDataOldUpdate = TaskDataState.createCopy(taskDataUpdate); |
| for (TaskAttribute attribute : taskDataUpdate.getRoot().getAttributes().values()) { |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG)) { |
| TaskAttribute state = attribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(attribute); |
| if (state != null) { |
| boolean found; |
| switch (state.getMetaData().getLabel()) { |
| case "BugFlag1": |
| assertEquals("-", state.getValue()); |
| assertEquals("[, -, +]", state.getOptions().values().toString()); |
| assertEquals("1", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| state.setValue("+"); |
| found = true; |
| break; |
| case "BugFlag2": |
| assertEquals("?", state.getValue()); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("2", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| state.setValue("-"); |
| found = true; |
| break; |
| case "BugFlag3": |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| assertEquals(" ", state.getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| } else { |
| assertEquals("+", state.getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| state.setValue("-"); |
| } |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("5", attribute.getAttribute("typeId").getValue()); |
| found = true; |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| break; |
| case "BugFlag4": |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| assertEquals(" ", state.getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| } else { |
| assertEquals("?", state.getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals("admin@mylyn.eclipse.org", attribute.getAttribute("requestee").getValue()); |
| assertEquals(attribute.getAttribute("creationDate").getValue(), |
| attribute.getAttribute("modificationDate").getValue()); |
| state.setValue("+"); |
| } |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("6", attribute.getAttribute("typeId").getValue()); |
| found = true; |
| break; |
| default: |
| fail("No flag with name " + state.getMetaData().getLabel()); |
| found = false; |
| break; |
| } |
| if (found) { |
| changedUpdate.add(taskDataOldUpdate.getRoot().getAttribute(attribute.getId())); |
| } |
| } |
| } |
| } |
| //Act |
| reposonse = connector.getClient(actualFixture.repository()).postTaskData(taskDataUpdate, changedUpdate, null); |
| //Assert |
| assertNotNull(reposonse); |
| assertNotNull(reposonse.getReposonseKind()); |
| assertThat(reposonse.getReposonseKind(), is(ResponseKind.TASK_UPDATED)); |
| taskDataUpdate = harness.getTaskFromServer(taskId); |
| int flagcount = 0; |
| for (TaskAttribute attribute : taskDataUpdate.getRoot().getAttributes().values()) { |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG)) { |
| flagcount++; |
| TaskAttribute state = attribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(attribute); |
| if (state != null) { |
| switch (state.getMetaData().getLabel()) { |
| case "BugFlag1": |
| assertEquals("+", state.getValue()); |
| assertEquals("[, -, +]", state.getOptions().values().toString()); |
| assertEquals("1", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertThat(attribute.getAttribute("modificationDate").getValue(), |
| greaterThan(attribute.getAttribute("creationDate").getValue())); |
| break; |
| case "BugFlag2": |
| assertEquals("-", state.getValue()); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("2", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertThat(attribute.getAttribute("modificationDate").getValue(), |
| greaterThan(attribute.getAttribute("creationDate").getValue())); |
| break; |
| case "BugFlag3": |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| assertEquals(" ", state.getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| } else { |
| assertEquals("-", state.getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertThat(attribute.getAttribute("modificationDate").getValue(), |
| greaterThan(attribute.getAttribute("creationDate").getValue())); |
| } |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("5", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| break; |
| case "BugFlag4": |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| assertEquals(" ", state.getValue()); |
| assertEquals("", attribute.getAttribute("setter").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertNull(attribute.getAttribute("creationDate")); |
| assertNull(attribute.getAttribute("modificationDate")); |
| } else { |
| assertEquals("+", state.getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertThat(attribute.getAttribute("modificationDate").getValue(), |
| greaterThan(attribute.getAttribute("creationDate").getValue())); |
| } |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("6", attribute.getAttribute("typeId").getValue()); |
| break; |
| default: |
| fail("No flag with name " + state.getMetaData().getLabel()); |
| break; |
| } |
| } |
| } |
| } |
| assertEquals(6, flagcount); |
| } |
| |
| @Test |
| public void testTextAttachmentWithFlags() throws Exception { |
| TaskAttribute attachmentAttribute = null; |
| TaskRepository repository = actualFixture.repository(); |
| |
| final TaskMapping taskMappingInit = new TaskMapping() { |
| @Override |
| public String getSummary() { |
| return "Bug for Text Attachment with Flags"; |
| } |
| |
| @Override |
| public String getDescription() { |
| return "The bug is used to test that text attachments with flags can be put and get correctly!"; |
| } |
| |
| @Override |
| public String getProduct() { |
| return "ManualTest"; |
| } |
| |
| @Override |
| public String getComponent() { |
| return "ManualC1"; |
| } |
| |
| @Override |
| public String getVersion() { |
| return "R1"; |
| } |
| }; |
| |
| String taskId = harness.getNewTaksIdFromInitMapping(taskMappingInit, harness.taskInitializationData); |
| TaskData taskData = harness.getTaskFromServer(taskId); |
| assertNotNull(taskData); |
| |
| for (Entry<String, TaskAttribute> entry : taskData.getRoot().getAttributes().entrySet()) { |
| if (TaskAttribute.TYPE_ATTACHMENT.equals(entry.getValue().getMetaData().getType())) { |
| attachmentAttribute = entry.getValue(); |
| } |
| } |
| assertNull(attachmentAttribute); |
| |
| BugzillaRestTaskAttachmentHandler attachmentHandler = new BugzillaRestTaskAttachmentHandler(connector); |
| ITask task = new TaskTask(actualFixture.repository().getConnectorKind(), |
| actualFixture.repository().getRepositoryUrl(), taskId); |
| |
| InputStream in = CommonTestUtil.getResource(this, "testdata/AttachmentTest.txt"); |
| File file = File.createTempFile("attachment", null); |
| file.deleteOnExit(); |
| OutputStream out = new FileOutputStream(file); |
| try { |
| IOUtils.copy(in, out); |
| } finally { |
| in.close(); |
| out.close(); |
| } |
| |
| FileTaskAttachmentSource attachment = new FileTaskAttachmentSource(file); |
| attachment.setContentType("text/plain"); |
| attachment.setDescription("My Attachment 2"); |
| attachment.setName("Attachment 2.txt"); |
| |
| attachmentAttribute = taskData.getRoot().createMappedAttribute(TaskAttribute.NEW_ATTACHMENT); |
| |
| BugzillaRestAttachmentMapper attachmentMapper = BugzillaRestAttachmentMapper.createFrom(attachmentAttribute); |
| BugzillaRestAttachmentMapper.createFrom(attachmentAttribute); |
| attachmentMapper.setContentType("text/plain"); |
| attachmentMapper.setDescription("My Attachment 2"); |
| attachmentMapper.setFileName("Attachment 2.txt"); |
| attachmentMapper.applyTo(attachmentAttribute); |
| attachmentMapper.addMissingFlags(attachmentAttribute); |
| TaskAttribute flag3 = attachmentAttribute.getAttribute(IBugzillaRestConstants.KIND_FLAG_TYPE + "3"); |
| TaskAttribute state3 = attachmentAttribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(flag3); |
| state3.setValue("+"); |
| TaskAttribute flag4 = attachmentAttribute.getAttribute(IBugzillaRestConstants.KIND_FLAG_TYPE + "4"); |
| TaskAttribute state4 = attachmentAttribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(flag4); |
| state4.setValue("-"); |
| |
| attachmentHandler.postContent(repository, task, attachment, "comment", attachmentAttribute, null); |
| taskData = getTaskData(taskId); |
| assertNotNull(taskData); |
| for (Entry<String, TaskAttribute> entry : taskData.getRoot().getAttributes().entrySet()) { |
| if (TaskAttribute.TYPE_ATTACHMENT.equals(entry.getValue().getMetaData().getType())) { |
| attachmentAttribute = entry.getValue(); |
| } |
| } |
| assertNotNull(attachmentAttribute); |
| int flagcount = 0; |
| for (TaskAttribute attribute : attachmentAttribute.getAttributes().values()) { |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG)) { |
| flagcount++; |
| TaskAttribute state = attribute.getTaskData().getAttributeMapper().getAssoctiatedAttribute(attribute); |
| if (state != null) { |
| switch (state.getMetaData().getLabel()) { |
| case "AttachmentFlag1": |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| assertEquals(" ", state.getValue()); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("3", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| } else { |
| assertEquals("+", state.getValue()); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("3", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| } |
| break; |
| case "AttachmentFlag2": |
| if (attribute.getId().startsWith(IBugzillaRestConstants.KIND_FLAG_TYPE)) { |
| assertEquals(" ", state.getValue()); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("4", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| } else { |
| assertEquals("-", state.getValue()); |
| assertEquals("[, ?, -, +]", state.getOptions().values().toString()); |
| assertEquals("4", attribute.getAttribute("typeId").getValue()); |
| assertEquals("", attribute.getAttribute("requestee").getValue()); |
| assertEquals("tests@mylyn.eclipse.org", attribute.getAttribute("setter").getValue()); |
| } |
| break; |
| default: |
| fail("No flag with name " + state.getMetaData().getLabel()); |
| break; |
| } |
| } |
| } |
| } |
| assertEquals(4, flagcount); |
| InputStream instream = attachmentHandler.getContent(actualFixture.repository(), task, attachmentAttribute, |
| null); |
| InputStream instream2 = CommonTestUtil.getResource(this, "testdata/AttachmentTest.txt"); |
| assertTrue(IOUtils.contentEquals(instream, instream2)); |
| } |
| } |