From be2465a04f27f086bd514e8509e06c8697f3d328 Mon Sep 17 00:00:00 2001 From: pkupczyk <pkupczyk> Date: Tue, 29 Sep 2015 11:33:56 +0000 Subject: [PATCH] SSDM-2497 : V3 AS API - improve performance of searchDataSets - test Project attachments SVN: 34734 --- .../systemtest/api/v3/AbstractTest.java | 9 ++- .../systemtest/api/v3/MapProjectTest.java | 78 +++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/AbstractTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/AbstractTest.java index 84b0b2bff93..63ced6d57c1 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/AbstractTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/AbstractTest.java @@ -21,6 +21,7 @@ import static org.testng.Assert.assertNotNull; import static org.testng.Assert.fail; import java.lang.reflect.Method; +import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Collection; @@ -80,7 +81,7 @@ public class AbstractTest extends SystemTestCase { protected static final String SYSTEM_USER = "system"; - + protected static final String NOT_EXISTING_USER = "notexistinguser"; protected static final String TEST_SPACE_USER = "test_space"; @@ -634,6 +635,12 @@ public class AbstractTest extends SystemTestCase assertEquals(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(actualDate), expectedDate); } + protected void assertToday(Date actualDate) + { + DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + assertEquals(format.format(actualDate), format.format(new Date())); + } + protected static void assertSpaceCodes(Collection<Space> spaces, String... expectedCodes) { Set<String> actualSet = new HashSet<String>(); diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapProjectTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapProjectTest.java index 9fd0e7ca29b..68e9b4c9e86 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapProjectTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapProjectTest.java @@ -27,6 +27,8 @@ import java.util.Map; import org.testng.Assert; import org.testng.annotations.Test; +import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.attachment.Attachment; +import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.attachment.AttachmentCreation; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.experiment.Experiment; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.experiment.ExperimentCreation; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.experiment.ExperimentUpdate; @@ -312,6 +314,82 @@ public class MapProjectTest extends AbstractTest assertAttachmentsNotFetched(project); } + @Test + public void testMapWithAttachment() + { + String sessionToken = v3api.login(TEST_USER, PASSWORD); + + AttachmentCreation attachmentCreation1 = new AttachmentCreation(); + attachmentCreation1.setFileName("test.txt"); + attachmentCreation1.setDescription("test description 1"); + attachmentCreation1.setTitle("test title 1"); + attachmentCreation1.setContent("test content 1".getBytes()); + + ProjectCreation projectCreation = new ProjectCreation(); + projectCreation.setCode("PROJECT_WITH_ATTACHMENT"); + projectCreation.setSpaceId(new SpacePermId("CISD")); + projectCreation.setAttachments(Arrays.asList(attachmentCreation1)); + + List<ProjectPermId> projectPermIds = v3api.createProjects(sessionToken, Arrays.asList(projectCreation)); + + AttachmentCreation attachmentCreation2 = new AttachmentCreation(); + attachmentCreation2.setFileName("test.txt"); + attachmentCreation2.setDescription("test description 2"); + attachmentCreation2.setTitle("test title 2"); + attachmentCreation2.setContent("test content 2".getBytes()); + + ProjectUpdate projectUpdate = new ProjectUpdate(); + projectUpdate.setProjectId(projectPermIds.get(0)); + projectUpdate.getAttachments().add(attachmentCreation2); + + v3api.updateProjects(sessionToken, Arrays.asList(projectUpdate)); + + ProjectFetchOptions fetchOptions = new ProjectFetchOptions(); + fetchOptions.withAttachments().withContent(); + fetchOptions.withAttachments().withRegistrator(); + fetchOptions.withAttachments().withPreviousVersion().withContent(); + + Map<IProjectId, Project> map = v3api.mapProjects(sessionToken, projectPermIds, fetchOptions); + + assertEquals(1, map.size()); + Project project = map.get(projectPermIds.get(0)); + + List<Attachment> attachments = project.getAttachments(); + assertEquals(attachments.size(), 1); + + Attachment attachment = attachments.get(0); + assertEquals(attachment.getFileName(), attachmentCreation2.getFileName()); + assertEquals(attachment.getDescription(), attachmentCreation2.getDescription()); + assertEquals(attachment.getTitle(), attachmentCreation2.getTitle()); + assertEquals(attachment.getContent(), attachmentCreation2.getContent()); + assertEquals(attachment.getVersion(), Integer.valueOf(2)); + assertEquals(attachment.getRegistrator().getUserId(), TEST_USER); + assertToday(attachment.getRegistrationDate()); + assertEquals(attachment.getLatestVersionPermlink(), + "http://localhost/openbis/index.html?viewMode=SIMPLE#action=DOWNLOAD_ATTACHMENT&file=test.txt&entity=PROJECT&code=PROJECT_WITH_ATTACHMENT&space=CISD"); + assertEquals( + attachment.getPermlink(), + "http://localhost/openbis/index.html?viewMode=SIMPLE#action=DOWNLOAD_ATTACHMENT&file=test.txt&version=2&entity=PROJECT&code=PROJECT_WITH_ATTACHMENT&space=CISD"); + + Attachment attachmentPrevious = attachment.getPreviousVersion(); + assertEquals(attachmentPrevious.getFileName(), attachmentCreation1.getFileName()); + assertEquals(attachmentPrevious.getDescription(), attachmentCreation1.getDescription()); + assertEquals(attachmentPrevious.getTitle(), attachmentCreation1.getTitle()); + assertEquals(attachmentPrevious.getContent(), attachmentCreation1.getContent()); + assertEquals(attachmentPrevious.getVersion(), Integer.valueOf(1)); + assertToday(attachmentPrevious.getRegistrationDate()); + assertEquals(attachmentPrevious.getLatestVersionPermlink(), + "http://localhost/openbis/index.html?viewMode=SIMPLE#action=DOWNLOAD_ATTACHMENT&file=test.txt&entity=PROJECT&code=PROJECT_WITH_ATTACHMENT&space=CISD"); + assertEquals( + attachmentPrevious.getPermlink(), + "http://localhost/openbis/index.html?viewMode=SIMPLE#action=DOWNLOAD_ATTACHMENT&file=test.txt&version=1&entity=PROJECT&code=PROJECT_WITH_ATTACHMENT&space=CISD"); + + assertRegistratorNotFetched(attachmentPrevious); + assertPreviousAttachmentNotFetched(attachmentPrevious); + + v3api.logout(sessionToken); + } + @Test public void testMapWithHistoryEmpty() { -- GitLab