### Eclipse Workspace Patch 1.0 #P org.eclipse.mylyn.jira.tests Index: src/org/eclipse/mylyn/jira/tests/core/JiraTaskDataHandlerTest.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.jira.tests/src/org/eclipse/mylyn/jira/tests/core/JiraTaskDataHandlerTest.java,v retrieving revision 1.12 diff -u -r1.12 JiraTaskDataHandlerTest.java --- src/org/eclipse/mylyn/jira/tests/core/JiraTaskDataHandlerTest.java 8 Sep 2009 17:53:13 -0000 1.12 +++ src/org/eclipse/mylyn/jira/tests/core/JiraTaskDataHandlerTest.java 21 Sep 2009 12:24:20 -0000 @@ -16,12 +16,16 @@ import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; +import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.Set; import junit.framework.TestCase; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.mylyn.context.tests.support.TestUtil; +import org.eclipse.mylyn.context.tests.support.TestUtil.Credentials; import org.eclipse.mylyn.context.tests.support.TestUtil.PrivilegeLevel; import org.eclipse.mylyn.internal.jira.core.IJiraConstants; import org.eclipse.mylyn.internal.jira.core.JiraAttribute; @@ -754,4 +758,92 @@ return taskData; } + /** + * Add comment to a task which user doesn't have edit permission for. + * + * @throws Exception + */ + public void testPostTaskDataCommentWithoutEditPermission() throws Exception { + init(JiraTestConstants.JIRA_LATEST_URL, PrivilegeLevel.USER); + + JiraIssue issue = JiraTestUtil.createIssue(client, "testWithoutEditPermission"); + + TaskData taskData = dataHandler.getTaskData(repository, issue.getId(), new NullProgressMonitor()); + taskData.getRoot().getAttribute(JiraAttribute.SUMMARY.id()).setValue("new summary"); + taskData.getRoot().getAttribute(JiraAttribute.COMMENT_NEW.id()).setValue("comment"); + dataHandler.postTaskData(repository, taskData, buildChanged(taskData.getRoot(), JiraAttribute.SUMMARY, + JiraAttribute.COMMENT_NEW), new NullProgressMonitor()); + assertNull(taskData.getRoot().getAttribute(IJiraConstants.ATTRIBUTE_READ_ONLY)); + + taskData = dataHandler.getTaskData(repository, issue.getId(), new NullProgressMonitor()); + assertEquals("new summary", taskData.getRoot().getAttribute(JiraAttribute.SUMMARY.id()).getValue()); + ITask task = JiraTestUtil.createTask(repository, taskData.getTaskId()); + List comments = JiraTestUtil.getTaskComments(task); + assertEquals(1, comments.size()); + assertEquals("comment", comments.get(0).getText()); + assertNull(taskData.getRoot().getAttribute(IJiraConstants.ATTRIBUTE_READ_ONLY)); + + setUp(); + init(JiraTestConstants.JIRA_LATEST_URL, PrivilegeLevel.READ_ONLY); + + taskData = dataHandler.getTaskData(repository, issue.getId(), new NullProgressMonitor()); + assertNull(taskData.getRoot().getAttribute(IJiraConstants.ATTRIBUTE_READ_ONLY)); + + taskData.getRoot().getAttribute(JiraAttribute.COMMENT_NEW.id()).setValue("new comment"); + + dataHandler.postTaskData(repository, taskData, buildChanged(taskData.getRoot(), JiraAttribute.COMMENT_NEW), + new NullProgressMonitor()); + + taskData = dataHandler.getTaskData(repository, issue.getId(), new NullProgressMonitor()); + assertEquals("new summary", taskData.getRoot().getAttribute(JiraAttribute.SUMMARY.id()).getValue()); + task = JiraTestUtil.createTask(repository, taskData.getTaskId()); + comments = JiraTestUtil.getTaskComments(task); + assertEquals(2, comments.size()); + assertEquals("comment", comments.get(0).getText()); + assertEquals("new comment", comments.get(1).getText()); + assertNull(taskData.getRoot().getAttribute(IJiraConstants.ATTRIBUTE_READ_ONLY)); + } + + private Set buildChanged(TaskAttribute root, JiraAttribute... attrs) { + Set changed = new HashSet(); + for (JiraAttribute ja : attrs) { + changed.add(root.getAttribute(ja.id())); + } + return changed; + } + + /** + * Add comment to a task which user doesn't have edit permission for. + * + * @throws Exception + */ + public void testPostTaskDataAssignWithoutEditPermission() throws Exception { + init(JiraTestConstants.JIRA_LATEST_URL, PrivilegeLevel.USER); + + Credentials userCredentials = TestUtil.readCredentials(PrivilegeLevel.USER); + JiraIssue issue = JiraTestUtil.createIssue(client, "testWithoutEditPermission"); + + TaskData taskData = dataHandler.getTaskData(repository, issue.getId(), new NullProgressMonitor()); + taskData.getRoot().getAttribute(JiraAttribute.USER_ASSIGNED.id()).setValue("-1"); + + dataHandler.postTaskData(repository, taskData, buildChanged(taskData.getRoot(), JiraAttribute.USER_ASSIGNED), + new NullProgressMonitor()); + assertNull(taskData.getRoot().getAttribute(IJiraConstants.ATTRIBUTE_READ_ONLY)); + + setUp(); + init(JiraTestConstants.JIRA_LATEST_URL, PrivilegeLevel.READ_ONLY); + + taskData = dataHandler.getTaskData(repository, issue.getId(), new NullProgressMonitor()); + + taskData.getRoot().getAttribute(JiraAttribute.USER_ASSIGNED.id()).setValue(userCredentials.username); + + dataHandler.postTaskData(repository, taskData, buildChanged(taskData.getRoot(), JiraAttribute.USER_ASSIGNED), + new NullProgressMonitor()); + + taskData = dataHandler.getTaskData(repository, issue.getId(), new NullProgressMonitor()); + assertEquals(userCredentials.username, taskData.getRoot() + .getAttribute(JiraAttribute.USER_ASSIGNED.id()) + .getValue()); + } + }