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