@Test public void readSampleForbiddenForExternalUser() throws CatalogException { catalogManager.getSampleManager().updateAcl(String.valueOf(studyFqn), Arrays.asList(smp2.getId()), externalUser, new Sample.SampleAclParams("", AclParams.Action.SET, null, null, null), ownerSessionId); thrown.expect(CatalogAuthorizationException.class); catalogManager.getSampleManager().get(studyFqn, smp2.getId(), null, externalSessionId); }
@Test public void adminShareSampleWithOtherUser() throws CatalogException { catalogManager.getSampleManager().updateAcl(studyFqn, Collections.singletonList(smp4.getId()), externalUser, allSamplePermissions, studyAdmin1SessionId); QueryResult<Sample> sample = catalogManager.getSampleManager().get(studyFqn, smp4.getId(), null, externalSessionId); assertEquals(1, sample.getNumResults()); }
@Test public void readSampleExplicitUnshared() throws CatalogException { QueryResult<Sample> sample = catalogManager.getSampleManager().get(studyFqn, smp1.getId(), null, externalSessionId); assertEquals(1, sample.getNumResults()); catalogManager.getAuthorizationManager().removeAcls(Collections.singletonList(smp1.getUid()), Collections.singletonList(externalUser), null, Entity.SAMPLE); thrown.expect(CatalogAuthorizationException.class); catalogManager.getSampleManager().get(studyFqn, smp1.getId(), null, externalSessionId); }
@Test public void readSampleNoShared() throws CatalogException { thrown.expect(CatalogAuthorizationException.class); catalogManager.getSampleManager().get(studyFqn, smp2.getId(), null, externalSessionId); }
@Test public void readSampleExplicitForbidden() throws CatalogException { thrown.expect(CatalogAuthorizationException.class); catalogManager.getSampleManager().get(studyFqn, smp3.getId(), null, externalSessionId); }
@Test public void readSampleAdminUser() throws CatalogException { QueryResult<Sample> sample = catalogManager.getSampleManager().get(studyFqn, smp1.getId(), null, studyAdmin1SessionId); assertEquals(1, sample.getNumResults()); sample = catalogManager.getSampleManager().get(studyFqn, smp3.getId(), null, studyAdmin1SessionId); assertEquals(1, sample.getNumResults()); }
@Test public void readSampleOwnerUser() throws CatalogException { QueryResult<Sample> sample = catalogManager.getSampleManager().get(studyFqn, smp1.getId(), null, ownerSessionId); assertEquals(1, sample.getNumResults()); sample = catalogManager.getSampleManager().get(studyFqn, smp2.getId(), null, ownerSessionId); assertEquals(1, sample.getNumResults()); sample = catalogManager.getSampleManager().get(studyFqn, smp3.getId(), null, ownerSessionId); assertEquals(1, sample.getNumResults()); // Owner always have access even if he has been removed all the permissions Study.StudyAclParams aclParams = new Study.StudyAclParams("", AclParams.Action.ADD, null); catalogManager.getStudyManager().updateAcl(Collections.singletonList(studyFqn), ownerUser, aclParams, ownerSessionId); catalogManager.getSampleManager().updateAcl(studyFqn, Collections.singletonList(smp1.getId()), ownerUser, noSamplePermissions, ownerSessionId); sample = catalogManager.getSampleManager().get(studyFqn, smp1.getId(), null, ownerSessionId); assertEquals(1, sample.getNumResults()); }
@Test public void readSampleExplicitShared() throws CatalogException { QueryResult<Sample> sample = catalogManager.getSampleManager().get(studyFqn, smp1.getId(), null, externalSessionId); assertEquals(1, sample.getNumResults()); }
@Test public void readSampleSharedForOthers() throws CatalogException { QueryResult<Sample> sample = catalogManager.getSampleManager().get(studyFqn, smp6.getId(), null, externalSessionId); assertEquals(1, sample.getNumResults()); }
@Test public void createSampleTest() throws Exception { long studyId = user3.getProjects().get(0).getStudies().get(0).getUid(); Sample hg0097 = new Sample("HG0097", "1000g", new Individual(), "A description", 1); QueryResult<Sample> result = dbAdaptorFactory.getCatalogSampleDBAdaptor().insert(studyId, hg0097, null); assertEquals(hg0097.getId(), result.first().getId()); assertEquals(hg0097.getDescription(), result.first().getDescription()); assertTrue(result.first().getUid() > 0); }
@Test public void testCreateSampleWithDotInName() throws CatalogException { String name = "HG007.sample"; QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().create(studyFqn, new Sample().setId(name), null, sessionIdUser); assertEquals(name, sampleQueryResult.first().getId()); }
@Test public void testDeleteSampleFromIndexedFile() throws Exception { QueryOptions queryOptions = new QueryOptions(VariantStorageEngine.Options.ANNOTATE.key(), false) .append(VariantStorageEngine.Options.CALCULATE_STATS.key(), false); File inputFile = getFile(0); indexFile(inputFile, queryOptions, outputId); Query query = new Query(SampleDBAdaptor.QueryParams.ID.key(), inputFile.getSamples().get(100).getId()); WriteResult delete = catalogManager.getSampleManager().delete(studyFqn, query, null, sessionId); assertEquals(1, delete.getNumMatches()); assertTrue(delete.getFailed().get(0).getMessage().contains("Sample associated to the files")); }
@Test public void testModifySampleBadIndividual() throws CatalogException { String sampleId1 = catalogManager.getSampleManager().create(studyFqn, "SAMPLE_1", "", "", null, false, null, new HashMap<>(), null, new QueryOptions(), sessionIdUser).first().getId(); thrown.expect(CatalogException.class); thrown.expectMessage("not found"); catalogManager.getSampleManager() .update(studyFqn, sampleId1, new ObjectMap(SampleDBAdaptor.QueryParams.INDIVIDUAL.key(), "ind"), null, sessionIdUser); }
@Test public void readSampleExternalUser() throws CatalogException, IOException { String newUser = "newUser"; catalogManager.getUserManager().create(newUser, newUser, "asda@mail.com", password, "org", 1000L, Account.FULL, null, null); String sessionId = catalogManager.getUserManager().login(newUser, password); thrown.expect(CatalogAuthorizationException.class); catalogManager.getSampleManager().get(studyFqn, smp2.getId(), null, sessionId); }
@Test public void testProjections() throws CatalogException { Study study = catalogManager.getStudyManager().get("1000G:phase1", null, sessionIdUser).first(); Query query = new Query(Constants.ANNOTATION, "variableSet===" + study.getVariableSets().get(0).getId()); QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, "annotationSets"); QueryResult<Sample> annotQueryResult = catalogManager.getSampleManager().search(studyFqn, query, options, sessionIdUser); assertEquals(8, annotQueryResult.getNumResults()); for (Sample sample : annotQueryResult.getResult()) { assertEquals(null, sample.getId()); assertTrue(!sample.getAnnotationSets().isEmpty()); } }
@Test public void testGetMetadataFromBam() throws CatalogException, FileNotFoundException { File file = catalogManager.getFileManager().upload(study.getFqn(), bamFileUri, new File().setPath(folder.getPath() + BAM_FILE_NAME), false, false, sessionIdUser).first(); assertTrue(file.getSize() > 0); file = FileMetadataReader.get(catalogManager). setMetadataInformation(file, null, null, sessionIdUser, false); assertEquals(File.FileStatus.READY, file.getStatus().getName()); // assertEquals(File.Format.GZIP, file.getFormat()); assertEquals(File.Bioformat.ALIGNMENT, file.getBioformat()); assertNotNull(file.getAttributes().get("alignmentHeader")); assertEquals(1, file.getSamples().size()); assertEquals("HG00096", catalogManager.getSampleManager().get(study.getFqn(), file.getSamples().get(0).getId(), null, sessionIdUser).first().getId()); }
@Test public void readSampleSharedForOthersNotWithStudyPermissions() throws CatalogException, IOException { // Add a new user to a new group String newUser = "newUser"; catalogManager.getUserManager().create(newUser, newUser, "asda@mail.com", password, "org", 1000L, Account.FULL, null, null); String sessionId = catalogManager.getUserManager().login(ownerUser, password); catalogManager.getStudyManager().updateGroup(studyFqn, "@members", new GroupParams(newUser, GroupParams.Action.ADD), ownerSessionId); QueryResult<Sample> sample = catalogManager.getSampleManager().get(studyFqn, smp6.getId(), null, sessionId); assertEquals(1, sample.getNumResults()); }
@Test public void createClinicalAnalysisTest() throws CatalogException { QueryResult<ClinicalAnalysis> dummyEnvironment = createDummyEnvironment(true); assertEquals(1, dummyEnvironment.getNumResults()); assertEquals(0, dummyEnvironment.first().getInterpretations().size()); assertEquals("family", dummyEnvironment.first().getFamily().getId()); assertEquals(5, dummyEnvironment.first().getFamily().getMembers().size()); assertNotNull(dummyEnvironment.first().getProband()); assertEquals("child1", dummyEnvironment.first().getProband().getId()); assertEquals(1, dummyEnvironment.first().getProband().getSamples().size()); assertEquals("sample2", dummyEnvironment.first().getProband().getSamples().get(0).getId()); assertEquals(catalogManager.getSampleManager().getUid("sample2", STUDY, sessionIdUser).getResource().getUid(), dummyEnvironment.first().getProband().getSamples().get(0).getUid()); }
@Test public void testModifySample() throws CatalogException { String sampleId1 = catalogManager.getSampleManager() .create(studyFqn, new Sample().setId("SAMPLE_1"), new QueryOptions(), sessionIdUser).first().getId(); String individualId = catalogManager.getIndividualManager().create(studyFqn, new Individual().setId("Individual1"), new QueryOptions(), sessionIdUser).first().getId(); Sample sample = catalogManager.getSampleManager() .update(studyFqn, sampleId1, new ObjectMap(SampleDBAdaptor.QueryParams.INDIVIDUAL.key(), individualId), new QueryOptions("lazy", false), sessionIdUser).first(); assertEquals(individualId, ((Individual) sample.getAttributes().get("individual")).getId()); }
@Test public void testDeleteSample() throws CatalogException { long sampleUid = catalogManager.getSampleManager().create(studyFqn, new Sample().setId("SAMPLE_1"), new QueryOptions(), sessionIdUser).first().getUid(); Query query = new Query(SampleDBAdaptor.QueryParams.ID.key(), "SAMPLE_1"); WriteResult delete = catalogManager.getSampleManager().delete("1000G:phase1", query, null, sessionIdUser); assertEquals(1, delete.getNumModified()); query = new Query() .append(SampleDBAdaptor.QueryParams.UID.key(), sampleUid) .append(SampleDBAdaptor.QueryParams.STATUS_NAME.key(), Status.DELETED); QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().get("1000G:phase1", query, new QueryOptions(), sessionIdUser); // QueryResult<Sample> sample = catalogManager.getSample(sampleId, new QueryOptions(), sessionIdUser); assertEquals(1, sampleQueryResult.getNumResults()); assertTrue(sampleQueryResult.first().getId().contains("DELETED")); }