@Deprecated public QueryResult<Sample> get(Long sampleId, QueryOptions options, String sessionId) throws CatalogException { return get(null, String.valueOf(sampleId), options, sessionId); }
@Test public void testExportSomeSamplesImport() throws Exception { String export = Paths.get(opencga.createTmpOutdir(studyId, "_EXPORT_", sessionId)).resolve("export.avro").toString(); List<Sample> samples = catalogManager.getSampleManager().get(studyId, new Query(), new QueryOptions(), sessionId).getResult(); List<String> someSamples = samples.stream().limit(samples.size() / 2).map(Sample::getId).collect(Collectors.toList()); Query query = new Query(VariantQueryParam.INCLUDE_STUDY.key(), studyId) .append(VariantQueryParam.INCLUDE_SAMPLE.key(), someSamples); QueryOptions queryOptions = new QueryOptions(); variantManager.exportData(export, VariantOutputFormat.AVRO, query, queryOptions, sessionId); DummyStudyConfigurationAdaptor.clear(); variantManager.importData(URI.create(export), studyId2, sessionId); } }
@Test public void readAllSamplesMember() throws CatalogException { Map<Long, Sample> sampleMap = catalogManager.getSampleManager().get(studyFqn, new Query(), new QueryOptions(), externalSessionId) .getResult().stream().collect(Collectors.toMap(Sample::getUid, f -> f)); assertTrue(sampleMap.containsKey(smp1.getUid())); assertFalse(sampleMap.containsKey(smp2.getUid())); assertFalse(sampleMap.containsKey(smp3.getUid())); }
@Test public void readAllSamplesOwner() throws CatalogException { Map<Long, Sample> sampleMap = catalogManager.getSampleManager().get(studyFqn, new Query(), new QueryOptions(), ownerSessionId) .getResult().stream().collect(Collectors.toMap(Sample::getUid, f -> f)); assertTrue(sampleMap.containsKey(smp1.getUid())); assertTrue(sampleMap.containsKey(smp2.getUid())); assertTrue(sampleMap.containsKey(smp3.getUid())); }
@Test public void testLinkFile() throws CatalogException, IOException, URISyntaxException { URI uri = getClass().getResource("/biofiles/variant-test-file-dot-names.vcf.gz").toURI(); QueryResult<File> link = fileManager.link(studyFqn, uri, ".", new ObjectMap(), sessionIdUser); assertEquals(4, link.first().getSamples().size()); List<Long> sampleList = link.first().getSamples().stream().map(Sample::getUid).collect(Collectors.toList()); Query query = new Query(SampleDBAdaptor.QueryParams.UID.key(), sampleList); QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, query, QueryOptions.empty(), sessionIdUser); assertEquals(4, sampleQueryResult.getNumResults()); List<String> sampleNames = sampleQueryResult.getResult().stream().map(Sample::getId).collect(Collectors.toList()); assertTrue(sampleNames.contains("test-name.bam")); assertTrue(sampleNames.contains("NA19660")); assertTrue(sampleNames.contains("NA19661")); assertTrue(sampleNames.contains("NA19685")); }
@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 readSampleExplicitForbidden() throws CatalogException { thrown.expect(CatalogAuthorizationException.class); catalogManager.getSampleManager().get(studyFqn, smp3.getId(), null, externalSessionId); }
@Test public void readSampleNoShared() throws CatalogException { thrown.expect(CatalogAuthorizationException.class); catalogManager.getSampleManager().get(studyFqn, smp2.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 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 readSampleSharedForOthers() throws CatalogException { QueryResult<Sample> sample = catalogManager.getSampleManager().get(studyFqn, smp6.getId(), null, externalSessionId); 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 testUpdateAnnotationFail() throws CatalogException { Sample sample = catalogManager.getSampleManager().get(studyFqn, s_1, null, sessionIdUser).first(); AnnotationSet annotationSet = sample.getAnnotationSets().get(0); thrown.expect(CatalogException.class); //Can not delete required fields thrown.expectMessage("required variable"); catalogManager.getSampleManager().removeAnnotations(studyFqn, s_1, annotationSet.getId(), Collections.singletonList("NAME"), QueryOptions.empty(), sessionIdUser); }
@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 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 testDeleteAnnotationSet() throws CatalogException { catalogManager.getSampleManager().removeAnnotationSet(studyFqn, s_1, "annot1", QueryOptions.empty(), sessionIdUser); QueryResult<Sample> sampleQueryResult = catalogManager.getSampleManager().get(studyFqn, s_1, new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key()), sessionIdUser); assertEquals(0, sampleQueryResult.first().getAnnotationSets().size()); }
@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 readSampleSharedForGroup() 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); String newGroup = "@external"; // catalogManager.addUsersToGroup(studyFqn, "@external", newUser, ownerSessionId); catalogManager.getStudyManager().createGroup(studyFqn, newGroup, newUser, ownerSessionId); // Add the group to the locked role, so no permissions will be given Study.StudyAclParams aclParams = new Study.StudyAclParams("", AclParams.Action.ADD, AuthorizationManager.ROLE_LOCKED); catalogManager.getStudyManager().updateAcl(Collections.singletonList(studyFqn), newGroup, aclParams, ownerSessionId); // Share the sample with the group catalogManager.getSampleManager().updateAcl(studyFqn, Collections.singletonList(smp4.getId()), newGroup, allSamplePermissions, ownerSessionId); QueryResult<Sample> sample = catalogManager.getSampleManager().get(studyFqn, smp4.getId(), null, sessionId); assertEquals(1, sample.getNumResults()); }
@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 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()); }