Skip to content
Snippets Groups Projects
Commit 9b33a783 authored by felmer's avatar felmer
Browse files

SSDM-1621: AssignSampleToExperimentViaDropBoxAPITest introduced.

SVN: 33799
parent c153f068
No related branches found
No related tags found
No related merge requests found
......@@ -39,6 +39,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleC
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifierFactory;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
import ch.systemsx.cisd.openbis.systemtest.base.BaseTest;
import ch.systemsx.cisd.openbis.systemtest.base.auth.AuthorizationRule;
import ch.systemsx.cisd.openbis.systemtest.base.auth.GuardedDomain;
......@@ -182,12 +184,6 @@ public abstract class AbstractAssignmentSampleToExperimentTestCase extends BaseT
abstract protected void reassignSampleToExperiment(String samplePermId, String experimentIdentifierOrNull,
String userSessionToken);
/**
* Registers a new experiment for the specified project with the specified existing samples.
*/
abstract protected String registerExperimentWithSamples(String projectIdentifier, List<String> samplePermIds,
String userSessionToken);
@Test
public void unassignSampleWithDataSetsFromExperiment()
{
......@@ -605,7 +601,27 @@ public abstract class AbstractAssignmentSampleToExperimentTestCase extends BaseT
{
checkAssigningSamplesToExperiment(destinationSpaceRole, instanceRole);
}
protected Sample[] loadSamples(List<String> samplePermIds)
{
List<Sample> samples = new ArrayList<Sample>();
for (String permId : samplePermIds)
{
SampleIdentifier sampleIdentifier = etlService.tryGetSampleIdentifier(systemSessionToken, permId);
if (sampleIdentifier == null)
{
throw new IllegalArgumentException("Unknown sample with perm id: " + permId);
}
Sample sample = etlService.tryGetSampleWithExperiment(systemSessionToken, sampleIdentifier);
if (sample == null)
{
throw new IllegalArgumentException("Unknown sample with identifier: " + sampleIdentifier);
}
samples.add(sample);
}
return samples.toArray(new Sample[0]);
}
private void checkAssigningSampleToExperiment(RoleWithHierarchy sourceSpaceRole, RoleWithHierarchy destinationSpaceRole,
RoleWithHierarchy instanceRole)
{
......@@ -656,8 +672,12 @@ public abstract class AbstractAssignmentSampleToExperimentTestCase extends BaseT
{
List<String> samplePermIds = getSamplePermIds(sampleNodes);
String user = create(aSession().withInstanceRole(RoleCode.ADMIN));
String experimentIdentifier
= registerExperimentWithSamples(entityGraphManager.getIdentifierOfDefaultProject(), samplePermIds, user);
String projectIdentifier = entityGraphManager.getIdentifierOfDefaultProject();
Sample[] samples = loadSamples(samplePermIds);
Project project = commonServer.getProjectInfo(systemSessionToken, ProjectIdentifierFactory.parse(projectIdentifier));
Experiment experiment = create(anExperiment().inProject(project).withSamples(samples).as(user));
String experimentIdentifier = experiment.getIdentifier();
addToRepository(experimentNode, etlService.tryGetExperiment(systemSessionToken,
ExperimentIdentifierFactory.parse(experimentIdentifier)));
}
......@@ -671,5 +691,5 @@ public abstract class AbstractAssignmentSampleToExperimentTestCase extends BaseT
}
return samplePermIds;
}
}
......@@ -16,16 +16,13 @@
package ch.systemsx.cisd.openbis.systemtest;
import java.util.ArrayList;
import java.util.List;
import org.testng.annotations.Test;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifierFactory;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
/**
......@@ -60,35 +57,4 @@ public class AssignSampleToExperimentTest extends AbstractAssignmentSampleToExpe
perform(anUpdateOf(sample).removingExperiment().as(userSessionToken));
}
}
@Override
protected String registerExperimentWithSamples(String projectIdentifier, List<String> samplePermIds,
String userSessionToken)
{
Sample[] samples = loadSamples(samplePermIds);
Project project = commonServer.getProjectInfo(systemSessionToken, ProjectIdentifierFactory.parse(projectIdentifier));
Experiment experiment = create(anExperiment().inProject(project).withSamples(samples).as(userSessionToken));
return experiment.getIdentifier();
}
private Sample[] loadSamples(List<String> samplePermIds)
{
List<Sample> samples = new ArrayList<Sample>();
for (String permId : samplePermIds)
{
SampleIdentifier sampleIdentifier = etlService.tryGetSampleIdentifier(systemSessionToken, permId);
if (sampleIdentifier == null)
{
throw new IllegalArgumentException("Unknown sample with perm id: " + permId);
}
Sample sample = etlService.tryGetSampleWithExperiment(systemSessionToken, sampleIdentifier);
if (sample == null)
{
throw new IllegalArgumentException("Unknown sample with identifier: " + sampleIdentifier);
}
samples.add(sample);
}
return samples.toArray(new Sample[0]);
}
}
/*
* Copyright 2012 ETH Zuerich, CISD
*
* 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 ch.systemsx.cisd.openbis.systemtest;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.testng.annotations.Test;
import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Code;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO;
import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO;
import ch.systemsx.cisd.openbis.generic.shared.dto.builders.AtomicEntityOperationDetailsBuilder;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory;
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
/**
* @author Franz-Josef Elmer
*/
@Test(groups = { "system-cleandb" })
public class AssignSampleToExperimentViaDropBoxAPITest extends AbstractAssignmentSampleToExperimentTestCase
{
@Override
protected void reassignSamplesToExperiment(String experimentIdentifier, List<String> samplePermIds,
String userSessionToken)
{
ExperimentIdentifier identifier = ExperimentIdentifierFactory.parse(experimentIdentifier);
Experiment experiment = etlService.tryGetExperiment(systemSessionToken, identifier);
ExperimentUpdatesDTO experimentUpdate = new ExperimentUpdatesDTO();
experimentUpdate.setExperimentId(new TechId(experiment));
experimentUpdate.setProjectIdentifier(identifier);
experimentUpdate.setVersion(experiment.getVersion());
experimentUpdate.setProperties(Collections.<IEntityProperty>emptyList());
experimentUpdate.setAttachments(Collections.<NewAttachment>emptyList());
Sample[] samples = loadSamples(samplePermIds);
experimentUpdate.setSampleCodes(Code.extractCodesToArray(Arrays.asList(samples)));
AtomicEntityOperationDetailsBuilder builder = new AtomicEntityOperationDetailsBuilder();
etlService.performEntityOperations(userSessionToken, builder.experimentUpdate(experimentUpdate).getDetails());
}
@Override
protected void reassignSampleToExperiment(String samplePermId, String experimentIdentifierOrNull,
String userSessionToken)
{
SampleIdentifier sampleIdentifier = etlService.tryGetSampleIdentifier(systemSessionToken, samplePermId);
Sample sample = etlService.tryGetSampleWithExperiment(systemSessionToken, sampleIdentifier);
ExperimentIdentifier experimentIdentifier = null;
if (experimentIdentifierOrNull != null)
{
experimentIdentifier = ExperimentIdentifierFactory.parse(experimentIdentifierOrNull);
sampleIdentifier = new SampleIdentifier(experimentIdentifier, sampleIdentifier.getSampleCode());
}
AtomicEntityOperationDetailsBuilder builder = new AtomicEntityOperationDetailsBuilder();
String containerIdentifier = null;
if (sample.getContainer() != null)
{
containerIdentifier = sample.getContainer().getIdentifier();
}
builder.sampleUpdate(new SampleUpdatesDTO(new TechId(sample), Collections.<IEntityProperty> emptyList(),
experimentIdentifier, Collections.<NewAttachment> emptyList(), sample.getVersion(),
sampleIdentifier, containerIdentifier, null));
etlService.performEntityOperations(userSessionToken, builder.getDetails());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment