/** * ============================================================================= * * 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.core.manager; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; 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.Arrays; import org.junit.Test; import org.orcid.core.exception.OrcidUnauthorizedException; import org.orcid.core.utils.SecurityContextTestUtils; import org.orcid.jaxb.model.common_v2.Visibility; import org.orcid.jaxb.model.message.ScopePathType; 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.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.ResearcherUrl; import org.orcid.jaxb.model.record_v2.ResearcherUrls; /** * * @author Will Simpson * */ public class OrcidSecurityManager_PersonTest extends OrcidSecurityManagerTestBase { @Test(expected = OrcidUnauthorizedException.class) public void testPerson_When_TokenForOtherUser() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.PERSON_READ_LIMITED); Person p = new Person(); orcidSecurityManager.checkAndFilter(ORCID_2, p); fail(); } @Test public void testPerson_When_AllPublic_ReadPublicToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.READ_PUBLIC); Name name = createName(Visibility.PUBLIC); Biography bio = createBiography(Visibility.PUBLIC); Address a1 = createAddress(Visibility.PUBLIC, CLIENT_2); Address a2 = createAddress(Visibility.PUBLIC, CLIENT_2); Address a3 = createAddress(Visibility.PUBLIC, CLIENT_2); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.PUBLIC, CLIENT_2); Email e2 = createEmail(Visibility.PUBLIC, CLIENT_2); Email e3 = createEmail(Visibility.PUBLIC, CLIENT_2); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keyword k2 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keyword k3 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherName o2 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherName o3 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrl r2 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrl r3 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertEquals(name, p.getName()); assertEquals(bio, p.getBiography()); // Check addresses assertEquals(3, p.getAddresses().getAddress().size()); assertTrue(p.getAddresses().getAddress().contains(a1)); assertTrue(p.getAddresses().getAddress().contains(a2)); assertTrue(p.getAddresses().getAddress().contains(a3)); // Check emails assertEquals(3, p.getEmails().getEmails().size()); assertTrue(p.getEmails().getEmails().contains(e1)); assertTrue(p.getEmails().getEmails().contains(e2)); assertTrue(p.getEmails().getEmails().contains(e3)); // Check ext ids assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext1)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext2)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext3)); // Check keywords assertEquals(3, p.getKeywords().getKeywords().size()); assertTrue(p.getKeywords().getKeywords().contains(k1)); assertTrue(p.getKeywords().getKeywords().contains(k2)); assertTrue(p.getKeywords().getKeywords().contains(k3)); // Check other names assertEquals(3, p.getOtherNames().getOtherNames().size()); assertTrue(p.getOtherNames().getOtherNames().contains(o1)); assertTrue(p.getOtherNames().getOtherNames().contains(o2)); assertTrue(p.getOtherNames().getOtherNames().contains(o3)); // Check researcher urls assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r1)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r2)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r3)); } @Test public void testPerson_When_SomeLimited_ReadPublicToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.READ_PUBLIC); Name name = createName(Visibility.LIMITED); Biography bio = createBiography(Visibility.PUBLIC); Address a1 = createAddress(Visibility.LIMITED, CLIENT_2); Address a2 = createAddress(Visibility.PUBLIC, CLIENT_2); Address a3 = createAddress(Visibility.LIMITED, CLIENT_2); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.LIMITED, CLIENT_2); Email e2 = createEmail(Visibility.PUBLIC, CLIENT_2); Email e3 = createEmail(Visibility.LIMITED, CLIENT_2); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.LIMITED, CLIENT_2); Keyword k2 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keyword k3 = createKeyword(Visibility.LIMITED, CLIENT_2); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.LIMITED, CLIENT_2); OtherName o2 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherName o3 = createOtherName(Visibility.LIMITED, CLIENT_2); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.LIMITED, CLIENT_2); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.LIMITED, CLIENT_2); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.LIMITED, CLIENT_2); ResearcherUrl r2 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrl r3 = createResearcherUrl(Visibility.LIMITED, CLIENT_2); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertNull(p.getName()); assertEquals(bio, p.getBiography()); // Check addresses assertEquals(1, p.getAddresses().getAddress().size()); assertFalse(p.getAddresses().getAddress().contains(a1)); assertTrue(p.getAddresses().getAddress().contains(a2)); assertFalse(p.getAddresses().getAddress().contains(a3)); // Check emails assertEquals(1, p.getEmails().getEmails().size()); assertFalse(p.getEmails().getEmails().contains(e1)); assertTrue(p.getEmails().getEmails().contains(e2)); assertFalse(p.getEmails().getEmails().contains(e3)); // Check ext ids assertEquals(1, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertFalse(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext1)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext2)); assertFalse(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext3)); // Check keywords assertEquals(1, p.getKeywords().getKeywords().size()); assertFalse(p.getKeywords().getKeywords().contains(k1)); assertTrue(p.getKeywords().getKeywords().contains(k2)); assertFalse(p.getKeywords().getKeywords().contains(k3)); // Check other names assertEquals(1, p.getOtherNames().getOtherNames().size()); assertFalse(p.getOtherNames().getOtherNames().contains(o1)); assertTrue(p.getOtherNames().getOtherNames().contains(o2)); assertFalse(p.getOtherNames().getOtherNames().contains(o3)); // Check researcher urls assertEquals(1, p.getResearcherUrls().getResearcherUrls().size()); assertFalse(p.getResearcherUrls().getResearcherUrls().contains(r1)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r2)); assertFalse(p.getResearcherUrls().getResearcherUrls().contains(r3)); } @Test public void testPerson_When_SomePrivate_ReadPublicToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.READ_PUBLIC); Name name = createName(Visibility.PUBLIC); Biography bio = createBiography(Visibility.PRIVATE); Address a1 = createAddress(Visibility.PRIVATE, CLIENT_2); Address a2 = createAddress(Visibility.PRIVATE, CLIENT_2); Address a3 = createAddress(Visibility.PUBLIC, CLIENT_2); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.PRIVATE, CLIENT_2); Email e2 = createEmail(Visibility.PRIVATE, CLIENT_2); Email e3 = createEmail(Visibility.PUBLIC, CLIENT_2); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keyword k2 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keyword k3 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherName o2 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherName o3 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrl r2 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrl r3 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertEquals(name, p.getName()); assertNull(p.getBiography()); // Check addresses assertEquals(1, p.getAddresses().getAddress().size()); assertFalse(p.getAddresses().getAddress().contains(a1)); assertFalse(p.getAddresses().getAddress().contains(a2)); assertTrue(p.getAddresses().getAddress().contains(a3)); // Check emails assertEquals(1, p.getEmails().getEmails().size()); assertFalse(p.getEmails().getEmails().contains(e1)); assertFalse(p.getEmails().getEmails().contains(e2)); assertTrue(p.getEmails().getEmails().contains(e3)); // Check ext ids assertEquals(1, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertFalse(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext1)); assertFalse(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext2)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext3)); // Check keywords assertEquals(1, p.getKeywords().getKeywords().size()); assertFalse(p.getKeywords().getKeywords().contains(k1)); assertFalse(p.getKeywords().getKeywords().contains(k2)); assertTrue(p.getKeywords().getKeywords().contains(k3)); // Check other names assertEquals(1, p.getOtherNames().getOtherNames().size()); assertFalse(p.getOtherNames().getOtherNames().contains(o1)); assertFalse(p.getOtherNames().getOtherNames().contains(o2)); assertTrue(p.getOtherNames().getOtherNames().contains(o3)); // Check researcher urls assertEquals(1, p.getResearcherUrls().getResearcherUrls().size()); assertFalse(p.getResearcherUrls().getResearcherUrls().contains(r1)); assertFalse(p.getResearcherUrls().getResearcherUrls().contains(r2)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r3)); } @Test public void testPerson_When_AllPrivate_NoSource_ReadPublicToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.READ_PUBLIC); Name name = createName(Visibility.PRIVATE); Biography bio = createBiography(Visibility.PRIVATE); Address a1 = createAddress(Visibility.PRIVATE, CLIENT_2); Address a2 = createAddress(Visibility.PRIVATE, CLIENT_2); Address a3 = createAddress(Visibility.PRIVATE, CLIENT_2); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.PRIVATE, CLIENT_2); Email e2 = createEmail(Visibility.PRIVATE, CLIENT_2); Email e3 = createEmail(Visibility.PRIVATE, CLIENT_2); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keyword k2 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keyword k3 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherName o2 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherName o3 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrl r2 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrl r3 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertNull(p.getName()); assertNull(p.getBiography()); // Check addresses assertEquals(0, p.getAddresses().getAddress().size()); // Check emails assertEquals(0, p.getEmails().getEmails().size()); // Check ext ids assertEquals(0, p.getExternalIdentifiers().getExternalIdentifiers().size()); // Check keywords assertEquals(0, p.getKeywords().getKeywords().size()); // Check other names assertEquals(0, p.getOtherNames().getOtherNames().size()); // Check researcher urls assertEquals(0, p.getResearcherUrls().getResearcherUrls().size()); } @Test public void testPerson_When_AllPrivate_Source_ReadPublicToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.READ_PUBLIC); Name name = createName(Visibility.PRIVATE); Biography bio = createBiography(Visibility.PRIVATE); Address a1 = createAddress(Visibility.PRIVATE, CLIENT_1); Address a2 = createAddress(Visibility.PRIVATE, CLIENT_1); Address a3 = createAddress(Visibility.PRIVATE, CLIENT_1); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.PRIVATE, CLIENT_1); Email e2 = createEmail(Visibility.PRIVATE, CLIENT_1); Email e3 = createEmail(Visibility.PRIVATE, CLIENT_1); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.PRIVATE, CLIENT_1); Keyword k2 = createKeyword(Visibility.PRIVATE, CLIENT_1); Keyword k3 = createKeyword(Visibility.PRIVATE, CLIENT_1); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.PRIVATE, CLIENT_1); OtherName o2 = createOtherName(Visibility.PRIVATE, CLIENT_1); OtherName o3 = createOtherName(Visibility.PRIVATE, CLIENT_1); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_1); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_1); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_1); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.PRIVATE, CLIENT_1); ResearcherUrl r2 = createResearcherUrl(Visibility.PRIVATE, CLIENT_1); ResearcherUrl r3 = createResearcherUrl(Visibility.PRIVATE, CLIENT_1); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertNull(p.getName()); assertNull(p.getBiography()); // Check addresses assertEquals(3, p.getAddresses().getAddress().size()); assertTrue(p.getAddresses().getAddress().contains(a1)); assertTrue(p.getAddresses().getAddress().contains(a2)); assertTrue(p.getAddresses().getAddress().contains(a3)); // Check emails assertEquals(3, p.getEmails().getEmails().size()); assertTrue(p.getEmails().getEmails().contains(e1)); assertTrue(p.getEmails().getEmails().contains(e2)); assertTrue(p.getEmails().getEmails().contains(e3)); // Check ext ids assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext1)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext2)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext3)); // Check keywords assertEquals(3, p.getKeywords().getKeywords().size()); assertTrue(p.getKeywords().getKeywords().contains(k1)); assertTrue(p.getKeywords().getKeywords().contains(k2)); assertTrue(p.getKeywords().getKeywords().contains(k3)); // Check other names assertEquals(3, p.getOtherNames().getOtherNames().size()); assertTrue(p.getOtherNames().getOtherNames().contains(o1)); assertTrue(p.getOtherNames().getOtherNames().contains(o2)); assertTrue(p.getOtherNames().getOtherNames().contains(o3)); // Check researcher urls assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r1)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r2)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r3)); } @Test public void testPerson_When_AllPublic_NoSource_ReadLimitedToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.PERSON_READ_LIMITED); Name name = createName(Visibility.PUBLIC); Biography bio = createBiography(Visibility.PUBLIC); Address a1 = createAddress(Visibility.PUBLIC, CLIENT_2); Address a2 = createAddress(Visibility.PUBLIC, CLIENT_2); Address a3 = createAddress(Visibility.PUBLIC, CLIENT_2); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.PUBLIC, CLIENT_2); Email e2 = createEmail(Visibility.PUBLIC, CLIENT_2); Email e3 = createEmail(Visibility.PUBLIC, CLIENT_2); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keyword k2 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keyword k3 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherName o2 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherName o3 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrl r2 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrl r3 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertEquals(name, p.getName()); assertEquals(bio, p.getBiography()); // Check addresses assertEquals(3, p.getAddresses().getAddress().size()); assertTrue(p.getAddresses().getAddress().contains(a1)); assertTrue(p.getAddresses().getAddress().contains(a2)); assertTrue(p.getAddresses().getAddress().contains(a3)); // Check emails assertEquals(3, p.getEmails().getEmails().size()); assertTrue(p.getEmails().getEmails().contains(e1)); assertTrue(p.getEmails().getEmails().contains(e2)); assertTrue(p.getEmails().getEmails().contains(e3)); // Check ext ids assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext1)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext2)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext3)); // Check keywords assertEquals(3, p.getKeywords().getKeywords().size()); assertTrue(p.getKeywords().getKeywords().contains(k1)); assertTrue(p.getKeywords().getKeywords().contains(k2)); assertTrue(p.getKeywords().getKeywords().contains(k3)); // Check other names assertEquals(3, p.getOtherNames().getOtherNames().size()); assertTrue(p.getOtherNames().getOtherNames().contains(o1)); assertTrue(p.getOtherNames().getOtherNames().contains(o2)); assertTrue(p.getOtherNames().getOtherNames().contains(o3)); // Check researcher urls assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r1)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r2)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r3)); } @Test public void testPerson_When_SomeLimited_NoSource_ReadLimitedToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.PERSON_READ_LIMITED); Name name = createName(Visibility.LIMITED); Biography bio = createBiography(Visibility.LIMITED); Address a1 = createAddress(Visibility.PUBLIC, CLIENT_2); Address a2 = createAddress(Visibility.LIMITED, CLIENT_2); Address a3 = createAddress(Visibility.LIMITED, CLIENT_2); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.PUBLIC, CLIENT_2); Email e2 = createEmail(Visibility.LIMITED, CLIENT_2); Email e3 = createEmail(Visibility.LIMITED, CLIENT_2); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keyword k2 = createKeyword(Visibility.LIMITED, CLIENT_2); Keyword k3 = createKeyword(Visibility.LIMITED, CLIENT_2); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherName o2 = createOtherName(Visibility.LIMITED, CLIENT_2); OtherName o3 = createOtherName(Visibility.LIMITED, CLIENT_2); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.LIMITED, CLIENT_2); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.LIMITED, CLIENT_2); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrl r2 = createResearcherUrl(Visibility.LIMITED, CLIENT_2); ResearcherUrl r3 = createResearcherUrl(Visibility.LIMITED, CLIENT_2); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertEquals(name, p.getName()); assertEquals(bio, p.getBiography()); // Check addresses assertEquals(3, p.getAddresses().getAddress().size()); assertTrue(p.getAddresses().getAddress().contains(a1)); assertTrue(p.getAddresses().getAddress().contains(a2)); assertTrue(p.getAddresses().getAddress().contains(a3)); // Check emails assertEquals(3, p.getEmails().getEmails().size()); assertTrue(p.getEmails().getEmails().contains(e1)); assertTrue(p.getEmails().getEmails().contains(e2)); assertTrue(p.getEmails().getEmails().contains(e3)); // Check ext ids assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext1)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext2)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext3)); // Check keywords assertEquals(3, p.getKeywords().getKeywords().size()); assertTrue(p.getKeywords().getKeywords().contains(k1)); assertTrue(p.getKeywords().getKeywords().contains(k2)); assertTrue(p.getKeywords().getKeywords().contains(k3)); // Check other names assertEquals(3, p.getOtherNames().getOtherNames().size()); assertTrue(p.getOtherNames().getOtherNames().contains(o1)); assertTrue(p.getOtherNames().getOtherNames().contains(o2)); assertTrue(p.getOtherNames().getOtherNames().contains(o3)); // Check researcher urls assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r1)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r2)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r3)); } @Test public void testPerson_When_SomePrivate_NoSource_ReadLimitedToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.PERSON_READ_LIMITED); Name name = createName(Visibility.PRIVATE); Biography bio = createBiography(Visibility.PUBLIC); Address a1 = createAddress(Visibility.PUBLIC, CLIENT_2); Address a2 = createAddress(Visibility.PRIVATE, CLIENT_2); Address a3 = createAddress(Visibility.PRIVATE, CLIENT_2); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.PUBLIC, CLIENT_2); Email e2 = createEmail(Visibility.PRIVATE, CLIENT_2); Email e3 = createEmail(Visibility.PRIVATE, CLIENT_2); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keyword k2 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keyword k3 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherName o2 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherName o3 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrl r2 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrl r3 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertNull(p.getName()); assertEquals(bio, p.getBiography()); // Check addresses assertEquals(1, p.getAddresses().getAddress().size()); assertTrue(p.getAddresses().getAddress().contains(a1)); assertFalse(p.getAddresses().getAddress().contains(a2)); assertFalse(p.getAddresses().getAddress().contains(a3)); // Check emails assertEquals(1, p.getEmails().getEmails().size()); assertTrue(p.getEmails().getEmails().contains(e1)); assertFalse(p.getEmails().getEmails().contains(e2)); assertFalse(p.getEmails().getEmails().contains(e3)); // Check ext ids assertEquals(1, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext1)); assertFalse(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext2)); assertFalse(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext3)); // Check keywords assertEquals(1, p.getKeywords().getKeywords().size()); assertTrue(p.getKeywords().getKeywords().contains(k1)); assertFalse(p.getKeywords().getKeywords().contains(k2)); assertFalse(p.getKeywords().getKeywords().contains(k3)); // Check other names assertEquals(1, p.getOtherNames().getOtherNames().size()); assertTrue(p.getOtherNames().getOtherNames().contains(o1)); assertFalse(p.getOtherNames().getOtherNames().contains(o2)); assertFalse(p.getOtherNames().getOtherNames().contains(o3)); // Check researcher urls assertEquals(1, p.getResearcherUrls().getResearcherUrls().size()); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r1)); assertFalse(p.getResearcherUrls().getResearcherUrls().contains(r2)); assertFalse(p.getResearcherUrls().getResearcherUrls().contains(r3)); } @Test public void testPerson_When_AllPrivate_NoSource_ReadLimitedToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.PERSON_READ_LIMITED); Name name = createName(Visibility.PRIVATE); Biography bio = createBiography(Visibility.PRIVATE); Address a1 = createAddress(Visibility.PRIVATE, CLIENT_2); Address a2 = createAddress(Visibility.PRIVATE, CLIENT_2); Address a3 = createAddress(Visibility.PRIVATE, CLIENT_2); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.PRIVATE, CLIENT_2); Email e2 = createEmail(Visibility.PRIVATE, CLIENT_2); Email e3 = createEmail(Visibility.PRIVATE, CLIENT_2); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keyword k2 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keyword k3 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherName o2 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherName o3 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrl r2 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrl r3 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertNull(p.getName()); assertNull(p.getBiography()); // Check addresses assertEquals(0, p.getAddresses().getAddress().size()); // Check emails assertEquals(0, p.getEmails().getEmails().size()); // Check ext ids assertEquals(0, p.getExternalIdentifiers().getExternalIdentifiers().size()); // Check keywords assertEquals(0, p.getKeywords().getKeywords().size()); // Check other names assertEquals(0, p.getOtherNames().getOtherNames().size()); // Check researcher urls assertEquals(0, p.getResearcherUrls().getResearcherUrls().size()); } @Test public void testPerson_When_AllPrivate_Source_ReadLimitedToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.PERSON_READ_LIMITED); Name name = createName(Visibility.PRIVATE); Biography bio = createBiography(Visibility.PRIVATE); Address a1 = createAddress(Visibility.PRIVATE, CLIENT_1); Address a2 = createAddress(Visibility.PRIVATE, CLIENT_1); Address a3 = createAddress(Visibility.PRIVATE, CLIENT_1); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.PRIVATE, CLIENT_1); Email e2 = createEmail(Visibility.PRIVATE, CLIENT_1); Email e3 = createEmail(Visibility.PRIVATE, CLIENT_1); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.PRIVATE, CLIENT_1); Keyword k2 = createKeyword(Visibility.PRIVATE, CLIENT_1); Keyword k3 = createKeyword(Visibility.PRIVATE, CLIENT_1); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.PRIVATE, CLIENT_1); OtherName o2 = createOtherName(Visibility.PRIVATE, CLIENT_1); OtherName o3 = createOtherName(Visibility.PRIVATE, CLIENT_1); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_1); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_1); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_1); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.PRIVATE, CLIENT_1); ResearcherUrl r2 = createResearcherUrl(Visibility.PRIVATE, CLIENT_1); ResearcherUrl r3 = createResearcherUrl(Visibility.PRIVATE, CLIENT_1); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertNull(p.getName()); assertNull(p.getBiography()); // Check addresses assertEquals(3, p.getAddresses().getAddress().size()); assertTrue(p.getAddresses().getAddress().contains(a1)); assertTrue(p.getAddresses().getAddress().contains(a2)); assertTrue(p.getAddresses().getAddress().contains(a3)); // Check emails assertEquals(3, p.getEmails().getEmails().size()); assertTrue(p.getEmails().getEmails().contains(e1)); assertTrue(p.getEmails().getEmails().contains(e2)); assertTrue(p.getEmails().getEmails().contains(e3)); // Check ext ids assertEquals(3, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext1)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext2)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext3)); // Check keywords assertEquals(3, p.getKeywords().getKeywords().size()); assertTrue(p.getKeywords().getKeywords().contains(k1)); assertTrue(p.getKeywords().getKeywords().contains(k2)); assertTrue(p.getKeywords().getKeywords().contains(k3)); // Check other names assertEquals(3, p.getOtherNames().getOtherNames().size()); assertTrue(p.getOtherNames().getOtherNames().contains(o1)); assertTrue(p.getOtherNames().getOtherNames().contains(o2)); assertTrue(p.getOtherNames().getOtherNames().contains(o3)); // Check researcher urls assertEquals(3, p.getResearcherUrls().getResearcherUrls().size()); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r1)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r2)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r3)); } @Test public void testPerson_When_MixedVisibility_NoSource_ReadLimitedToken() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.PERSON_READ_LIMITED); Name name = createName(Visibility.LIMITED); Biography bio = createBiography(Visibility.PUBLIC); Address a1 = createAddress(Visibility.PUBLIC, CLIENT_2); Address a2 = createAddress(Visibility.LIMITED, CLIENT_2); Address a3 = createAddress(Visibility.PRIVATE, CLIENT_2); Addresses addresses = new Addresses(); addresses.setAddress(new ArrayList<Address>(Arrays.asList(a1, a2, a3))); Email e1 = createEmail(Visibility.PUBLIC, CLIENT_2); Email e2 = createEmail(Visibility.LIMITED, CLIENT_2); Email e3 = createEmail(Visibility.PRIVATE, CLIENT_2); Emails emails = new Emails(); emails.setEmails(new ArrayList<Email>(Arrays.asList(e1, e2, e3))); Keyword k1 = createKeyword(Visibility.PUBLIC, CLIENT_2); Keyword k2 = createKeyword(Visibility.LIMITED, CLIENT_2); Keyword k3 = createKeyword(Visibility.PRIVATE, CLIENT_2); Keywords keywords = new Keywords(); keywords.setKeywords(new ArrayList<Keyword>(Arrays.asList(k1, k2, k3))); OtherName o1 = createOtherName(Visibility.PUBLIC, CLIENT_2); OtherName o2 = createOtherName(Visibility.LIMITED, CLIENT_2); OtherName o3 = createOtherName(Visibility.PRIVATE, CLIENT_2); OtherNames otherNames = new OtherNames(); otherNames.setOtherNames(new ArrayList<OtherName>(Arrays.asList(o1, o2, o3))); PersonExternalIdentifier ext1 = createPersonExternalIdentifier(Visibility.PUBLIC, CLIENT_2); PersonExternalIdentifier ext2 = createPersonExternalIdentifier(Visibility.LIMITED, CLIENT_2); PersonExternalIdentifier ext3 = createPersonExternalIdentifier(Visibility.PRIVATE, CLIENT_2); PersonExternalIdentifiers extIds = new PersonExternalIdentifiers(); extIds.setExternalIdentifiers(new ArrayList<PersonExternalIdentifier>(Arrays.asList(ext1, ext2, ext3))); ResearcherUrl r1 = createResearcherUrl(Visibility.PUBLIC, CLIENT_2); ResearcherUrl r2 = createResearcherUrl(Visibility.LIMITED, CLIENT_2); ResearcherUrl r3 = createResearcherUrl(Visibility.PRIVATE, CLIENT_2); ResearcherUrls researcherUrls = new ResearcherUrls(); researcherUrls.setResearcherUrls(new ArrayList<ResearcherUrl>(Arrays.asList(r1, r2, r3))); Person p = new Person(); p.setBiography(bio); p.setName(name); p.setAddresses(addresses); p.setEmails(emails); p.setExternalIdentifiers(extIds); p.setKeywords(keywords); p.setOtherNames(otherNames); p.setResearcherUrls(researcherUrls); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); assertEquals(name, p.getName()); assertEquals(bio, p.getBiography()); // Check addresses assertEquals(2, p.getAddresses().getAddress().size()); assertTrue(p.getAddresses().getAddress().contains(a1)); assertTrue(p.getAddresses().getAddress().contains(a2)); assertFalse(p.getAddresses().getAddress().contains(a3)); // Check emails assertEquals(2, p.getEmails().getEmails().size()); assertTrue(p.getEmails().getEmails().contains(e1)); assertTrue(p.getEmails().getEmails().contains(e2)); assertFalse(p.getEmails().getEmails().contains(e3)); // Check ext ids assertEquals(2, p.getExternalIdentifiers().getExternalIdentifiers().size()); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext1)); assertTrue(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext2)); assertFalse(p.getExternalIdentifiers().getExternalIdentifiers().contains(ext3)); // Check keywords assertEquals(2, p.getKeywords().getKeywords().size()); assertTrue(p.getKeywords().getKeywords().contains(k1)); assertTrue(p.getKeywords().getKeywords().contains(k2)); assertFalse(p.getKeywords().getKeywords().contains(k3)); // Check other names assertEquals(2, p.getOtherNames().getOtherNames().size()); assertTrue(p.getOtherNames().getOtherNames().contains(o1)); assertTrue(p.getOtherNames().getOtherNames().contains(o2)); assertFalse(p.getOtherNames().getOtherNames().contains(o3)); // Check researcher urls assertEquals(2, p.getResearcherUrls().getResearcherUrls().size()); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r1)); assertTrue(p.getResearcherUrls().getResearcherUrls().contains(r2)); assertFalse(p.getResearcherUrls().getResearcherUrls().contains(r3)); } @Test public void testPerson_When_ReadLimitedToken_EmptyElement() { SecurityContextTestUtils.setUpSecurityContext(ORCID_1, CLIENT_1, ScopePathType.PERSON_READ_LIMITED); Person p = new Person(); orcidSecurityManager.checkAndFilter(ORCID_1, p); assertNotNull(p); } }