diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/ProjectSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/ProjectSampleTest.java index 741a3f1d918e24c31b86fb03e90bda8c4eb3cd7a..56bba4b0d04c7a46f5e3d5684f2707b3855b1ffa 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/ProjectSampleTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/ProjectSampleTest.java @@ -19,7 +19,6 @@ package ch.ethz.sis.openbis.systemtest.api.v3; import static junit.framework.Assert.fail; import static org.testng.Assert.assertEquals; -import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -33,7 +32,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -50,17 +48,21 @@ import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.project.Projec import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.sample.SampleFetchOptions; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.entitytype.EntityTypePermId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.experiment.ExperimentPermId; +import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.experiment.IExperimentId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.project.IProjectId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.project.ProjectPermId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.sample.ISampleId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.sample.SamplePermId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.space.ISpaceId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.space.SpacePermId; +import ch.ethz.sis.openbis.generic.shared.api.v3.dto.search.SampleSearchCriteria; +import ch.ethz.sis.openbis.generic.shared.api.v3.dto.search.SearchResult; import ch.systemsx.cisd.common.action.IDelegatedAction; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.openbis.generic.server.dataaccess.util.UpdateUtils; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.systemtest.base.BaseTest; /** @@ -86,8 +88,8 @@ public class ProjectSampleTest extends BaseTest @Autowired protected IApplicationServerApi v3api; - private SpacePermId space1; - private SpacePermId space2; + private ISpaceId space1; + private ISpaceId space2; private ProjectPermId project1inSpace1; private ProjectPermId project2inSpace1; private ProjectPermId project1InSpace2; @@ -99,8 +101,9 @@ public class ProjectSampleTest extends BaseTest private SamplePermId sample2InSpace1; @BeforeClass - public void createMasterData() + public void createSpacesAndProject() { + System.err.println("create spaces"); List<SpacePermId> spaces = createSpaces(systemSessionToken, "SPACE1", "SPACE2"); space1 = spaces.get(0); space2 = spaces.get(1); @@ -109,14 +112,21 @@ public class ProjectSampleTest extends BaseTest project2inSpace1 = projects.get(1); project1InSpace2 = createProjects(systemSessionToken, space2, "PROJECT1").get(0); project2InSpace2 = createProjects(systemSessionToken, space2, "PROJECT2").get(0); - + } + + @BeforeMethod + @Test(enabled = false) + public void createTestEntities() + { + System.err.println("create testentities"); experimentInProject1InSpace1 = createExperiments(systemSessionToken, project1inSpace1, "EXP1").get(0); - List<SamplePermId> sharedSamples = createSamples(systemSessionToken, null, null, "SHARED1", "SHARED2"); + List<SamplePermId> sharedSamples = createSamples(systemSessionToken, null, null, null, "SHARED1", "SHARED2"); sharedSample1 = sharedSamples.get(0); sharedSample2 = sharedSamples.get(1); - List<SamplePermId> spaceSamples = createSamples(systemSessionToken, space1, null, "SAMPLE1", "SAMPLE2"); + List<SamplePermId> spaceSamples = createSamples(systemSessionToken, space1, null, null, "SAMPLE1", "SAMPLE2"); sample1InSpace1 = spaceSamples.get(0); sample2InSpace1 = spaceSamples.get(1); + createSamples(systemSessionToken, space1, project1inSpace1, null, "SAMPLE3", "SAMPLE4"); waitAtLeastASecond(); // to allow checks on modification time stamps UpdateUtils.waitUntilIndexUpdaterIsIdle(applicationContext, operationLog); System.err.println("Test data created"); @@ -126,7 +136,7 @@ public class ProjectSampleTest extends BaseTest @Test(enabled = false) public void cleanDatabase() { - System.err.println("do not clean database"); + super.cleanDatabase(); } private List<SpacePermId> createSpaces(String sessionToken, String...spaceCodes) @@ -168,7 +178,8 @@ public class ProjectSampleTest extends BaseTest return v3api.createExperiments(sessionToken, newExperiments); } - private List<SamplePermId> createSamples(String sessionToken, ISpaceId spaceOrNull, IProjectId projectOrNull, String...codes) + private List<SamplePermId> createSamples(String sessionToken, ISpaceId spaceOrNull, + IProjectId projectOrNull, IExperimentId experimentOrNull, String...codes) { List<SampleCreation> newSamples = new ArrayList<SampleCreation>(); for (String code : codes) @@ -177,6 +188,7 @@ public class ProjectSampleTest extends BaseTest sample.setTypeId(ENTITY_TYPE_UNKNOWN); sample.setSpaceId(spaceOrNull); sample.setProjectId(projectOrNull); + sample.setExperimentId(experimentOrNull); sample.setCode(code); newSamples.add(sample); } @@ -235,7 +247,7 @@ public class ProjectSampleTest extends BaseTest public void testAssignSpaceSampleToAProject() { String sampleCode = createUniqueCode(); - SamplePermId spaceSample = createSamples(systemSessionToken, space1, null, sampleCode).get(0); + SamplePermId spaceSample = createSamples(systemSessionToken, space1, null, null, sampleCode).get(0); SampleUpdate sampleUpdate = new SampleUpdate(); sampleUpdate.setSampleId(spaceSample); sampleUpdate.setProjectId(project1inSpace1); @@ -259,7 +271,7 @@ public class ProjectSampleTest extends BaseTest public void testAssignProjectSampleToADifferentProjectInTheSameSpace() { String sampleCode = createUniqueCode(); - SamplePermId spaceSample = createSamples(systemSessionToken, space1, project1inSpace1, sampleCode).get(0); + SamplePermId spaceSample = createSamples(systemSessionToken, space1, project1inSpace1, null, sampleCode).get(0); SampleUpdate sampleUpdate = new SampleUpdate(); sampleUpdate.setSampleId(spaceSample); sampleUpdate.setProjectId(project2inSpace1); @@ -283,7 +295,7 @@ public class ProjectSampleTest extends BaseTest public void testAssignProjectSampleToAProjectInADifferentSpace() { String sampleCode = createUniqueCode(); - SamplePermId spaceSample = createSamples(systemSessionToken, space1, project1inSpace1, sampleCode).get(0); + SamplePermId spaceSample = createSamples(systemSessionToken, space1, project1inSpace1, null, sampleCode).get(0); SampleUpdate sampleUpdate = new SampleUpdate(); sampleUpdate.setSampleId(spaceSample); sampleUpdate.setSpaceId(space2); @@ -308,7 +320,7 @@ public class ProjectSampleTest extends BaseTest public void testUnassignProjectSampleFromProject() { String sampleCode = createUniqueCode(); - SamplePermId spaceSample = createSamples(systemSessionToken, space1, project1inSpace1, sampleCode).get(0); + SamplePermId spaceSample = createSamples(systemSessionToken, space1, project1inSpace1, null, sampleCode).get(0); SampleUpdate sampleUpdate = new SampleUpdate(); sampleUpdate.setSampleId(spaceSample); sampleUpdate.setProjectId(null); @@ -421,55 +433,50 @@ public class ProjectSampleTest extends BaseTest + "(Context: [verify project for sample SAMPLE1])"); } - /* @Test + @Transactional(propagation = Propagation.NEVER) public void testAssignSampleOfAnExperimentToProjectDifferentToTheExperimentProject() { - final String sessionToken = v3api.login(TEST_USER, PASSWORD); - + String sampleCode = createUniqueCode(); + SamplePermId sample = createSamples(systemSessionToken, space1, null, experimentInProject1InSpace1, sampleCode).get(0); final SampleUpdate sampleUpdate = new SampleUpdate(); - SampleIdentifier sampleId = new SampleIdentifier("/CISD/3VCP5"); - sampleUpdate.setSampleId(sampleId); - ProjectIdentifier projectId = new ProjectIdentifier("/CISD/NOE"); - sampleUpdate.setProjectId(projectId); + sampleUpdate.setSampleId(sample); + sampleUpdate.setProjectId(project2inSpace1); assertUserFailureException(new IDelegatedAction() { @Override public void execute() { - v3api.updateSamples(sessionToken, Collections.singletonList(sampleUpdate)); + v3api.updateSamples(systemSessionToken, Collections.singletonList(sampleUpdate)); } }, "Sample project must be the same as experiment project. " - + "Sample: /CISD/3VCP5, " - + "Project: /CISD/NOE, " - + "Experiment: /CISD/NEMO/EXP10 " - + "(Context: [verify experiment for sample 3VCP5])"); + + "Sample: /SPACE1/" + sampleCode + ", " + + "Project: /SPACE1/PROJECT2, " + + "Experiment: /SPACE1/PROJECT1/EXP1 " + + "(Context: [verify experiment for sample " + sampleCode + "])"); } @Test + @Transactional(propagation = Propagation.NEVER) public void testAssignSharedSampleToProject() { - final String sessionToken = v3api.login(TEST_USER, PASSWORD); - final SampleUpdate sampleUpdate = new SampleUpdate(); - SampleIdentifier sampleId = new SampleIdentifier("/MP"); - sampleUpdate.setSampleId(sampleId); - ProjectIdentifier projectId = new ProjectIdentifier("/TEST-SPACE/NOE"); - sampleUpdate.setProjectId(projectId); + sampleUpdate.setSampleId(sharedSample1); + sampleUpdate.setProjectId(project1inSpace1); assertUserFailureException(new IDelegatedAction() { @Override public void execute() { - v3api.updateSamples(sessionToken, Collections.singletonList(sampleUpdate)); + v3api.updateSamples(systemSessionToken, Collections.singletonList(sampleUpdate)); } }, "Shared samples cannot be attached to projects. " - + "Sample: /MP, " - + "Project: /TEST-SPACE/NOE " - + "(Context: [verify project for sample MP])"); + + "Sample: /SHARED1, " + + "Project: /SPACE1/PROJECT1 " + + "(Context: [verify project for sample SHARED1])"); } @Test @@ -482,27 +489,30 @@ public class ProjectSampleTest extends BaseTest SearchResult<Sample> result = v3api.searchSamples(systemSessionToken, searchCriteria, fetchOptions); - assertEquals(result.getObjects().get(0).getIdentifier().getIdentifier(), "/CISD/NEMO/3VCP5"); - assertEquals(result.getObjects().get(0).getProject().getIdentifier().getIdentifier(), "/CISD/NEMO"); - assertEquals(result.getTotalCount(), 1); + assertEquals(result.getObjects().get(0).getIdentifier().getIdentifier(), "/SPACE1/PROJECT1/SAMPLE3"); + assertEquals(result.getObjects().get(0).getProject().getIdentifier().getIdentifier(), "/SPACE1/PROJECT1"); + assertEquals(result.getObjects().get(1).getIdentifier().getIdentifier(), "/SPACE1/PROJECT1/SAMPLE4"); + assertEquals(result.getObjects().get(1).getProject().getIdentifier().getIdentifier(), "/SPACE1/PROJECT1"); + assertEquals(result.getTotalCount(), 2); } @Test public void testSearchForSamplesWithCodeAndWithProject() { SampleSearchCriteria searchCriteria = new SampleSearchCriteria(); - searchCriteria.withCode().thatStartsWith("3V"); + searchCriteria.withCode().thatEndsWith("3"); searchCriteria.withProject(); SampleFetchOptions fetchOptions = new SampleFetchOptions(); fetchOptions.withProject(); SearchResult<Sample> result = v3api.searchSamples(systemSessionToken, searchCriteria, fetchOptions); - assertEquals(result.getObjects().get(0).getIdentifier().getIdentifier(), "/CISD/NEMO/3VCP5"); - assertEquals(result.getObjects().get(0).getProject().getIdentifier().getIdentifier(), "/CISD/NEMO"); + assertEquals(result.getObjects().get(0).getIdentifier().getIdentifier(), "/SPACE1/PROJECT1/SAMPLE3"); + assertEquals(result.getObjects().get(0).getProject().getIdentifier().getIdentifier(), "/SPACE1/PROJECT1"); assertEquals(result.getTotalCount(), 1); } + /* @Test public void testSearchForSamplesWithProjectWithSpaceWithCode() {