/*
* (C) Copyright IBM Corp. 2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.ibm.sbt.services.client.connections.activities;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.Date;
import org.junit.Test;
import com.ibm.commons.xml.XMLException;
import com.ibm.sbt.security.authentication.AuthenticationException;
import com.ibm.sbt.services.client.ClientServicesException;
import com.ibm.sbt.services.client.connections.common.Member;
import com.ibm.sbt.services.endpoints.BasicEndpoint;
import com.ibm.sbt.test.lib.TestEnvironment;
/**
* @author mwallace
*
*/
public class ActivityFeedMoveTest extends BaseActivityServiceTest {
@Test
public void testMoveField() throws ClientServicesException, XMLException {
// Create activity nodes
activity = new Activity();
activity.setTitle(createActivityTitle());
activity = activityService.createActivity(activity);
ActivityNode entryNode = new ActivityNode();
entryNode.setActivityUuid(activity.getActivityUuid());
entryNode.setTitle("Source ActivityNode");
entryNode.setType("ENTRY");
activityService.createActivityNode(entryNode);
ActivityNode todoNode = createActivityNode();
todoNode.setActivityUuid(activity.getActivityUuid());
todoNode.setTitle("Destination ActivityNode");
todoNode.setType("TODO");
activityService.createActivityNode(todoNode);
ActivityNode sectionNode = createActivityNode();
sectionNode.setActivityUuid(activity.getActivityUuid());
sectionNode.setTitle("Destination ActivityNode");
sectionNode.setType("SECTION");
activityService.createActivityNode(sectionNode);
entryNode = activityService.moveNode(entryNode.getActivityNodeUuid(), todoNode.getActivityNodeUuid());
entryNode = activityService.moveNode(entryNode.getActivityNodeUuid(),
sectionNode.getActivityNodeUuid());
todoNode = activityService
.moveNode(todoNode.getActivityNodeUuid(), sectionNode.getActivityNodeUuid());
}
@Test
public void testMoveFieldChangeActivity() throws ClientServicesException, XMLException {
// Create activity nodes
activity = new Activity();
activity.setTitle(createActivityTitle());
activity = activityService.createActivity(activity);
Activity activityb;
activityb = new Activity();
activityb.setTitle(createActivityTitle());
activityb = activityService.createActivity(activityb);
ActivityNode entryNode = new ActivityNode();
entryNode.setActivityUuid(activity.getActivityUuid());
entryNode.setTitle("Source ActivityNode");
entryNode.setType("ENTRY");
activityService.createActivityNode(entryNode);
ActivityNode todoNode = createActivityNode();
todoNode.setActivityUuid(activity.getActivityUuid());
todoNode.setTitle("Destination ActivityNode");
todoNode.setType("TODO");
activityService.createActivityNode(todoNode);
ActivityNode sectionNode = createActivityNode();
sectionNode.setActivityUuid(activity.getActivityUuid());
sectionNode.setTitle("Destination ActivityNode");
sectionNode.setType("SECTION");
activityService.createActivityNode(sectionNode);
entryNode = activityService.moveNode(entryNode.getActivityNodeUuid(), activityb.getActivityUuid());
sectionNode = activityService.moveNode(sectionNode.getActivityNodeUuid(), activityb.getActivityUuid());
todoNode = activityService.moveNode(todoNode.getActivityNodeUuid(), activityb.getActivityUuid());
}
@Test
public void testMoveFieldToItself() throws ClientServicesException, XMLException {
// Create activity nodes
activity = new Activity();
activity.setTitle(createActivityTitle());
activity = activityService.createActivity(activity);
ActivityNode entryNode = new ActivityNode();
entryNode.setActivityUuid(activity.getActivityUuid());
entryNode.setTitle("Source ActivityNode");
entryNode.setType("ENTRY");
activityService.createActivityNode(entryNode);
try {
entryNode = activityService.moveNode(entryNode.getActivityNodeUuid(),
entryNode.getActivityNodeUuid());
} catch (ClientServicesException ex) {
assertEquals(400, ex.getResponseStatusCode());
return;
}
fail();
}
@Test
public void testMoveSection() throws ClientServicesException, XMLException {
// Create activity nodes
activity = new Activity();
activity.setTitle(createActivityTitle());
activity = activityService.createActivity(activity);
ActivityNode entryNode = new ActivityNode();
entryNode.setActivityUuid(activity.getActivityUuid());
entryNode.setTitle("Source ActivityNode");
entryNode.setType("ENTRY");
activityService.createActivityNode(entryNode);
ActivityNode sectionNode = createActivityNode();
sectionNode.setActivityUuid(activity.getActivityUuid());
sectionNode.setTitle("Destination ActivityNode");
sectionNode.setType("SECTION");
activityService.createActivityNode(sectionNode);
try {
entryNode = activityService.moveNode(sectionNode.getActivityNodeUuid(),
entryNode.getActivityNodeUuid());
} catch (ClientServicesException ex) {
assertEquals(400, ex.getResponseStatusCode());
return;
}
fail();
}
@Test
public void testNotFound() throws ClientServicesException, XMLException {
// Create activity nodes
activity = new Activity();
activity.setTitle(createActivityTitle());
activity = activityService.createActivity(activity);
try {
activityService.moveNode("1234", activity.getActivityUuid());
} catch (ClientServicesException ex) {
assertEquals(404, ex.getResponseStatusCode());
return;
}
fail();
}
@Test
public void testNotAuthorized() throws ClientServicesException, XMLException, AuthenticationException {
// Create activity nodes
activity = new Activity();
activity.setTitle(createActivityTitle());
activity = activityService.createActivity(activity);
ActivityNode entryNode = new ActivityNode();
entryNode.setActivityUuid(activity.getActivityUuid());
entryNode.setTitle("Source ActivityNode");
entryNode.setType("ENTRY");
activityService.createActivityNode(entryNode);
activityService.getEndpoint().logout();
((BasicEndpoint) activityService.getEndpoint()).login(TestEnvironment.getSecondaryUsername(),
TestEnvironment.getSecondaryUserPassword());
try {
activityService.moveNode(entryNode.getActivityNodeUuid(), activity.getActivityUuid());
} catch (ClientServicesException ex) {
ex.printStackTrace();
assertEquals(403, ex.getResponseStatusCode());
return;
} finally {
activityService.getEndpoint().logout();
((BasicEndpoint) activityService.getEndpoint()).login(TestEnvironment.getCurrentUsername(),
TestEnvironment.getCurrentUserPassword());
}
fail();
}
@Test
public void testMoveReplyThread() throws ClientServicesException{
activity = new Activity();
activity.setTitle(createActivityTitle());
activity = activityService.createActivity(activity);
ActivityNode entryNode = new ActivityNode();
entryNode.setActivityUuid(activity.getActivityUuid());
entryNode.setTitle("Entry ActivityNode A");
entryNode.setType("ENTRY");
activityService.createActivityNode(entryNode);
ActivityNode replyNode = createActivityNode();
replyNode.setActivityUuid(activity.getActivityUuid());
replyNode.setTitle("Reply ActivityNode 1A");
replyNode.setType("REPLY");
replyNode.setInReplyTo(entryNode);
activityService.createActivityNode(replyNode);
ActivityNode replyNode2 = createActivityNode();
replyNode2.setActivityUuid(activity.getActivityUuid());
replyNode2.setTitle("Reply ActivityNode 2A");
replyNode2.setType("REPLY");
replyNode2.setInReplyTo(replyNode);
activityService.createActivityNode(replyNode2);
ActivityNode replyNode3 = createActivityNode();
replyNode3.setActivityUuid(activity.getActivityUuid());
replyNode3.setTitle("Reply ActivityNode 3A");
replyNode3.setType("REPLY");
replyNode3.setInReplyTo(replyNode2);
activityService.createActivityNode(replyNode3);
ActivityNode replyNode4 = createActivityNode();
replyNode4.setActivityUuid(activity.getActivityUuid());
replyNode4.setTitle("Reply ActivityNode 4A");
replyNode4.setType("REPLY");
replyNode4.setInReplyTo(replyNode3);
activityService.createActivityNode(replyNode4);
Activity activityB = new Activity();
activityB.setTitle(createActivityTitle());
activityB = activityService.createActivity(activityB);
ActivityNode entryNodeB = new ActivityNode();
entryNodeB.setActivityUuid(activityB.getActivityUuid());
entryNodeB.setTitle("Entry ActivityNode B");
entryNodeB.setType("ENTRY");
activityService.createActivityNode(entryNodeB);
ActivityNode replyNodeB = createActivityNode();
replyNodeB.setActivityUuid(activityB.getActivityUuid());
replyNodeB.setTitle("Reply ActivityNode 1B");
replyNodeB.setType("REPLY");
replyNodeB.setInReplyTo(entryNodeB);
activityService.createActivityNode(replyNodeB);
ActivityNode replyNode2B = createActivityNode();
replyNode2B.setActivityUuid(activityB.getActivityUuid());
replyNode2B.setTitle("Reply ActivityNode 2B");
replyNode2B.setType("REPLY");
replyNode2B.setInReplyTo(replyNodeB);
activityService.createActivityNode(replyNode2B);
ActivityNode replyNode3B = createActivityNode();
replyNode3B.setActivityUuid(activityB.getActivityUuid());
replyNode3B.setTitle("Reply ActivityNode 3B");
replyNode3B.setType("REPLY");
replyNode3B.setInReplyTo(replyNode2B);
activityService.createActivityNode(replyNode3B);
ActivityNode replyNode4B = createActivityNode();
replyNode4B.setActivityUuid(activityB.getActivityUuid());
replyNode4B.setTitle("Reply ActivityNode 4B");
replyNode4B.setType("REPLY");
replyNode4B.setInReplyTo(replyNode3B);
activityService.createActivityNode(replyNode4B);
replyNode = activityService.moveNode(replyNode.getActivityNodeUuid(), replyNode4B.getActivityNodeUuid());
ActivityNode threadNode = activityService.getActivityNode(replyNode4.getActivityNodeUuid());
assertEquals(replyNode4.getActivityNodeUuid(), threadNode.getActivityNodeUuid());
assertEquals("Reply ActivityNode 4A", threadNode.getTitle());
threadNode = activityService.getActivityNode(threadNode.getInReplyTo().getHref().replaceAll(".*Uuid=", ""));
assertEquals(replyNode3.getActivityNodeUuid(), threadNode.getActivityNodeUuid());
assertEquals("Reply ActivityNode 3A", threadNode.getTitle());
threadNode = activityService.getActivityNode(threadNode.getInReplyTo().getHref().replaceAll(".*Uuid=", ""));
assertEquals(replyNode2.getActivityNodeUuid(), threadNode.getActivityNodeUuid());
assertEquals("Reply ActivityNode 2A", threadNode.getTitle());
threadNode = activityService.getActivityNode(threadNode.getInReplyTo().getHref().replaceAll(".*Uuid=", ""));
assertEquals(replyNode.getActivityNodeUuid(), threadNode.getActivityNodeUuid());
assertEquals("Reply ActivityNode 1A", threadNode.getTitle());
threadNode = activityService.getActivityNode(threadNode.getInReplyTo().getHref().replaceAll(".*Uuid=", ""));
assertEquals(replyNode4B.getActivityNodeUuid(), threadNode.getActivityNodeUuid());
assertEquals("Reply ActivityNode 4B", threadNode.getTitle());
threadNode = activityService.getActivityNode(threadNode.getInReplyTo().getHref().replaceAll(".*Uuid=", ""));
assertEquals(replyNode3B.getActivityNodeUuid(), threadNode.getActivityNodeUuid());
assertEquals("Reply ActivityNode 3B", threadNode.getTitle());
threadNode = activityService.getActivityNode(threadNode.getInReplyTo().getHref().replaceAll(".*Uuid=", ""));
assertEquals(replyNode2B.getActivityNodeUuid(), threadNode.getActivityNodeUuid());
assertEquals("Reply ActivityNode 2B", threadNode.getTitle());
threadNode = activityService.getActivityNode(threadNode.getInReplyTo().getHref().replaceAll(".*Uuid=", ""));
assertEquals(replyNodeB.getActivityNodeUuid(), threadNode.getActivityNodeUuid());
assertEquals("Reply ActivityNode 1B", threadNode.getTitle());
threadNode = activityService.getActivityNode(threadNode.getInReplyTo().getHref().replaceAll(".*Uuid=", ""));
assertEquals(entryNodeB.getActivityNodeUuid(), threadNode.getActivityNodeUuid());
assertEquals("Entry ActivityNode B", threadNode.getTitle());
if (activityB != null) {
try {
activityService.deleteActivity(activityB);
} catch (Exception e) {
}
}
}
@Test
public void testMoveReply() throws ClientServicesException, XMLException {
activity = new Activity();
activity.setTitle(createActivityTitle());
activity = activityService.createActivity(activity);
ActivityNode entryNode = new ActivityNode();
entryNode.setActivityUuid(activity.getActivityUuid());
entryNode.setTitle("Source ActivityNode");
entryNode.setType("ENTRY");
activityService.createActivityNode(entryNode);
ActivityNode todoNode = createActivityNode();
todoNode.setActivityUuid(activity.getActivityUuid());
todoNode.setTitle("Destination ActivityNode");
todoNode.setType("TODO");
activityService.createActivityNode(todoNode);
ActivityNode replyNode = createActivityNode();
replyNode.setActivityUuid(activity.getActivityUuid());
replyNode.setTitle("Destination ActivityNode");
replyNode.setType("REPLY");
replyNode.setInReplyTo(entryNode);
activityService.createActivityNode(replyNode);
replyNode = activityService.moveNode(replyNode.getActivityNodeUuid(), activity.getActivityUuid());
replyNode = activityService.moveNode(replyNode.getActivityNodeUuid(),
todoNode.getActivityNodeUuid());
assertEquals(todoNode.getActivityNodeUuid(),
replyNode.getInReplyTo().getHref().replaceAll(".*Uuid=", ""));
replyNode = activityService.moveNode(replyNode.getActivityNodeUuid(),
entryNode.getActivityNodeUuid());
assertEquals(todoNode.getActivityNodeUuid(),
replyNode.getInReplyTo().getHref().replaceAll(".*Uuid=", ""));
}
@Test
public void testMoveReplyAdvanced() throws ClientServicesException, XMLException {
activity = new Activity();
activity.setTitle(createActivityTitle());
activity = activityService.createActivity(activity);
ActivityNode entryNode = new ActivityNode();
entryNode.setActivityUuid(activity.getActivityUuid());
entryNode.setTitle("Source ActivityNode");
entryNode.setType("ENTRY");
activityService.createActivityNode(entryNode);
ActivityNode todoNode = createActivityNode();
todoNode.setActivityUuid(activity.getActivityUuid());
todoNode.setTitle("Destination ActivityNode");
todoNode.setType("TODO");
activityService.createActivityNode(todoNode);
ActivityNode replyNode = createActivityNode();
replyNode.setActivityUuid(activity.getActivityUuid());
replyNode.setTitle("Destination ActivityNode");
replyNode.setType("REPLY");
replyNode.setInReplyTo(entryNode);
activityService.createActivityNode(replyNode);
ActivityNode replyNode2 = createActivityNode();
replyNode2.setActivityUuid(activity.getActivityUuid());
replyNode2.setTitle("Destination ActivityNode");
replyNode2.setType("REPLY");
replyNode2.setInReplyTo(replyNode);
activityService.createActivityNode(replyNode2);
replyNode = activityService.moveNode(replyNode.getActivityNodeUuid(),
todoNode.getActivityNodeUuid());
replyNode = activityService.moveNode(replyNode.getActivityNodeUuid(),
entryNode.getActivityNodeUuid());
replyNode2 = activityService.moveNode(replyNode2.getActivityNodeUuid(),
entryNode.getActivityNodeUuid());
replyNode = activityService.moveNode(replyNode.getActivityNodeUuid(),
replyNode2.getActivityNodeUuid());
replyNode = activityService.getActivityNode(replyNode.getActivityNodeUuid());
replyNode2 = activityService.getActivityNode(replyNode2.getActivityNodeUuid());
replyNode = activityService.moveNode(replyNode.getActivityNodeUuid(), activity.getActivityUuid());
}
@Test
public void testMoveNodeACL() throws ClientServicesException {
Activity activityA = new Activity();
activityA.setTitle(createActivityTitle());
activityA = activityService.createActivity(activityA);
Activity activityB = new Activity();
activityB.setTitle(createActivityTitle());
activityB = activityService.createActivity(activityB);
String memberId = getMemberId();
Member member = activityB.addMember("person", memberId, "owner");
ActivityNode srcActivityNode = new ActivityNode();
srcActivityNode.setActivityUuid(activityA.getActivityUuid());
srcActivityNode.setTitle("Source ActivityNode");
srcActivityNode.setType("ENTRY");
// Field 1
TextField textField = new TextField();
textField.setName("test_text");
textField.setPosition(1000);
textField.setSummary("Test_Text_Field");
// Field 2
Date date = new Date();
date.setTime(1397650699000L);
DateField dateField = new DateField();
dateField.setName("test_date");
dateField.setPosition(2000);
dateField.setDate(date);
// Field 3
TextField hiddenTextField = new TextField();
hiddenTextField.setName("test_hidden_text");
hiddenTextField.setPosition(3000);
hiddenTextField.setSummary("Hidden_Text_Field");
hiddenTextField.setHidden(true);
srcActivityNode.addField(textField);
srcActivityNode.addField(hiddenTextField);
srcActivityNode.addField(dateField);
srcActivityNode = activityService.createActivityNode(srcActivityNode);
int numFields = srcActivityNode.getFields().length;
activityService.moveNode(srcActivityNode.getActivityNodeUuid(), activityB.getActivityUuid());
BasicEndpoint endpoint = (BasicEndpoint)activityService.getEndpoint();
try {
endpoint.logout();
endpoint.login(TestEnvironment.getSecondaryUserEmail(), TestEnvironment.getSecondaryUserPassword());
} catch (AuthenticationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ActivityNode read = activityService.getActivityNode(srcActivityNode.getActivityNodeUuid());
assertNotNull(read);
Field movedTextField = read.getFieldByName(textField.getName());
assertTrue(movedTextField instanceof TextField);
assertEquals("test_text", movedTextField.getName());
assertEquals(1000, ((TextField)movedTextField).getPosition());
assertEquals("Test_Text_Field", ((TextField)movedTextField).getSummary());
// Check date field
Field movedDateField = read.getFieldByName(dateField.getName());
assertTrue(movedDateField instanceof DateField);
assertEquals("test_date", ((DateField)movedDateField).getName());
assertEquals(2000, ((DateField)movedDateField).getPosition());
assertNotNull(((DateField)movedDateField).getDate());
// Check hidden text field
Field movedHiddenTextField = read.getFieldByName(hiddenTextField.getName());
assertTrue(movedHiddenTextField instanceof TextField);
assertTrue(((TextField)movedHiddenTextField).isHidden());
assertEquals("test_hidden_text", ((TextField)movedHiddenTextField).getName());
assertEquals(3000, ((TextField)movedHiddenTextField).getPosition());
assertEquals("Hidden_Text_Field", ((TextField)movedHiddenTextField).getSummary());
}
}