/** * ============================================================================= * * ORCID (R) Open Source * http://orcid.org * * Copyright (c) 2012-2014 ORCID, Inc. * Licensed under an MIT-Style License (MIT) * http://orcid.org/open-source-license * * This copyright and license information (including a link to the full license) * shall be included in its entirety in all copies or substantial portion of * the software. * * ============================================================================= */ package org.orcid.api.publicV2.server.security; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import org.orcid.jaxb.model.common_v2.Filterable; import org.orcid.jaxb.model.common_v2.Visibility; import org.orcid.jaxb.model.common_v2.VisibilityType; import org.orcid.jaxb.model.record.summary_v2.ActivitiesSummary; import org.orcid.jaxb.model.record.summary_v2.EducationSummary; import org.orcid.jaxb.model.record.summary_v2.Educations; import org.orcid.jaxb.model.record.summary_v2.EmploymentSummary; import org.orcid.jaxb.model.record.summary_v2.Employments; import org.orcid.jaxb.model.record.summary_v2.FundingGroup; import org.orcid.jaxb.model.record.summary_v2.FundingSummary; import org.orcid.jaxb.model.record.summary_v2.Fundings; import org.orcid.jaxb.model.record.summary_v2.PeerReviewGroup; import org.orcid.jaxb.model.record.summary_v2.PeerReviewSummary; import org.orcid.jaxb.model.record.summary_v2.PeerReviews; import org.orcid.jaxb.model.record.summary_v2.WorkGroup; import org.orcid.jaxb.model.record.summary_v2.WorkSummary; import org.orcid.jaxb.model.record.summary_v2.Works; import org.orcid.jaxb.model.record_v2.ActivitiesContainer; import org.orcid.jaxb.model.record_v2.Address; import org.orcid.jaxb.model.record_v2.Addresses; import org.orcid.jaxb.model.record_v2.Biography; import org.orcid.jaxb.model.record_v2.Email; import org.orcid.jaxb.model.record_v2.Emails; import org.orcid.jaxb.model.record_v2.Group; import org.orcid.jaxb.model.record_v2.GroupsContainer; import org.orcid.jaxb.model.record_v2.Keyword; import org.orcid.jaxb.model.record_v2.Keywords; import org.orcid.jaxb.model.record_v2.Name; import org.orcid.jaxb.model.record_v2.OtherName; import org.orcid.jaxb.model.record_v2.OtherNames; import org.orcid.jaxb.model.record_v2.Person; import org.orcid.jaxb.model.record_v2.PersonExternalIdentifier; import org.orcid.jaxb.model.record_v2.PersonExternalIdentifiers; import org.orcid.jaxb.model.record_v2.PersonalDetails; import org.orcid.jaxb.model.record_v2.Record; import org.orcid.jaxb.model.record_v2.ResearcherUrl; import org.orcid.jaxb.model.record_v2.ResearcherUrls; import org.orcid.core.exception.OrcidNonPublicElementException; import org.orcid.test.OrcidJUnit4ClassRunner; import org.springframework.test.context.ContextConfiguration; @RunWith(OrcidJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:orcid-t1-web-context.xml", "classpath:orcid-t1-security-context.xml" }) public class PublicAPISecurityManagerV2Test { @Resource PublicAPISecurityManagerV2 publicAPISecurityManagerV2; @Test public void checkIsPublicFilterableTest() { publicAPISecurityManagerV2.checkIsPublic(getFilterableElement(Visibility.PUBLIC)); try { publicAPISecurityManagerV2.checkIsPublic(getFilterableElement(Visibility.LIMITED)); fail(); } catch (OrcidNonPublicElementException e) { } try { publicAPISecurityManagerV2.checkIsPublic(getFilterableElement(Visibility.PRIVATE)); fail(); } catch (OrcidNonPublicElementException e) { } } @Test public void checkIsPublicVisibilityTypeTest() { publicAPISecurityManagerV2.checkIsPublic(getVisibilityTypeElement(Visibility.PUBLIC)); try { publicAPISecurityManagerV2.checkIsPublic(getVisibilityTypeElement(Visibility.LIMITED)); fail(); } catch (OrcidNonPublicElementException e) { } try { publicAPISecurityManagerV2.checkIsPublic(getVisibilityTypeElement(Visibility.PRIVATE)); fail(); } catch (OrcidNonPublicElementException e) { } } @Test public void checkIsPublicBiographyTest() { Biography b = new Biography(); b.setVisibility(Visibility.PUBLIC); b.setContent("Bio test"); publicAPISecurityManagerV2.checkIsPublic(b); try { b.setVisibility(Visibility.LIMITED); publicAPISecurityManagerV2.checkIsPublic(b); fail(); } catch (OrcidNonPublicElementException e) { } try { b.setVisibility(Visibility.PRIVATE); publicAPISecurityManagerV2.checkIsPublic(b); fail(); } catch (OrcidNonPublicElementException e) { } } @Test public void checkIsPublicNameTest() { Name n = new Name(); n.setVisibility(Visibility.PUBLIC); publicAPISecurityManagerV2.checkIsPublic(n); try { n.setVisibility(Visibility.LIMITED); publicAPISecurityManagerV2.checkIsPublic(n); fail(); } catch (OrcidNonPublicElementException e) { } try { n.setVisibility(Visibility.PRIVATE); publicAPISecurityManagerV2.checkIsPublic(n); fail(); } catch (OrcidNonPublicElementException e) { } } @Test public void filterAddressesTest() { Addresses x = getAddressesElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, x.getAddress().size()); publicAPISecurityManagerV2.filter(x); assertEquals(3, x.getAddress().size()); assertAllArePublic(x.getAddress()); x = getAddressesElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, x.getAddress().size()); publicAPISecurityManagerV2.filter(x); assertEquals(2, x.getAddress().size()); assertAllArePublic(x.getAddress()); x = getAddressesElement(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getAddress().size()); publicAPISecurityManagerV2.filter(x); assertEquals(1, x.getAddress().size()); assertAllArePublic(x.getAddress()); x = getAddressesElement(Visibility.PRIVATE, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getAddress().size()); publicAPISecurityManagerV2.filter(x); assertTrue(x.getAddress().isEmpty()); } @Test public void filterEmailsTest() { Emails x = getEmailsElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, x.getEmails().size()); publicAPISecurityManagerV2.filter(x); assertEquals(3, x.getEmails().size()); assertAllArePublic(x.getEmails()); x = getEmailsElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, x.getEmails().size()); publicAPISecurityManagerV2.filter(x); assertEquals(2, x.getEmails().size()); assertAllArePublic(x.getEmails()); x = getEmailsElement(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getEmails().size()); publicAPISecurityManagerV2.filter(x); assertEquals(1, x.getEmails().size()); assertAllArePublic(x.getEmails()); x = getEmailsElement(Visibility.PRIVATE, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getEmails().size()); publicAPISecurityManagerV2.filter(x); assertTrue(x.getEmails().isEmpty()); } @Test public void filterExternalIdentifiersTest() { PersonExternalIdentifiers x = getPersonExternalIdentifiersElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, x.getExternalIdentifiers().size()); publicAPISecurityManagerV2.filter(x); assertEquals(3, x.getExternalIdentifiers().size()); assertAllArePublic(x.getExternalIdentifiers()); x = getPersonExternalIdentifiersElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, x.getExternalIdentifiers().size()); publicAPISecurityManagerV2.filter(x); assertEquals(2, x.getExternalIdentifiers().size()); assertAllArePublic(x.getExternalIdentifiers()); x = getPersonExternalIdentifiersElement(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getExternalIdentifiers().size()); publicAPISecurityManagerV2.filter(x); assertEquals(1, x.getExternalIdentifiers().size()); assertAllArePublic(x.getExternalIdentifiers()); x = getPersonExternalIdentifiersElement(Visibility.PRIVATE, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getExternalIdentifiers().size()); publicAPISecurityManagerV2.filter(x); assertTrue(x.getExternalIdentifiers().isEmpty()); } @Test public void filterKeywordsTest() { Keywords x = getKeywordsElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, x.getKeywords().size()); publicAPISecurityManagerV2.filter(x); assertEquals(3, x.getKeywords().size()); assertAllArePublic(x.getKeywords()); x = getKeywordsElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, x.getKeywords().size()); publicAPISecurityManagerV2.filter(x); assertEquals(2, x.getKeywords().size()); assertAllArePublic(x.getKeywords()); x = getKeywordsElement(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getKeywords().size()); publicAPISecurityManagerV2.filter(x); assertEquals(1, x.getKeywords().size()); assertAllArePublic(x.getKeywords()); x = getKeywordsElement(Visibility.PRIVATE, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getKeywords().size()); publicAPISecurityManagerV2.filter(x); assertTrue(x.getKeywords().isEmpty()); } @Test public void filterOtherNamesTest() { OtherNames x = getOtherNamesElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, x.getOtherNames().size()); publicAPISecurityManagerV2.filter(x); assertEquals(3, x.getOtherNames().size()); assertAllArePublic(x.getOtherNames()); x = getOtherNamesElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, x.getOtherNames().size()); publicAPISecurityManagerV2.filter(x); assertEquals(2, x.getOtherNames().size()); assertAllArePublic(x.getOtherNames()); x = getOtherNamesElement(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getOtherNames().size()); publicAPISecurityManagerV2.filter(x); assertEquals(1, x.getOtherNames().size()); assertAllArePublic(x.getOtherNames()); x = getOtherNamesElement(Visibility.PRIVATE, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getOtherNames().size()); publicAPISecurityManagerV2.filter(x); assertTrue(x.getOtherNames().isEmpty()); } @Test public void filterResearcherUrlsTest() { ResearcherUrls x = getResearcherUrlsElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, x.getResearcherUrls().size()); publicAPISecurityManagerV2.filter(x); assertEquals(3, x.getResearcherUrls().size()); assertAllArePublic(x.getResearcherUrls()); x = getResearcherUrlsElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, x.getResearcherUrls().size()); publicAPISecurityManagerV2.filter(x); assertEquals(2, x.getResearcherUrls().size()); assertAllArePublic(x.getResearcherUrls()); x = getResearcherUrlsElement(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getResearcherUrls().size()); publicAPISecurityManagerV2.filter(x); assertEquals(1, x.getResearcherUrls().size()); assertAllArePublic(x.getResearcherUrls()); x = getResearcherUrlsElement(Visibility.PRIVATE, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, x.getResearcherUrls().size()); publicAPISecurityManagerV2.filter(x); assertTrue(x.getResearcherUrls().isEmpty()); } @Test public void filterEmploymentsTest() { Employments e = getEmployments(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, e.getSummaries().size()); publicAPISecurityManagerV2.filter(e); assertEquals(3, e.getSummaries().size()); assertContainerContainsOnlyPublicElements(e); e = getEmployments(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, e.getSummaries().size()); publicAPISecurityManagerV2.filter(e); assertEquals(2, e.getSummaries().size()); assertContainerContainsOnlyPublicElements(e); e = getEmployments(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, e.getSummaries().size()); publicAPISecurityManagerV2.filter(e); assertEquals(1, e.getSummaries().size()); assertContainerContainsOnlyPublicElements(e); e = getEmployments(Visibility.PRIVATE, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, e.getSummaries().size()); publicAPISecurityManagerV2.filter(e); assertTrue(e.getSummaries().isEmpty()); } @Test public void filterEducationsTest() { Educations e = getEducations(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, e.getSummaries().size()); publicAPISecurityManagerV2.filter(e); assertEquals(3, e.getSummaries().size()); assertContainerContainsOnlyPublicElements(e); e = getEducations(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, e.getSummaries().size()); publicAPISecurityManagerV2.filter(e); assertEquals(2, e.getSummaries().size()); assertContainerContainsOnlyPublicElements(e); e = getEducations(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, e.getSummaries().size()); publicAPISecurityManagerV2.filter(e); assertEquals(1, e.getSummaries().size()); assertContainerContainsOnlyPublicElements(e); e = getEducations(Visibility.LIMITED, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, e.getSummaries().size()); publicAPISecurityManagerV2.filter(e); assertTrue(e.getSummaries().isEmpty()); } @Test public void filterWorksTest() { Works w = getWorks(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, w.getWorkGroup().size()); publicAPISecurityManagerV2.filter(w); assertEquals(3, w.getWorkGroup().size()); assertGroupContainsOnlyPublicElements(w); w = getWorks(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, w.getWorkGroup().size()); publicAPISecurityManagerV2.filter(w); assertEquals(2, w.getWorkGroup().size()); assertGroupContainsOnlyPublicElements(w); w = getWorks(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, w.getWorkGroup().size()); publicAPISecurityManagerV2.filter(w); assertEquals(1, w.getWorkGroup().size()); assertGroupContainsOnlyPublicElements(w); w = getWorks(Visibility.PRIVATE, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, w.getWorkGroup().size()); publicAPISecurityManagerV2.filter(w); assertTrue(w.getWorkGroup().isEmpty()); } @Test public void filterFundingsTest() { Fundings f = getFundings(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, f.getFundingGroup().size()); publicAPISecurityManagerV2.filter(f); assertEquals(3, f.getFundingGroup().size()); assertGroupContainsOnlyPublicElements(f); f = getFundings(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, f.getFundingGroup().size()); publicAPISecurityManagerV2.filter(f); assertEquals(2, f.getFundingGroup().size()); assertGroupContainsOnlyPublicElements(f); f = getFundings(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, f.getFundingGroup().size()); publicAPISecurityManagerV2.filter(f); assertEquals(1, f.getFundingGroup().size()); assertGroupContainsOnlyPublicElements(f); f = getFundings(Visibility.PRIVATE, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, f.getFundingGroup().size()); publicAPISecurityManagerV2.filter(f); assertTrue(f.getFundingGroup().isEmpty()); } @Test public void filterPeerReviewsTest() { PeerReviews p = getPeerReviews(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); assertEquals(3, p.getPeerReviewGroup().size()); publicAPISecurityManagerV2.filter(p); assertEquals(3, p.getPeerReviewGroup().size()); assertGroupContainsOnlyPublicElements(p); p = getPeerReviews(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); assertEquals(3, p.getPeerReviewGroup().size()); publicAPISecurityManagerV2.filter(p); assertEquals(2, p.getPeerReviewGroup().size()); assertGroupContainsOnlyPublicElements(p); p = getPeerReviews(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, p.getPeerReviewGroup().size()); publicAPISecurityManagerV2.filter(p); assertEquals(1, p.getPeerReviewGroup().size()); assertGroupContainsOnlyPublicElements(p); p = getPeerReviews(Visibility.PRIVATE, Visibility.LIMITED, Visibility.PRIVATE); assertEquals(3, p.getPeerReviewGroup().size()); publicAPISecurityManagerV2.filter(p); assertTrue(p.getPeerReviewGroup().isEmpty()); } @Test public void checkIsPublicActivitiesSummaryTest() { ActivitiesSummary as = getActivitiesSummaryElement(); publicAPISecurityManagerV2.filter(as); // Assert it have all activities assertEquals(3, as.getEducations().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEducations()); assertEquals(3, as.getEmployments().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEmployments()); assertEquals(3, as.getFundings().getFundingGroup().size()); assertGroupContainsOnlyPublicElements(as.getFundings()); assertEquals(3, as.getPeerReviews().getPeerReviewGroup().size()); assertGroupContainsOnlyPublicElements(as.getPeerReviews()); assertEquals(3, as.getWorks().getWorkGroup().size()); assertGroupContainsOnlyPublicElements(as.getWorks()); // Assert it filters educations as = getActivitiesSummaryElement(); setVisibility(as.getEducations().getSummaries(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(as); assertNotNull(as.getEducations()); assertTrue(as.getEducations().getSummaries().isEmpty()); assertEquals(3, as.getEmployments().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEmployments()); assertEquals(3, as.getFundings().getFundingGroup().size()); assertGroupContainsOnlyPublicElements(as.getFundings()); assertEquals(3, as.getPeerReviews().getPeerReviewGroup().size()); assertGroupContainsOnlyPublicElements(as.getPeerReviews()); assertEquals(3, as.getWorks().getWorkGroup().size()); assertGroupContainsOnlyPublicElements(as.getWorks()); // Assert it filters employments as = getActivitiesSummaryElement(); setVisibility(as.getEmployments().getSummaries(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(as); assertEquals(3, as.getEducations().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEducations()); assertNotNull(as.getEmployments()); assertTrue(as.getEmployments().getSummaries().isEmpty()); assertEquals(3, as.getFundings().getFundingGroup().size()); assertGroupContainsOnlyPublicElements(as.getFundings()); assertEquals(3, as.getPeerReviews().getPeerReviewGroup().size()); assertGroupContainsOnlyPublicElements(as.getPeerReviews()); assertEquals(3, as.getWorks().getWorkGroup().size()); assertGroupContainsOnlyPublicElements(as.getWorks()); // Assert it filters funding as = getActivitiesSummaryElement(); setVisibility(as.getFundings(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(as); assertEquals(3, as.getEducations().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEducations()); assertEquals(3, as.getEmployments().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEmployments()); assertTrue(as.getFundings().getFundingGroup().isEmpty()); assertEquals(3, as.getPeerReviews().getPeerReviewGroup().size()); assertGroupContainsOnlyPublicElements(as.getPeerReviews()); assertEquals(3, as.getWorks().getWorkGroup().size()); assertGroupContainsOnlyPublicElements(as.getWorks()); // Assert it filters peer reviews as = getActivitiesSummaryElement(); setVisibility(as.getPeerReviews(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(as); assertEquals(3, as.getEducations().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEducations()); assertEquals(3, as.getEmployments().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEmployments()); assertEquals(3, as.getFundings().getFundingGroup().size()); assertGroupContainsOnlyPublicElements(as.getFundings()); assertTrue(as.getPeerReviews().getPeerReviewGroup().isEmpty()); assertEquals(3, as.getWorks().getWorkGroup().size()); assertGroupContainsOnlyPublicElements(as.getWorks()); // Assert it filters works as = getActivitiesSummaryElement(); setVisibility(as.getWorks(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(as); assertEquals(3, as.getEducations().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEducations()); assertEquals(3, as.getEmployments().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEmployments()); assertEquals(3, as.getFundings().getFundingGroup().size()); assertGroupContainsOnlyPublicElements(as.getFundings()); assertEquals(3, as.getPeerReviews().getPeerReviewGroup().size()); assertGroupContainsOnlyPublicElements(as.getPeerReviews()); assertTrue(as.getWorks().getWorkGroup().isEmpty()); } @Test public void checkIsPublicPersonalDetailsTest() { PersonalDetails p = getPersonalDetailsElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC); publicAPISecurityManagerV2.filter(p); assertEquals(Visibility.PUBLIC, p.getName().getVisibility()); assertEquals(Visibility.PUBLIC, p.getBiography().getVisibility()); assertNotNull(p.getOtherNames().getOtherNames()); p.getOtherNames().getOtherNames().forEach(e -> { assertIsPublic(e); }); // Should not fail, but name should be empty p = getPersonalDetailsElement(Visibility.LIMITED, Visibility.PUBLIC, Visibility.PUBLIC); publicAPISecurityManagerV2.filter(p); assertNull(p.getName()); assertNotNull(p.getBiography()); assertNotNull(p.getOtherNames().getOtherNames()); p.getOtherNames().getOtherNames().forEach(e -> { assertIsPublic(e); }); // Should not fail, but bio should be null p = getPersonalDetailsElement(Visibility.PUBLIC, Visibility.LIMITED, Visibility.PUBLIC); publicAPISecurityManagerV2.filter(p); assertNotNull(p.getName()); assertNull(p.getBiography()); assertNotNull(p.getOtherNames().getOtherNames()); p.getOtherNames().getOtherNames().forEach(e -> { assertIsPublic(e); }); p = getPersonalDetailsElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.LIMITED); publicAPISecurityManagerV2.filter(p); assertNotNull(p.getName()); assertNotNull(p.getBiography()); assertNotNull(p.getOtherNames()); assertTrue(p.getOtherNames().getOtherNames().isEmpty()); p = getPersonalDetailsElement(Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PRIVATE); publicAPISecurityManagerV2.filter(p); assertNotNull(p.getName()); assertNotNull(p.getBiography()); assertNotNull(p.getOtherNames()); assertTrue(p.getOtherNames().getOtherNames().isEmpty()); } @Test public void checkIsPublicPersonTest() { Person p = getPersonElement(); publicAPISecurityManagerV2.filter(p); // Nothing is filtered yet assertEquals(3, p.getAddresses().getAddress().size()); p.getAddresses().getAddress().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getBiography().getVisibility()); assertEquals(3, p.getEmails().getEmails().size()); p.getEmails().getEmails().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); p.getExternalIdentifiers().getExternalIdentifiers().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getKeywords().getKeywords().size()); p.getKeywords().getKeywords().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getName().getVisibility()); assertEquals(3, p.getOtherNames().getOtherNames().size()); p.getOtherNames().getOtherNames().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); p.getResearcherUrls().getResearcherUrls().forEach(e -> assertIsPublic(e)); // Addresses filtered p = getPersonElement(); setVisibility(p.getAddresses().getAddress(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(p); // --- filtered --- assertNotNull(p.getAddresses()); assertTrue(p.getAddresses().getAddress().isEmpty()); assertEquals(Visibility.PUBLIC, p.getBiography().getVisibility()); assertEquals(3, p.getEmails().getEmails().size()); p.getEmails().getEmails().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); p.getExternalIdentifiers().getExternalIdentifiers().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getKeywords().getKeywords().size()); p.getKeywords().getKeywords().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getName().getVisibility()); assertEquals(3, p.getOtherNames().getOtherNames().size()); p.getOtherNames().getOtherNames().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); p.getResearcherUrls().getResearcherUrls().forEach(e -> assertIsPublic(e)); // Bio filtered p = getPersonElement(); p.getBiography().setVisibility(Visibility.LIMITED); publicAPISecurityManagerV2.filter(p); assertEquals(3, p.getAddresses().getAddress().size()); p.getAddresses().getAddress().forEach(e -> assertIsPublic(e)); // --- filtered --- assertNull(p.getBiography()); assertEquals(3, p.getEmails().getEmails().size()); p.getEmails().getEmails().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); p.getExternalIdentifiers().getExternalIdentifiers().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getKeywords().getKeywords().size()); p.getKeywords().getKeywords().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getName().getVisibility()); assertEquals(3, p.getOtherNames().getOtherNames().size()); p.getOtherNames().getOtherNames().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); p.getResearcherUrls().getResearcherUrls().forEach(e -> assertIsPublic(e)); // Emails filtered p = getPersonElement(); setVisibility(p.getEmails().getEmails(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(p); assertEquals(3, p.getAddresses().getAddress().size()); p.getAddresses().getAddress().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getBiography().getVisibility()); // --- filtered --- assertNotNull(p.getEmails()); assertTrue(p.getEmails().getEmails().isEmpty()); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); p.getExternalIdentifiers().getExternalIdentifiers().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getKeywords().getKeywords().size()); p.getKeywords().getKeywords().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getName().getVisibility()); assertEquals(3, p.getOtherNames().getOtherNames().size()); p.getOtherNames().getOtherNames().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); p.getResearcherUrls().getResearcherUrls().forEach(e -> assertIsPublic(e)); // External ids filtered p = getPersonElement(); setVisibility(p.getExternalIdentifiers().getExternalIdentifiers(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(p); assertEquals(3, p.getAddresses().getAddress().size()); p.getAddresses().getAddress().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getBiography().getVisibility()); assertEquals(3, p.getEmails().getEmails().size()); p.getEmails().getEmails().forEach(e -> assertIsPublic(e)); // --- filtered --- assertNotNull(p.getExternalIdentifiers()); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().isEmpty()); assertEquals(3, p.getKeywords().getKeywords().size()); p.getKeywords().getKeywords().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getName().getVisibility()); assertEquals(3, p.getOtherNames().getOtherNames().size()); p.getOtherNames().getOtherNames().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); p.getResearcherUrls().getResearcherUrls().forEach(e -> assertIsPublic(e)); // Keywords filtered p = getPersonElement(); setVisibility(p.getKeywords().getKeywords(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(p); assertEquals(3, p.getAddresses().getAddress().size()); p.getAddresses().getAddress().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getBiography().getVisibility()); assertEquals(3, p.getEmails().getEmails().size()); p.getEmails().getEmails().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); p.getExternalIdentifiers().getExternalIdentifiers().forEach(e -> assertIsPublic(e)); // --- filtered --- assertNotNull(p.getKeywords()); assertTrue(p.getKeywords().getKeywords().isEmpty()); assertEquals(Visibility.PUBLIC, p.getName().getVisibility()); assertEquals(3, p.getOtherNames().getOtherNames().size()); p.getOtherNames().getOtherNames().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); p.getResearcherUrls().getResearcherUrls().forEach(e -> assertIsPublic(e)); // Name filtered p = getPersonElement(); p.getName().setVisibility(Visibility.LIMITED); publicAPISecurityManagerV2.filter(p); assertEquals(3, p.getAddresses().getAddress().size()); p.getAddresses().getAddress().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getBiography().getVisibility()); assertEquals(3, p.getEmails().getEmails().size()); p.getEmails().getEmails().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); p.getExternalIdentifiers().getExternalIdentifiers().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getKeywords().getKeywords().size()); p.getKeywords().getKeywords().forEach(e -> assertIsPublic(e)); // --- filtered --- assertNull(p.getName()); assertEquals(3, p.getOtherNames().getOtherNames().size()); p.getOtherNames().getOtherNames().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); p.getResearcherUrls().getResearcherUrls().forEach(e -> assertIsPublic(e)); // Other names filtered p = getPersonElement(); setVisibility(p.getOtherNames().getOtherNames(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(p); assertEquals(3, p.getAddresses().getAddress().size()); p.getAddresses().getAddress().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getBiography().getVisibility()); assertEquals(3, p.getEmails().getEmails().size()); p.getEmails().getEmails().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); p.getExternalIdentifiers().getExternalIdentifiers().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getKeywords().getKeywords().size()); p.getKeywords().getKeywords().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getName().getVisibility()); // --- filtered --- assertNotNull(p.getOtherNames()); assertTrue(p.getOtherNames().getOtherNames().isEmpty()); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); p.getResearcherUrls().getResearcherUrls().forEach(e -> assertIsPublic(e)); // Researcher urls filtered p = getPersonElement(); setVisibility(p.getResearcherUrls().getResearcherUrls(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(p); assertEquals(3, p.getAddresses().getAddress().size()); p.getAddresses().getAddress().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getBiography().getVisibility()); assertEquals(3, p.getEmails().getEmails().size()); p.getEmails().getEmails().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); p.getExternalIdentifiers().getExternalIdentifiers().forEach(e -> assertIsPublic(e)); assertEquals(3, p.getKeywords().getKeywords().size()); p.getKeywords().getKeywords().forEach(e -> assertIsPublic(e)); assertEquals(Visibility.PUBLIC, p.getName().getVisibility()); assertEquals(3, p.getOtherNames().getOtherNames().size()); p.getOtherNames().getOtherNames().forEach(e -> assertIsPublic(e)); // --- filtered --- assertNotNull(p.getResearcherUrls()); assertTrue(p.getResearcherUrls().getResearcherUrls().isEmpty()); } @Test public void checkIsPublicRecordTest() { Record r = getRecordElement(); publicAPISecurityManagerV2.filter(r); // Verify activities - nothing filtered ActivitiesSummary as = r.getActivitiesSummary(); assertEquals(3, as.getEducations().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEducations()); assertEquals(3, as.getEmployments().getSummaries().size()); assertContainerContainsOnlyPublicElements(as.getEmployments()); assertEquals(3, as.getFundings().getFundingGroup().size()); assertGroupContainsOnlyPublicElements(as.getFundings()); assertEquals(3, as.getPeerReviews().getPeerReviewGroup().size()); assertGroupContainsOnlyPublicElements(as.getPeerReviews()); assertEquals(3, as.getWorks().getWorkGroup().size()); assertGroupContainsOnlyPublicElements(as.getWorks()); // Verify bio sections - nothing filtered Person p = r.getPerson(); assertEquals(3, p.getAddresses().getAddress().size()); assertAllArePublic(p.getAddresses().getAddress()); assertEquals(3, p.getEmails().getEmails().size()); assertAllArePublic(p.getEmails().getEmails()); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertAllArePublic(p.getExternalIdentifiers().getExternalIdentifiers()); assertEquals(3, p.getKeywords().getKeywords().size()); assertAllArePublic(p.getKeywords().getKeywords()); assertEquals(3, p.getOtherNames().getOtherNames().size()); assertAllArePublic(p.getOtherNames().getOtherNames()); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); assertAllArePublic(p.getResearcherUrls().getResearcherUrls()); assertNotNull(p.getBiography()); assertNotNull(p.getName()); // Filter biography, name, educations and funding r = getRecordElement(); r.getPerson().getBiography().setVisibility(Visibility.LIMITED); r.getPerson().getName().setVisibility(Visibility.LIMITED); setVisibility(r.getActivitiesSummary().getEducations().getSummaries(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); setVisibility(r.getActivitiesSummary().getFundings(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(r); // Verify activities - educations and funding filtered as = r.getActivitiesSummary(); assertNotNull(as.getEducations()); assertTrue(as.getEducations().getSummaries().isEmpty()); assertEquals(3, as.getEmployments().getSummaries().size()); assertTrue(as.getFundings().getFundingGroup().isEmpty()); assertEquals(3, as.getPeerReviews().getPeerReviewGroup().size()); assertEquals(3, as.getWorks().getWorkGroup().size()); // Verify bio sections - bio and name filtered p = r.getPerson(); assertEquals(3, p.getAddresses().getAddress().size()); assertEquals(3, p.getEmails().getEmails().size()); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertEquals(3, p.getKeywords().getKeywords().size()); assertEquals(3, p.getOtherNames().getOtherNames().size()); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); assertNull(p.getBiography()); assertNull(p.getName()); // Filter emails, external identifiers, peer reviews and works r = getRecordElement(); setVisibility(r.getPerson().getEmails().getEmails(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); setVisibility(r.getPerson().getExternalIdentifiers().getExternalIdentifiers(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); setVisibility(r.getActivitiesSummary().getPeerReviews(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); setVisibility(r.getActivitiesSummary().getWorks(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(r); // Verify activities - peer reviews and works filtered as = r.getActivitiesSummary(); assertEquals(3, as.getEducations().getSummaries().size()); assertEquals(3, as.getEmployments().getSummaries().size()); assertEquals(3, as.getFundings().getFundingGroup().size()); assertTrue(as.getPeerReviews().getPeerReviewGroup().isEmpty()); assertTrue(as.getWorks().getWorkGroup().isEmpty()); // Verify bio sections - emails, external identifiers filtered p = r.getPerson(); assertEquals(3, p.getAddresses().getAddress().size()); assertNotNull(p.getEmails()); assertTrue(p.getEmails().getEmails().isEmpty()); assertNotNull(p.getExternalIdentifiers()); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().isEmpty()); assertEquals(3, p.getKeywords().getKeywords().size()); assertEquals(3, p.getOtherNames().getOtherNames().size()); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); assertNotNull(p.getBiography()); assertNotNull(p.getName()); // Filter keywords and other names r = getRecordElement(); setVisibility(r.getPerson().getOtherNames().getOtherNames(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); setVisibility(r.getPerson().getKeywords().getKeywords(), Visibility.LIMITED, Visibility.PRIVATE, Visibility.LIMITED); publicAPISecurityManagerV2.filter(r); // Verify activities - nothing filtered as = r.getActivitiesSummary(); assertEquals(3, as.getEducations().getSummaries().size()); assertEquals(3, as.getEmployments().getSummaries().size()); assertEquals(3, as.getFundings().getFundingGroup().size()); assertEquals(3, as.getPeerReviews().getPeerReviewGroup().size()); assertEquals(3, as.getWorks().getWorkGroup().size()); // Verify bio sections - keywords and other names filtered p = r.getPerson(); assertEquals(3, p.getAddresses().getAddress().size()); assertEquals(3, p.getEmails().getEmails().size()); assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertNotNull(p.getKeywords()); assertTrue(p.getKeywords().getKeywords().isEmpty()); assertNotNull(p.getOtherNames()); assertTrue(p.getOtherNames().getOtherNames().isEmpty()); assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); assertNotNull(p.getBiography()); assertNotNull(p.getName()); } /** * Utilities */ private Filterable getFilterableElement(Visibility v) { EducationSummary s = new EducationSummary(); s.setVisibility(v); return s; } private VisibilityType getVisibilityTypeElement(Visibility v) { EducationSummary s = new EducationSummary(); s.setVisibility(v); return s; } private Employments getEmployments(Visibility... vs) { Employments e = new Employments(); for (Visibility v : vs) { EmploymentSummary s = new EmploymentSummary(); s.setVisibility(v); e.getSummaries().add(s); } return e; } private Educations getEducations(Visibility... vs) { Educations e = new Educations(); for (Visibility v : vs) { EducationSummary s = new EducationSummary(); s.setVisibility(v); e.getSummaries().add(s); } return e; } private Works getWorks(Visibility... vs) { Works works = new Works(); for (Visibility v : vs) { WorkGroup g = new WorkGroup(); WorkSummary s = new WorkSummary(); s.setVisibility(v); g.getWorkSummary().add(s); works.getWorkGroup().add(g); } return works; } private Fundings getFundings(Visibility... vs) { Fundings fundings = new Fundings(); for (Visibility v : vs) { FundingGroup g = new FundingGroup(); FundingSummary s = new FundingSummary(); s.setVisibility(v); g.getFundingSummary().add(s); fundings.getFundingGroup().add(g); } return fundings; } private PeerReviews getPeerReviews(Visibility... vs) { PeerReviews peerReviews = new PeerReviews(); for (Visibility v : vs) { PeerReviewGroup g = new PeerReviewGroup(); PeerReviewSummary s = new PeerReviewSummary(); s.setVisibility(v); g.getPeerReviewSummary().add(s); peerReviews.getPeerReviewGroup().add(g); } return peerReviews; } private ActivitiesSummary getActivitiesSummaryElement() { Visibility[] vs = { Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC }; ActivitiesSummary s = new ActivitiesSummary(); s.setEducations(getEducations(vs)); s.setEmployments(getEmployments(vs)); s.setFundings(getFundings(vs)); s.setPeerReviews(getPeerReviews(vs)); s.setWorks(getWorks(vs)); return s; } private OtherNames getOtherNamesElement(Visibility... vs) { OtherNames otherNames = new OtherNames(); for (Visibility v : vs) { OtherName o = new OtherName(); o.setVisibility(v); if (otherNames.getOtherNames() == null) { otherNames.setOtherNames(new ArrayList<OtherName>()); } otherNames.getOtherNames().add(o); } return otherNames; } private Addresses getAddressesElement(Visibility... vs) { Addresses elements = new Addresses(); for (Visibility v : vs) { Address element = new Address(); element.setVisibility(v); if (elements.getAddress() == null) { elements.setAddress(new ArrayList<Address>()); } elements.getAddress().add(element); } return elements; } private Emails getEmailsElement(Visibility... vs) { Emails elements = new Emails(); for (Visibility v : vs) { Email element = new Email(); element.setVisibility(v); if (elements.getEmails() == null) { elements.setEmails(new ArrayList<Email>()); } elements.getEmails().add(element); } return elements; } private PersonExternalIdentifiers getPersonExternalIdentifiersElement(Visibility... vs) { PersonExternalIdentifiers elements = new PersonExternalIdentifiers(); for (Visibility v : vs) { PersonExternalIdentifier element = new PersonExternalIdentifier(); element.setVisibility(v); if (elements.getExternalIdentifiers() == null) { elements.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>()); } elements.getExternalIdentifiers().add(element); } return elements; } private Keywords getKeywordsElement(Visibility... vs) { Keywords elements = new Keywords(); for (Visibility v : vs) { Keyword element = new Keyword(); element.setVisibility(v); if (elements.getKeywords() == null) { elements.setKeywords(new ArrayList<Keyword>()); } elements.getKeywords().add(element); } return elements; } private ResearcherUrls getResearcherUrlsElement(Visibility... vs) { ResearcherUrls elements = new ResearcherUrls(); for (Visibility v : vs) { ResearcherUrl element = new ResearcherUrl(); element.setVisibility(v); if (elements.getResearcherUrls() == null) { elements.setResearcherUrls(new ArrayList<ResearcherUrl>()); } elements.getResearcherUrls().add(element); } return elements; } private PersonalDetails getPersonalDetailsElement(Visibility nameVisibility, Visibility bioVisiblity, Visibility otherNamesVisibility) { PersonalDetails p = new PersonalDetails(); Name name = new Name(); name.setVisibility(nameVisibility); p.setName(name); Biography bio = new Biography(); bio.setVisibility(bioVisiblity); bio.setContent("Bio test"); p.setBiography(bio); p.setOtherNames(getOtherNamesElement(otherNamesVisibility)); return p; } private Person getPersonElement() { Visibility[] vs = { Visibility.PUBLIC, Visibility.PUBLIC, Visibility.PUBLIC }; Person p = new Person(); p.setAddresses(getAddressesElement(vs)); p.setEmails(getEmailsElement(vs)); p.setExternalIdentifiers(getPersonExternalIdentifiersElement(vs)); p.setKeywords(getKeywordsElement(vs)); p.setOtherNames(getOtherNamesElement(vs)); p.setResearcherUrls(getResearcherUrlsElement(vs)); Name name = new Name(); name.setVisibility(Visibility.PUBLIC); p.setName(name); Biography b = new Biography(); b.setVisibility(Visibility.PUBLIC); b.setContent("Biography test"); p.setBiography(b); return p; } private Record getRecordElement() { Record r = new Record(); r.setActivitiesSummary(getActivitiesSummaryElement()); r.setPerson(getPersonElement()); return r; } private void setVisibility(List<? extends Filterable> elements, Visibility... vs) { assertEquals(elements.size(), vs.length); for (int i = 0; i < vs.length; i++) { elements.get(i).setVisibility(vs[i]); } } private void setVisibility(GroupsContainer container, Visibility... vs) { assertEquals(container.retrieveGroups().size(), vs.length); int idx = 0; for (Group g : container.retrieveGroups()) { // Every group have just one element assertEquals(1, g.getActivities().size()); for (Filterable f : g.getActivities()) { f.setVisibility(vs[idx++]); } } } /** * Assert helpers */ private void assertIsPublic(Filterable a) { assertEquals(Visibility.PUBLIC, a.getVisibility()); } private void assertAllArePublic(List<? extends Filterable> list) { if (list == null) { return; } list.forEach(e -> { assertIsPublic(e); }); } private void assertGroupContainsOnlyPublicElements(GroupsContainer container) { if (container == null || container.retrieveGroups() == null || container.retrieveGroups().isEmpty()) { fail("No activities"); } container.retrieveGroups().forEach(x -> { assertNotNull(x.getActivities()); x.getActivities().forEach(e -> { assertIsPublic(e); }); }); } private void assertContainerContainsOnlyPublicElements(ActivitiesContainer container) { if (container == null || container.retrieveActivities() == null || container.retrieveActivities().isEmpty()) { fail("No activities"); } container.retrieveActivities().forEach(x -> { assertIsPublic(x); }); } }