@Test public void setSampleAclOverride() throws Exception { assertEquals(acl_s1_user2.getPermissions(), aclDBAdaptor.get(s1.getUid(), Arrays.asList(user2.getId()), Entity.SAMPLE).first().getPermissions()); SampleAclEntry newAcl = new SampleAclEntry(user2.getId(), Arrays.asList(SampleAclEntry.SamplePermissions.DELETE.name())); assertTrue(!acl_s1_user2.getPermissions().equals(newAcl.getPermissions())); // Todo: Remove this in 1.4 List<String> allSamplePermissions = EnumSet.allOf(SampleAclEntry.SamplePermissions.class) .stream() .map(String::valueOf) .collect(Collectors.toList()); aclDBAdaptor.setToMembers(Arrays.asList(s1.getUid()), Arrays.asList(user2.getId()), Arrays.asList(SampleAclEntry.SamplePermissions.DELETE.name()), allSamplePermissions, Entity.SAMPLE); // sampleDBAdaptor.setSampleAcl(s1.getId(), newAcl, true); assertEquals(newAcl.getPermissions(), aclDBAdaptor.get(s1.getUid(), Arrays.asList(user2.getId()), Entity.SAMPLE).first().getPermissions()); }
assertEquals(2, sampleAcl.getNumResults()); for (SampleAclEntry sampleAclEntry : sampleAcl.getResult()) { assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.valueOf("VIEW"))); assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.valueOf("UPDATE"))); assertEquals(2, sampleAcl.getNumResults()); for (SampleAclEntry sampleAclEntry : sampleAcl.getResult()) { if (sampleAclEntry.getMember().equals("user1")) { assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.valueOf("DELETE"))); } else { assertEquals("user2", sampleAclEntry.getMember()); assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.valueOf("VIEW"))); assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.valueOf("UPDATE"))); sampleAcl = aclDBAdaptor.get(s1.getUid(), Arrays.asList("user1"), Entity.SAMPLE); assertEquals(1, sampleAcl.getNumResults()); assertEquals(0, sampleAcl.first().getPermissions().size()); assertEquals(2, sampleAcl.getNumResults()); for (SampleAclEntry sampleAclEntry : sampleAcl.getResult()) { if (sampleAclEntry.getMember().equals("user2")) { assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.valueOf("VIEW"))); assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.valueOf("UPDATE"))); } else { assertEquals("user4", sampleAclEntry.getMember()); assertEquals(0, sampleAclEntry.getPermissions().size()); sampleAcl = aclDBAdaptor.get(s1.getUid(), null, Entity.SAMPLE); assertEquals(1, sampleAcl.getNumResults());
retList = new ArrayList<>(myMap.size()); for (Map.Entry<String, List<String>> stringListEntry : myMap.entrySet()) { retList.add((E) new SampleAclEntry(stringListEntry.getKey(), stringListEntry.getValue()));
@Test public void getSampleAcl() throws Exception { QueryResult<SampleAclEntry> sampleAcl = aclDBAdaptor.get(s1.getUid(), Arrays.asList(user1.getId()), Entity.SAMPLE); SampleAclEntry acl = sampleAcl.first(); assertNotNull(acl); assertEquals(acl_s1_user1.getPermissions(), acl.getPermissions()); acl = (SampleAclEntry) aclDBAdaptor.get(s1.getUid(), Arrays.asList(user2.getId()), Entity.SAMPLE).first(); assertNotNull(acl); assertEquals(acl_s1_user2.getPermissions(), acl.getPermissions()); }
assertEquals(2, sampleAclEntryQueryResult.getNumResults()); for (SampleAclEntry sampleAclEntry : sampleAclEntryQueryResult.getResult()) { assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.VIEW)); assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.UPDATE)); assertTrue(Arrays.asList("user2", "user3").contains(sampleAclEntry.getMember()));
@Before public void before() throws IOException, CatalogException { MongoDBAdaptorTest dbAdaptorTest = new MongoDBAdaptorTest(); dbAdaptorTest.before(); Configuration configuration = Configuration.load(getClass().getResource("/configuration-test.yml").openStream()); user1 = MongoDBAdaptorTest.user1; user2 = MongoDBAdaptorTest.user2; user3 = MongoDBAdaptorTest.user3; dbAdaptorFactory = MongoDBAdaptorTest.catalogDBAdaptor; aclDBAdaptor = new AuthorizationMongoDBAdaptor(configuration); studyId = user3.getProjects().get(0).getStudies().get(0).getUid(); s1 = dbAdaptorFactory.getCatalogSampleDBAdaptor().insert(studyId, new Sample("s1", "", new Individual(), null, null, 1, 1, "", "", false, Collections.emptyList(), new ArrayList<>(), Collections.emptyMap()), QueryOptions.empty()).first(); acl_s1_user1 = new SampleAclEntry(user1.getId(), Arrays.asList()); acl_s1_user2 = new SampleAclEntry(user2.getId(), Arrays.asList( SampleAclEntry.SamplePermissions.VIEW.name(), SampleAclEntry.SamplePermissions.VIEW_ANNOTATIONS.name(), SampleAclEntry.SamplePermissions.UPDATE.name() )); aclDBAdaptor.setAcls(Arrays.asList(s1.getUid()), Arrays.asList(acl_s1_user1, acl_s1_user2), Entity.SAMPLE); }
@Test public void testAssignPermissionsWithPropagationAndNoIndividual() throws CatalogException { Sample sample = new Sample().setId("sample"); catalogManager.getSampleManager().create(studyFqn, sample, QueryOptions.empty(), sessionIdUser); List<QueryResult<SampleAclEntry>> queryResults = catalogManager.getSampleManager().updateAcl(studyFqn, Arrays.asList("sample"), "user2", new Sample.SampleAclParams("VIEW", AclParams.Action.SET, null, null, null, true), sessionIdUser); assertEquals(1, queryResults.size()); assertEquals(1, queryResults.get(0).getNumResults()); assertEquals(1, queryResults.get(0).first().getPermissions().size()); assertTrue(queryResults.get(0).first().getPermissions().contains(SampleAclEntry.SamplePermissions.VIEW)); }
assertEquals(2, sampleAclEntryQueryResult.getNumResults()); for (SampleAclEntry sampleAclEntry : sampleAclEntryQueryResult.getResult()) { assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.VIEW)); assertTrue(sampleAclEntry.getPermissions().contains(SampleAclEntry.SamplePermissions.UPDATE)); assertTrue(Arrays.asList("user2", "user3").contains(sampleAclEntry.getMember()));
@Test public void unsetSampleAcl2() throws Exception { // Unset permissions QueryResult<SampleAclEntry> sampleAcl = aclDBAdaptor.get(s1.getUid(), Arrays.asList(user2.getId()), Entity.SAMPLE); assertEquals(1, sampleAcl.getNumResults()); assertEquals(3, sampleAcl.first().getPermissions().size()); aclDBAdaptor.removeFromMembers(Arrays.asList(s1.getUid()), Arrays.asList(user2.getId()), Arrays.asList("VIEW_ANNOTATIONS", "DELETE", "VIEW"), Entity.SAMPLE); // sampleDBAdaptor.unsetSampleAcl(s1.getId(), Arrays.asList(user2.getId()), // Arrays.asList("VIEW_ANNOTATIONS", "DELETE", "VIEW")); sampleAcl = aclDBAdaptor.get(s1.getUid(), Arrays.asList(user2.getId()), Entity.SAMPLE); assertEquals(1, sampleAcl.getNumResults()); assertEquals(1, sampleAcl.first().getPermissions().size()); assertTrue(sampleAcl.first().getPermissions().containsAll(Arrays.asList(SampleAclEntry.SamplePermissions.UPDATE))); }
@Test public void testAssignPermissionsWithPropagationWithIndividualAndNoIndividual() throws CatalogException { Sample sample = new Sample().setId("sample").setIndividual(new Individual().setId("individual")); catalogManager.getSampleManager().create(studyFqn, sample, QueryOptions.empty(), sessionIdUser); Sample sample2 = new Sample().setId("sample2"); catalogManager.getSampleManager().create(studyFqn, sample2, QueryOptions.empty(), sessionIdUser); List<QueryResult<SampleAclEntry>> queryResults = catalogManager.getSampleManager().updateAcl(studyFqn, Arrays.asList("sample", "sample2"), "user2", new Sample.SampleAclParams("VIEW", AclParams.Action.SET, null, null, null, true), sessionIdUser); assertEquals(2, queryResults.size()); assertEquals(1, queryResults.get(0).getNumResults()); assertEquals(1, queryResults.get(0).first().getPermissions().size()); assertTrue(queryResults.get(0).first().getPermissions().contains(SampleAclEntry.SamplePermissions.VIEW)); assertTrue(queryResults.get(1).first().getPermissions().contains(SampleAclEntry.SamplePermissions.VIEW)); List<QueryResult<IndividualAclEntry>> individualAcl = catalogManager.getIndividualManager().getAcls(studyFqn, Collections.singletonList("individual"), "user2", false, sessionIdUser); assertEquals(1, individualAcl.size()); assertEquals(1, individualAcl.get(0).getNumResults()); assertEquals(1, individualAcl.get(0).first().getPermissions().size()); assertTrue(individualAcl.get(0).first().getPermissions().contains(IndividualAclEntry.IndividualPermissions.VIEW)); }