/** * ============================================================================= * * 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.integration.blackbox.api.v2.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; import java.util.List; import javax.annotation.Resource; import org.codehaus.jettison.json.JSONException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.orcid.integration.api.pub.PublicV2ApiClientImpl; import org.orcid.integration.blackbox.api.v2.release.BlackBoxBaseV2Release; import org.orcid.integration.blackbox.api.v2.release.MemberV2ApiClientImpl; import org.orcid.jaxb.model.message.ScopePathType; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.sun.jersey.api.client.ClientResponse; /** * * @author Angel Montenegro * */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:test-context.xml" }) public class EmailTest extends BlackBoxBaseV2Release { @Resource(name = "memberV2ApiClient_rc2") private org.orcid.integration.blackbox.api.v2.rc2.MemberV2ApiClientImpl memberV2ApiClient_rc2; @Resource(name = "publicV2ApiClient_rc2") private PublicV2ApiClientImpl publicV2ApiClient_rc2; @Resource(name = "memberV2ApiClient_rc3") private org.orcid.integration.blackbox.api.v2.rc3.MemberV2ApiClientImpl memberV2ApiClient_rc3; @Resource(name = "publicV2ApiClient_rc3") private PublicV2ApiClientImpl publicV2ApiClient_rc3; @Resource(name = "memberV2ApiClient_rc4") private org.orcid.integration.blackbox.api.v2.rc4.MemberV2ApiClientImpl memberV2ApiClient_rc4; @Resource(name = "publicV2ApiClient_rc4") private PublicV2ApiClientImpl publicV2ApiClient_rc4; @Resource(name = "memberV2ApiClient") private MemberV2ApiClientImpl memberV2ApiClient_release; @Resource(name = "publicV2ApiClient") private PublicV2ApiClientImpl publicV2ApiClient_release; private String limitedEmailValue = "limited@test.orcid.org"; @Before public void setUpData() { signout(); signin(); showAccountSettingsPage(); openEditEmailsSectionOnAccountSettingsPage(); updatePrimaryEmailVisibility(org.orcid.jaxb.model.common_v2.Visibility.PUBLIC); removePopOver(); try { updateEmailVisibility(limitedEmailValue, org.orcid.jaxb.model.common_v2.Visibility.LIMITED); } catch (Exception e) { addEmail(limitedEmailValue, org.orcid.jaxb.model.common_v2.Visibility.LIMITED); } } /** * --------- -- -- -- RC2 -- -- -- --------- * */ /** * PRECONDITIONS: The primary email must be public */ @Test public void testGetWithPublicAPI_rc2() { ClientResponse getAllResponse = publicV2ApiClient_rc2.viewEmailXML(getUser1OrcidId()); assertNotNull(getAllResponse); org.orcid.jaxb.model.record_rc2.Emails emails = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc2.Emails.class); assertListContainsEmail_rc2(getUser1UserName(), org.orcid.jaxb.model.common_rc2.Visibility.PUBLIC, emails); } /** * PRECONDITIONS: The primary email must be public The user must have a * limited email limited@email.com * * @throws JSONException * @throws InterruptedException */ @Test public void testGetWithMembersAPI_rc2() throws InterruptedException, JSONException { String accessToken = getAccessToken(); ClientResponse getAllResponse = memberV2ApiClient_rc2.getEmails(getUser1OrcidId(), accessToken); assertNotNull(getAllResponse); org.orcid.jaxb.model.record_rc2.Emails emails = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc2.Emails.class); assertListContainsEmail_rc2(getUser1UserName(), org.orcid.jaxb.model.common_rc2.Visibility.PUBLIC, emails); assertListContainsEmail_rc2("limited@test.orcid.org", org.orcid.jaxb.model.common_rc2.Visibility.LIMITED, emails); } public static void assertListContainsEmail_rc2(String emailString, org.orcid.jaxb.model.common_rc2.Visibility visibility, org.orcid.jaxb.model.record_rc2.Emails emails) { assertNotNull(emails); assertNotNull(emails.getEmails()); assertFalse(emails.getEmails().isEmpty()); for (org.orcid.jaxb.model.record_rc2.Email email : emails.getEmails()) { if (email.getEmail().equals(emailString)) { assertEquals(visibility, email.getVisibility()); return; } } fail(); } /** * --------- -- -- -- RC3 -- -- -- --------- * */ /** * PRECONDITIONS: The primary email must be public */ @Test public void testGetWithPublicAPI_rc3() { ClientResponse getAllResponse = publicV2ApiClient_rc3.viewEmailXML(getUser1OrcidId()); assertNotNull(getAllResponse); org.orcid.jaxb.model.record_rc3.Emails emails = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc3.Emails.class); assertListContainsEmail_rc3(getUser1UserName(), org.orcid.jaxb.model.common_rc3.Visibility.PUBLIC, emails); } /** * PRECONDITIONS: The primary email must be public The user must have a * limited email limited@email.com * * @throws JSONException * @throws InterruptedException */ @Test public void testGetWithMembersAPI_rc3() throws InterruptedException, JSONException { String accessToken = getAccessToken(); ClientResponse getAllResponse = memberV2ApiClient_rc3.getEmails(getUser1OrcidId(), accessToken); assertNotNull(getAllResponse); org.orcid.jaxb.model.record_rc3.Emails emails = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc3.Emails.class); assertListContainsEmail_rc3(getUser1UserName(), org.orcid.jaxb.model.common_rc3.Visibility.PUBLIC, emails); assertListContainsEmail_rc3("limited@test.orcid.org", org.orcid.jaxb.model.common_rc3.Visibility.LIMITED, emails); } public static void assertListContainsEmail_rc3(String emailString, org.orcid.jaxb.model.common_rc3.Visibility visibility, org.orcid.jaxb.model.record_rc3.Emails emails) { assertNotNull(emails); assertNotNull(emails.getEmails()); assertFalse(emails.getEmails().isEmpty()); for (org.orcid.jaxb.model.record_rc3.Email email : emails.getEmails()) { if (email.getEmail().equals(emailString)) { assertEquals(visibility, email.getVisibility()); return; } } fail(); } /** * --------- -- -- -- RC4 -- -- -- --------- * */ /** * PRECONDITIONS: The primary email must be public */ @Test public void testGetWithPublicAPI_rc4() { ClientResponse getAllResponse = publicV2ApiClient_rc4.viewEmailXML(getUser1OrcidId()); assertNotNull(getAllResponse); org.orcid.jaxb.model.record_rc4.Emails emails = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc4.Emails.class); assertListContainsEmail_rc4(getUser1UserName(), org.orcid.jaxb.model.common_rc4.Visibility.PUBLIC, emails); } /** * PRECONDITIONS: The primary email must be public The user must have a * limited email limited@email.com * * @throws JSONException * @throws InterruptedException */ @Test public void testGetWithMembersAPI_rc4() throws InterruptedException, JSONException { String accessToken = getAccessToken(); ClientResponse getAllResponse = memberV2ApiClient_rc4.getEmails(getUser1OrcidId(), accessToken); assertNotNull(getAllResponse); org.orcid.jaxb.model.record_rc4.Emails emails = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc4.Emails.class); assertListContainsEmail_rc4(getUser1UserName(), org.orcid.jaxb.model.common_rc4.Visibility.PUBLIC, emails); assertListContainsEmail_rc4("limited@test.orcid.org", org.orcid.jaxb.model.common_rc4.Visibility.LIMITED, emails); } public static void assertListContainsEmail_rc4(String emailString, org.orcid.jaxb.model.common_rc4.Visibility visibility, org.orcid.jaxb.model.record_rc4.Emails emails) { assertNotNull(emails); assertNotNull(emails.getEmails()); assertFalse(emails.getEmails().isEmpty()); for (org.orcid.jaxb.model.record_rc4.Email email : emails.getEmails()) { if (email.getEmail().equals(emailString)) { assertEquals(visibility, email.getVisibility()); return; } } fail(); } /** * --------- -- -- -- release -- -- -- --------- * */ /** * PRECONDITIONS: The primary email must be public */ @Test public void testGetWithPublicAPI_release() { ClientResponse getAllResponse = publicV2ApiClient_release.viewEmailXML(getUser1OrcidId()); assertNotNull(getAllResponse); org.orcid.jaxb.model.record_v2.Emails emails = getAllResponse.getEntity(org.orcid.jaxb.model.record_v2.Emails.class); assertListContainsEmail_release(getUser1UserName(), org.orcid.jaxb.model.common_v2.Visibility.PUBLIC, emails); } /** * PRECONDITIONS: The primary email must be public The user must have a * limited email limited@email.com * * @throws JSONException * @throws InterruptedException */ @Test public void testGetWithMembersAPI_release() throws InterruptedException, JSONException { String accessToken = getAccessToken(); ClientResponse getAllResponse = memberV2ApiClient_release.getEmails(getUser1OrcidId(), accessToken); assertNotNull(getAllResponse); org.orcid.jaxb.model.record_v2.Emails emails = getAllResponse.getEntity(org.orcid.jaxb.model.record_v2.Emails.class); assertListContainsEmail_release(getUser1UserName(), org.orcid.jaxb.model.common_v2.Visibility.PUBLIC, emails); assertListContainsEmail_release("limited@test.orcid.org", org.orcid.jaxb.model.common_v2.Visibility.LIMITED, emails); } public static void assertListContainsEmail_release(String emailString, org.orcid.jaxb.model.common_v2.Visibility visibility, org.orcid.jaxb.model.record_v2.Emails emails) { assertNotNull(emails); assertNotNull(emails.getEmails()); assertFalse(emails.getEmails().isEmpty()); for (org.orcid.jaxb.model.record_v2.Email email : emails.getEmails()) { if (email.getEmail().equals(emailString)) { assertEquals(visibility, email.getVisibility()); return; } } fail(); } public String getAccessToken() throws InterruptedException, JSONException { List<String> scopes = getScopes(ScopePathType.READ_LIMITED); return getAccessToken(scopes); } }