/**
* =============================================================================
*
* 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.assertNull;
import static org.junit.Assert.assertTrue;
import java.net.URISyntaxException;
import javax.annotation.Resource;
import javax.ws.rs.core.Response;
import org.codehaus.jettison.json.JSONException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
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 ResearcherUrlsTest 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 static String researcherUrl1 = "http://test.orcid.org/1/" + System.currentTimeMillis();
@BeforeClass
public static void setup() {
signin();
openEditResearcherUrlsModal();
deleteResearcherUrls();
createResearcherUrl(researcherUrl1);
changeResearcherUrlsVisibility(org.orcid.jaxb.model.common_v2.Visibility.PUBLIC);
saveResearcherUrlsModal();
changeDefaultUserVisibility(webDriver, org.orcid.jaxb.model.common_v2.Visibility.PUBLIC, false);
}
@AfterClass
public static void after() {
showMyOrcidPage();
openEditResearcherUrlsModal();
deleteResearcherUrls();
saveResearcherUrlsModal();
signout();
}
/**
* --------- -- -- -- RC2 -- -- -- ---------
*
*/
@Test
public void testCreateGetUpdateAndDeleteResearcherUrl_rc2() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_rc2.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc2.ResearcherUrl();
long time = System.currentTimeMillis();
String url = "http://test.orcid.org/test/" + time;
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc2.Url(url));
rUrlToCreate.setUrlName(url);
// Create
ClientResponse postResponse = memberV2ApiClient_rc2.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
String locationPath = postResponse.getLocation().getPath();
assertTrue("Location header path should match pattern, but was " + locationPath,
locationPath.matches(".*/v2.0_rc2/" + getUser1OrcidId() + "/researcher-urls/\\d+"));
// Read
ClientResponse getResponse = memberV2ApiClient_rc2.viewLocationXml(postResponse.getLocation(), accessToken);
assertEquals(Response.Status.OK.getStatusCode(), getResponse.getStatus());
org.orcid.jaxb.model.record_rc2.ResearcherUrl gotResearcherUrl = getResponse.getEntity(org.orcid.jaxb.model.record_rc2.ResearcherUrl.class);
assertNotNull(gotResearcherUrl);
assertNotNull(gotResearcherUrl.getPutCode());
assertNotNull(gotResearcherUrl.getSource());
assertNotNull(gotResearcherUrl.getCreatedDate());
assertNotNull(gotResearcherUrl.getLastModifiedDate());
assertEquals(getClient1ClientId(), gotResearcherUrl.getSource().retrieveSourcePath());
assertEquals("http://test.orcid.org/test/" + time, gotResearcherUrl.getUrl().getValue());
assertEquals("http://test.orcid.org/test/" + time, gotResearcherUrl.getUrlName());
assertEquals("public", gotResearcherUrl.getVisibility().value());
assertNotNull(gotResearcherUrl.getDisplayIndex());
Long originalDisplayIndex = gotResearcherUrl.getDisplayIndex();
// Save the original visibility
org.orcid.jaxb.model.common_rc2.Visibility originalVisibility = gotResearcherUrl.getVisibility();
org.orcid.jaxb.model.common_rc2.Visibility updatedVisibility = org.orcid.jaxb.model.common_rc2.Visibility.PRIVATE.equals(originalVisibility)
? org.orcid.jaxb.model.common_rc2.Visibility.LIMITED : org.orcid.jaxb.model.common_rc2.Visibility.PRIVATE;
// Verify you cant update the visibility
gotResearcherUrl.setVisibility(updatedVisibility);
ClientResponse putResponse = memberV2ApiClient_rc2.updateLocationXml(postResponse.getLocation(), accessToken, gotResearcherUrl);
assertEquals(Response.Status.FORBIDDEN.getStatusCode(), putResponse.getStatus());
org.orcid.jaxb.model.error_rc2.OrcidError error = putResponse.getEntity(org.orcid.jaxb.model.error_rc2.OrcidError.class);
assertNotNull(error);
assertEquals(Integer.valueOf(9035), error.getErrorCode());
// Set the visibility again to the initial one
gotResearcherUrl.setVisibility(originalVisibility);
// Update
org.orcid.jaxb.model.common_rc2.LastModifiedDate initialLastModified = gotResearcherUrl.getLastModifiedDate();
Long currentTime = System.currentTimeMillis();
gotResearcherUrl.setUrlName(gotResearcherUrl.getUrlName() + " - " + currentTime);
gotResearcherUrl.getUrl().setValue(gotResearcherUrl.getUrl().getValue() + currentTime);
ClientResponse updatedResearcherUrlResponse = memberV2ApiClient_rc2.updateResearcherUrls(getUser1OrcidId(), gotResearcherUrl, accessToken);
assertNotNull(updatedResearcherUrlResponse);
assertEquals(Response.Status.OK.getStatusCode(), updatedResearcherUrlResponse.getStatus());
updatedResearcherUrlResponse = memberV2ApiClient_rc2.getResearcherUrl(getUser1OrcidId(), gotResearcherUrl.getPutCode(), accessToken);
org.orcid.jaxb.model.record_rc2.ResearcherUrl updatedResearcherUrl = updatedResearcherUrlResponse.getEntity(org.orcid.jaxb.model.record_rc2.ResearcherUrl.class);
assertNotNull(updatedResearcherUrl);
assertEquals("http://test.orcid.org/test/" + time + currentTime, updatedResearcherUrl.getUrl().getValue());
assertEquals("http://test.orcid.org/test/" + time + " - " + currentTime, updatedResearcherUrl.getUrlName());
assertEquals(originalDisplayIndex, updatedResearcherUrl.getDisplayIndex());
// Keep it public, since it is more restrictive than the user visibility
// default
assertEquals(org.orcid.jaxb.model.common_rc2.Visibility.PUBLIC, updatedResearcherUrl.getVisibility());
assertFalse(initialLastModified.equals(updatedResearcherUrl.getLastModifiedDate()));
// Delete
ClientResponse deleteResponse = memberV2ApiClient_rc2.deleteResearcherUrl(getUser1OrcidId(), gotResearcherUrl.getPutCode(), accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testCantAddDuplicatedResearcherUrl_rc2() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
Long now = System.currentTimeMillis();
org.orcid.jaxb.model.record_rc2.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc2.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc2.Url("http://newurl.com/" + now));
rUrlToCreate.setUrlName("url-name-" + System.currentTimeMillis());
rUrlToCreate.setVisibility(org.orcid.jaxb.model.common_rc2.Visibility.PUBLIC);
// Create it
ClientResponse postResponse = memberV2ApiClient_rc2.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
String location = postResponse.getHeaders().getFirst("Location");
Long putCode1 = Long.valueOf(location.substring(location.lastIndexOf('/') + 1));
// Add it again
postResponse = memberV2ApiClient_rc2.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CONFLICT.getStatusCode(), postResponse.getStatus());
// Check it can be created by other client
String otherClientToken = getAccessToken(getUser1OrcidId(), getUser1Password(), getScopes(ScopePathType.PERSON_UPDATE), getClient2ClientId(),
getClient2ClientSecret(), getClient2RedirectUri());
postResponse = memberV2ApiClient_rc2.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, otherClientToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
location = postResponse.getHeaders().getFirst("Location");
Long putCode2 = Long.valueOf(location.substring(location.lastIndexOf('/') + 1));
// Delete both
ClientResponse deleteResponse = memberV2ApiClient_rc2.deleteResearcherUrl(getUser1OrcidId(), putCode1, accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
deleteResponse = memberV2ApiClient_rc2.deleteResearcherUrl(getUser1OrcidId(), putCode2, otherClientToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testTryingToAddInvalidResearcherUrls_rc2() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_rc2.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc2.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc2.Url(""));
rUrlToCreate.setUrlName("");
// Create
ClientResponse postResponse = memberV2ApiClient_rc2.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
String _351Chars = new String();
for (int i = 0; i < 531; i++) {
_351Chars += "a";
}
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc2.Url(_351Chars));
postResponse = memberV2ApiClient_rc2.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc2.Url("http://myurl.com"));
rUrlToCreate.setUrlName(_351Chars);
postResponse = memberV2ApiClient_rc2.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
rUrlToCreate.setUrlName("The name");
postResponse = memberV2ApiClient_rc2.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
// Read it to delete it
ClientResponse getResponse = memberV2ApiClient_rc2.viewLocationXml(postResponse.getLocation(), accessToken);
assertEquals(Response.Status.OK.getStatusCode(), getResponse.getStatus());
org.orcid.jaxb.model.record_rc2.ResearcherUrl gotResearcherUrl = getResponse.getEntity(org.orcid.jaxb.model.record_rc2.ResearcherUrl.class);
ClientResponse deleteResponse = memberV2ApiClient_rc2.deleteResearcherUrl(getUser1OrcidId(), gotResearcherUrl.getPutCode(), accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testInvalidPutCodeReturns404_rc2() throws InterruptedException, JSONException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_rc2.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc2.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc2.Url("http://newurl.com/" + System.currentTimeMillis()));
rUrlToCreate.setUrlName("url-name-" + System.currentTimeMillis());
rUrlToCreate.setVisibility(org.orcid.jaxb.model.common_rc2.Visibility.PUBLIC);
rUrlToCreate.setPutCode(1234567890L);
ClientResponse response = memberV2ApiClient_rc2.updateResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(response);
assertEquals(ClientResponse.Status.NOT_FOUND.getStatusCode(), response.getStatus());
}
/**
* --------- -- -- -- RC3 -- -- -- ---------
*
*/
@Test
public void testCreateGetUpdateAndDeleteResearcherUrl_rc3() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_rc3.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc3.ResearcherUrl();
long time = System.currentTimeMillis();
String url = "http://test.orcid.org/test/" + time;
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc3.Url(url));
rUrlToCreate.setUrlName(url);
// Create
ClientResponse postResponse = memberV2ApiClient_rc3.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
String locationPath = postResponse.getLocation().getPath();
assertTrue("Location header path should match pattern, but was " + locationPath,
locationPath.matches(".*/v2.0_rc3/" + getUser1OrcidId() + "/researcher-urls/\\d+"));
// Read
ClientResponse getResponse = memberV2ApiClient_rc3.viewLocationXml(postResponse.getLocation(), accessToken);
assertEquals(Response.Status.OK.getStatusCode(), getResponse.getStatus());
org.orcid.jaxb.model.record_rc3.ResearcherUrl gotResearcherUrl = getResponse.getEntity(org.orcid.jaxb.model.record_rc3.ResearcherUrl.class);
assertNotNull(gotResearcherUrl);
assertNotNull(gotResearcherUrl.getPutCode());
assertNotNull(gotResearcherUrl.getSource());
assertNotNull(gotResearcherUrl.getCreatedDate());
assertNotNull(gotResearcherUrl.getLastModifiedDate());
assertEquals(getClient1ClientId(), gotResearcherUrl.getSource().retrieveSourcePath());
assertEquals("http://test.orcid.org/test/" + time, gotResearcherUrl.getUrl().getValue());
assertEquals("http://test.orcid.org/test/" + time, gotResearcherUrl.getUrlName());
assertEquals("public", gotResearcherUrl.getVisibility().value());
assertNotNull(gotResearcherUrl.getDisplayIndex());
Long originalDisplayIndex = gotResearcherUrl.getDisplayIndex();
// Save the original visibility
org.orcid.jaxb.model.common_rc3.Visibility originalVisibility = gotResearcherUrl.getVisibility();
org.orcid.jaxb.model.common_rc3.Visibility updatedVisibility = org.orcid.jaxb.model.common_rc3.Visibility.PRIVATE.equals(originalVisibility)
? org.orcid.jaxb.model.common_rc3.Visibility.LIMITED : org.orcid.jaxb.model.common_rc3.Visibility.PRIVATE;
// Verify you cant update the visibility
gotResearcherUrl.setVisibility(updatedVisibility);
ClientResponse putResponse = memberV2ApiClient_rc3.updateLocationXml(postResponse.getLocation(), accessToken, gotResearcherUrl);
assertEquals(Response.Status.FORBIDDEN.getStatusCode(), putResponse.getStatus());
org.orcid.jaxb.model.error_rc3.OrcidError error = putResponse.getEntity(org.orcid.jaxb.model.error_rc3.OrcidError.class);
assertNotNull(error);
assertEquals(Integer.valueOf(9035), error.getErrorCode());
// Set the visibility again to the initial one
gotResearcherUrl.setVisibility(originalVisibility);
// Update
org.orcid.jaxb.model.common_rc3.LastModifiedDate initialLastModified = gotResearcherUrl.getLastModifiedDate();
Long currentTime = System.currentTimeMillis();
gotResearcherUrl.setUrlName(gotResearcherUrl.getUrlName() + " - " + currentTime);
gotResearcherUrl.getUrl().setValue(gotResearcherUrl.getUrl().getValue() + currentTime);
ClientResponse updatedResearcherUrlResponse = memberV2ApiClient_rc3.updateResearcherUrls(getUser1OrcidId(), gotResearcherUrl, accessToken);
assertNotNull(updatedResearcherUrlResponse);
assertEquals(Response.Status.OK.getStatusCode(), updatedResearcherUrlResponse.getStatus());
org.orcid.jaxb.model.record_rc3.ResearcherUrl updatedResearcherUrl = updatedResearcherUrlResponse.getEntity(org.orcid.jaxb.model.record_rc3.ResearcherUrl.class);
assertNotNull(updatedResearcherUrl);
assertEquals("http://test.orcid.org/test/" + time + currentTime, updatedResearcherUrl.getUrl().getValue());
assertEquals("http://test.orcid.org/test/" + time + " - " + currentTime, updatedResearcherUrl.getUrlName());
assertEquals(originalDisplayIndex, updatedResearcherUrl.getDisplayIndex());
// Keep it public, since it is more restrictive than the user visibility
// default
assertEquals(org.orcid.jaxb.model.common_rc3.Visibility.PUBLIC, updatedResearcherUrl.getVisibility());
assertFalse(initialLastModified.equals(updatedResearcherUrl.getLastModifiedDate()));
// Delete
ClientResponse deleteResponse = memberV2ApiClient_rc3.deleteResearcherUrl(getUser1OrcidId(), gotResearcherUrl.getPutCode(), accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testCantAddDuplicatedResearcherUrl_rc3() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
Long now = System.currentTimeMillis();
org.orcid.jaxb.model.record_rc3.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc3.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc3.Url("http://newurl.com/" + now));
rUrlToCreate.setUrlName("url-name-" + System.currentTimeMillis());
rUrlToCreate.setVisibility(org.orcid.jaxb.model.common_rc3.Visibility.PUBLIC);
// Create it
ClientResponse postResponse = memberV2ApiClient_rc3.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
String location = postResponse.getHeaders().getFirst("Location");
Long putCode1 = Long.valueOf(location.substring(location.lastIndexOf('/') + 1));
// Add it again
postResponse = memberV2ApiClient_rc3.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CONFLICT.getStatusCode(), postResponse.getStatus());
// Check it can be created by other client
String otherClientToken = getAccessToken(getUser1OrcidId(), getUser1Password(), getScopes(ScopePathType.PERSON_UPDATE), getClient2ClientId(),
getClient2ClientSecret(), getClient2RedirectUri());
postResponse = memberV2ApiClient_rc3.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, otherClientToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
location = postResponse.getHeaders().getFirst("Location");
Long putCode2 = Long.valueOf(location.substring(location.lastIndexOf('/') + 1));
// Delete both
ClientResponse deleteResponse = memberV2ApiClient_rc2.deleteResearcherUrl(getUser1OrcidId(), putCode1, accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
deleteResponse = memberV2ApiClient_rc2.deleteResearcherUrl(getUser1OrcidId(), putCode2, otherClientToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testTryingToAddInvalidResearcherUrls_rc3() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_rc3.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc3.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc3.Url(""));
rUrlToCreate.setUrlName("");
// Create
ClientResponse postResponse = memberV2ApiClient_rc3.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
String _351Chars = new String();
for (int i = 0; i < 531; i++) {
_351Chars += "a";
}
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc3.Url(_351Chars));
postResponse = memberV2ApiClient_rc3.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc3.Url("http://myurl.com"));
rUrlToCreate.setUrlName(_351Chars);
postResponse = memberV2ApiClient_rc3.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
rUrlToCreate.setUrlName("The name");
postResponse = memberV2ApiClient_rc3.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
// Read it to delete it
ClientResponse getResponse = memberV2ApiClient_rc3.viewLocationXml(postResponse.getLocation(), accessToken);
assertEquals(Response.Status.OK.getStatusCode(), getResponse.getStatus());
org.orcid.jaxb.model.record_rc3.ResearcherUrl gotResearcherUrl = getResponse.getEntity(org.orcid.jaxb.model.record_rc3.ResearcherUrl.class);
ClientResponse deleteResponse = memberV2ApiClient_rc3.deleteResearcherUrl(getUser1OrcidId(), gotResearcherUrl.getPutCode(), accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testInvalidPutCodeReturns404_rc3() throws InterruptedException, JSONException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_rc3.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc3.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc3.Url("http://newurl.com/" + System.currentTimeMillis()));
rUrlToCreate.setUrlName("url-name-" + System.currentTimeMillis());
rUrlToCreate.setVisibility(org.orcid.jaxb.model.common_rc3.Visibility.PUBLIC);
rUrlToCreate.setPutCode(1234567890L);
ClientResponse response = memberV2ApiClient_rc3.updateResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(response);
assertEquals(ClientResponse.Status.NOT_FOUND.getStatusCode(), response.getStatus());
}
/**
* --------- -- -- -- RC4 -- -- -- ---------
*
*/
@Test
public void testCreateGetUpdateAndDeleteResearcherUrl_rc4() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_rc4.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc4.ResearcherUrl();
long time = System.currentTimeMillis();
String url = "http://test.orcid.org/test/" + time;
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc4.Url(url));
rUrlToCreate.setUrlName(url);
// Create
ClientResponse postResponse = memberV2ApiClient_rc4.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
String locationPath = postResponse.getLocation().getPath();
assertTrue("Location header path should match pattern, but was " + locationPath,
locationPath.matches(".*/v2.0_rc4/" + getUser1OrcidId() + "/researcher-urls/\\d+"));
// Read
ClientResponse getResponse = memberV2ApiClient_rc4.viewLocationXml(postResponse.getLocation(), accessToken);
assertEquals(Response.Status.OK.getStatusCode(), getResponse.getStatus());
org.orcid.jaxb.model.record_rc4.ResearcherUrl gotResearcherUrl = getResponse.getEntity(org.orcid.jaxb.model.record_rc4.ResearcherUrl.class);
assertNotNull(gotResearcherUrl);
assertNotNull(gotResearcherUrl.getPutCode());
assertNotNull(gotResearcherUrl.getSource());
assertNotNull(gotResearcherUrl.getCreatedDate());
assertNotNull(gotResearcherUrl.getLastModifiedDate());
assertEquals(getClient1ClientId(), gotResearcherUrl.getSource().retrieveSourcePath());
assertEquals("http://test.orcid.org/test/" + time, gotResearcherUrl.getUrl().getValue());
assertEquals("http://test.orcid.org/test/" + time, gotResearcherUrl.getUrlName());
assertEquals("public", gotResearcherUrl.getVisibility().value());
assertNotNull(gotResearcherUrl.getDisplayIndex());
Long originalDisplayIndex = gotResearcherUrl.getDisplayIndex();
// Save the original visibility
org.orcid.jaxb.model.common_rc4.Visibility originalVisibility = gotResearcherUrl.getVisibility();
org.orcid.jaxb.model.common_rc4.Visibility updatedVisibility = org.orcid.jaxb.model.common_rc4.Visibility.PRIVATE.equals(originalVisibility)
? org.orcid.jaxb.model.common_rc4.Visibility.LIMITED : org.orcid.jaxb.model.common_rc4.Visibility.PRIVATE;
// Verify you cant update the visibility
gotResearcherUrl.setVisibility(updatedVisibility);
ClientResponse putResponse = memberV2ApiClient_rc4.updateLocationXml(postResponse.getLocation(), accessToken, gotResearcherUrl);
assertEquals(Response.Status.FORBIDDEN.getStatusCode(), putResponse.getStatus());
org.orcid.jaxb.model.error_rc4.OrcidError error = putResponse.getEntity(org.orcid.jaxb.model.error_rc4.OrcidError.class);
assertNotNull(error);
assertEquals(Integer.valueOf(9035), error.getErrorCode());
// Set the visibility again to the initial one
gotResearcherUrl.setVisibility(originalVisibility);
// Update
org.orcid.jaxb.model.common_rc4.LastModifiedDate initialLastModified = gotResearcherUrl.getLastModifiedDate();
Long currentTime = System.currentTimeMillis();
gotResearcherUrl.setUrlName(gotResearcherUrl.getUrlName() + " - " + currentTime);
gotResearcherUrl.getUrl().setValue(gotResearcherUrl.getUrl().getValue() + currentTime);
ClientResponse updatedResearcherUrlResponse = memberV2ApiClient_rc4.updateResearcherUrls(getUser1OrcidId(), gotResearcherUrl, accessToken);
assertNotNull(updatedResearcherUrlResponse);
assertEquals(Response.Status.OK.getStatusCode(), updatedResearcherUrlResponse.getStatus());
org.orcid.jaxb.model.record_rc4.ResearcherUrl updatedResearcherUrl = updatedResearcherUrlResponse.getEntity(org.orcid.jaxb.model.record_rc4.ResearcherUrl.class);
assertNotNull(updatedResearcherUrl);
assertEquals("http://test.orcid.org/test/" + time + currentTime, updatedResearcherUrl.getUrl().getValue());
assertEquals("http://test.orcid.org/test/" + time + " - " + currentTime, updatedResearcherUrl.getUrlName());
assertEquals(originalDisplayIndex, updatedResearcherUrl.getDisplayIndex());
// Keep it public, since it is more restrictive than the user visibility
// default
assertEquals(org.orcid.jaxb.model.common_rc4.Visibility.PUBLIC, updatedResearcherUrl.getVisibility());
assertFalse(initialLastModified.equals(updatedResearcherUrl.getLastModifiedDate()));
// Delete
ClientResponse deleteResponse = memberV2ApiClient_rc4.deleteResearcherUrl(getUser1OrcidId(), gotResearcherUrl.getPutCode(), accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testCantAddDuplicatedResearcherUrl_rc4() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
Long now = System.currentTimeMillis();
org.orcid.jaxb.model.record_rc4.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc4.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc4.Url("http://newurl.com/" + now));
rUrlToCreate.setUrlName("url-name-" + System.currentTimeMillis());
rUrlToCreate.setVisibility(org.orcid.jaxb.model.common_rc4.Visibility.PUBLIC);
// Create it
ClientResponse postResponse = memberV2ApiClient_rc4.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
String location = postResponse.getHeaders().getFirst("Location");
Long putCode1 = Long.valueOf(location.substring(location.lastIndexOf('/') + 1));
// Add it again
postResponse = memberV2ApiClient_rc4.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CONFLICT.getStatusCode(), postResponse.getStatus());
// Check it can be created by other client
String otherClientToken = getAccessToken(getUser1OrcidId(), getUser1Password(), getScopes(ScopePathType.PERSON_UPDATE), getClient2ClientId(),
getClient2ClientSecret(), getClient2RedirectUri());
postResponse = memberV2ApiClient_rc4.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, otherClientToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
location = postResponse.getHeaders().getFirst("Location");
Long putCode2 = Long.valueOf(location.substring(location.lastIndexOf('/') + 1));
// Delete both
ClientResponse deleteResponse = memberV2ApiClient_rc2.deleteResearcherUrl(getUser1OrcidId(), putCode1, accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
deleteResponse = memberV2ApiClient_rc2.deleteResearcherUrl(getUser1OrcidId(), putCode2, otherClientToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testTryingToAddInvalidResearcherUrls_rc4() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_rc4.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc4.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc4.Url(""));
rUrlToCreate.setUrlName("");
// Create
ClientResponse postResponse = memberV2ApiClient_rc4.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
String _351Chars = new String();
for (int i = 0; i < 531; i++) {
_351Chars += "a";
}
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc4.Url(_351Chars));
postResponse = memberV2ApiClient_rc4.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc4.Url("http://myurl.com"));
rUrlToCreate.setUrlName(_351Chars);
postResponse = memberV2ApiClient_rc4.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
rUrlToCreate.setUrlName("The name");
postResponse = memberV2ApiClient_rc4.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
// Read it to delete it
ClientResponse getResponse = memberV2ApiClient_rc4.viewLocationXml(postResponse.getLocation(), accessToken);
assertEquals(Response.Status.OK.getStatusCode(), getResponse.getStatus());
org.orcid.jaxb.model.record_rc4.ResearcherUrl gotResearcherUrl = getResponse.getEntity(org.orcid.jaxb.model.record_rc4.ResearcherUrl.class);
ClientResponse deleteResponse = memberV2ApiClient_rc4.deleteResearcherUrl(getUser1OrcidId(), gotResearcherUrl.getPutCode(), accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testInvalidPutCodeReturns404_rc4() throws InterruptedException, JSONException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_rc4.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_rc4.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_rc4.Url("http://newurl.com/" + System.currentTimeMillis()));
rUrlToCreate.setUrlName("url-name-" + System.currentTimeMillis());
rUrlToCreate.setVisibility(org.orcid.jaxb.model.common_rc4.Visibility.PUBLIC);
rUrlToCreate.setPutCode(1234567890L);
ClientResponse response = memberV2ApiClient_rc4.updateResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(response);
assertEquals(ClientResponse.Status.NOT_FOUND.getStatusCode(), response.getStatus());
}
/**
* --------- -- -- -- Release -- -- -- ---------
*
*/
@Test
public void testCreateGetUpdateAndDeleteResearcherUrl_release() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_v2.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_v2.ResearcherUrl();
long time = System.currentTimeMillis();
String url = "http://test.orcid.org/test/" + time;
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_v2.Url(url));
rUrlToCreate.setUrlName(url);
// Create
ClientResponse postResponse = memberV2ApiClient_release.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
String locationPath = postResponse.getLocation().getPath();
assertTrue("Location header path should match pattern, but was " + locationPath, locationPath.matches(".*/v2.0/" + getUser1OrcidId() + "/researcher-urls/\\d+"));
// Read
ClientResponse getResponse = memberV2ApiClient_release.viewLocationXml(postResponse.getLocation(), accessToken);
assertEquals(Response.Status.OK.getStatusCode(), getResponse.getStatus());
org.orcid.jaxb.model.record_v2.ResearcherUrl gotResearcherUrl = getResponse.getEntity(org.orcid.jaxb.model.record_v2.ResearcherUrl.class);
assertNotNull(gotResearcherUrl);
assertNotNull(gotResearcherUrl.getPutCode());
assertNotNull(gotResearcherUrl.getSource());
assertNotNull(gotResearcherUrl.getCreatedDate());
assertNotNull(gotResearcherUrl.getLastModifiedDate());
assertEquals(getClient1ClientId(), gotResearcherUrl.getSource().retrieveSourcePath());
assertEquals("http://test.orcid.org/test/" + time, gotResearcherUrl.getUrl().getValue());
assertEquals("http://test.orcid.org/test/" + time, gotResearcherUrl.getUrlName());
assertEquals("public", gotResearcherUrl.getVisibility().value());
assertNotNull(gotResearcherUrl.getDisplayIndex());
Long originalDisplayIndex = gotResearcherUrl.getDisplayIndex();
// Save the original visibility
org.orcid.jaxb.model.common_v2.Visibility originalVisibility = gotResearcherUrl.getVisibility();
org.orcid.jaxb.model.common_v2.Visibility updatedVisibility = org.orcid.jaxb.model.common_v2.Visibility.PRIVATE.equals(originalVisibility)
? org.orcid.jaxb.model.common_v2.Visibility.LIMITED : org.orcid.jaxb.model.common_v2.Visibility.PRIVATE;
// Verify you cant update the visibility
gotResearcherUrl.setVisibility(updatedVisibility);
ClientResponse putResponse = memberV2ApiClient_release.updateLocationXml(postResponse.getLocation(), accessToken, gotResearcherUrl);
assertEquals(Response.Status.FORBIDDEN.getStatusCode(), putResponse.getStatus());
org.orcid.jaxb.model.error_v2.OrcidError error = putResponse.getEntity(org.orcid.jaxb.model.error_v2.OrcidError.class);
assertNotNull(error);
assertEquals(Integer.valueOf(9035), error.getErrorCode());
// Set the visibility again to the initial one
gotResearcherUrl.setVisibility(originalVisibility);
// Update
org.orcid.jaxb.model.common_v2.LastModifiedDate initialLastModified = gotResearcherUrl.getLastModifiedDate();
Long currentTime = System.currentTimeMillis();
gotResearcherUrl.setUrlName(gotResearcherUrl.getUrlName() + " - " + currentTime);
gotResearcherUrl.getUrl().setValue(gotResearcherUrl.getUrl().getValue() + currentTime);
ClientResponse updatedResearcherUrlResponse = memberV2ApiClient_release.updateResearcherUrls(getUser1OrcidId(), gotResearcherUrl, accessToken);
assertNotNull(updatedResearcherUrlResponse);
assertEquals(Response.Status.OK.getStatusCode(), updatedResearcherUrlResponse.getStatus());
org.orcid.jaxb.model.record_v2.ResearcherUrl updatedResearcherUrl = updatedResearcherUrlResponse.getEntity(org.orcid.jaxb.model.record_v2.ResearcherUrl.class);
assertNotNull(updatedResearcherUrl);
assertEquals("http://test.orcid.org/test/" + time + currentTime, updatedResearcherUrl.getUrl().getValue());
assertEquals("http://test.orcid.org/test/" + time + " - " + currentTime, updatedResearcherUrl.getUrlName());
assertEquals(originalDisplayIndex, updatedResearcherUrl.getDisplayIndex());
// Keep it public, since it is more restrictive than the user visibility
// default
assertEquals(org.orcid.jaxb.model.common_v2.Visibility.PUBLIC, updatedResearcherUrl.getVisibility());
assertFalse(initialLastModified.equals(updatedResearcherUrl.getLastModifiedDate()));
// Delete
ClientResponse deleteResponse = memberV2ApiClient_release.deleteResearcherUrl(getUser1OrcidId(), gotResearcherUrl.getPutCode(), accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testCantAddDuplicatedResearcherUrl_release() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
Long now = System.currentTimeMillis();
org.orcid.jaxb.model.record_v2.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_v2.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_v2.Url("http://newurl.com/" + now));
rUrlToCreate.setUrlName("url-name-" + System.currentTimeMillis());
rUrlToCreate.setVisibility(org.orcid.jaxb.model.common_v2.Visibility.PUBLIC);
// Create it
ClientResponse postResponse = memberV2ApiClient_release.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
String location = postResponse.getHeaders().getFirst("Location");
Long putCode1 = Long.valueOf(location.substring(location.lastIndexOf('/') + 1));
// Add it again
postResponse = memberV2ApiClient_release.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CONFLICT.getStatusCode(), postResponse.getStatus());
// Check it can be created by other client
String otherClientToken = getAccessToken(getUser1OrcidId(), getUser1Password(), getScopes(ScopePathType.PERSON_UPDATE), getClient2ClientId(),
getClient2ClientSecret(), getClient2RedirectUri());
postResponse = memberV2ApiClient_release.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, otherClientToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
location = postResponse.getHeaders().getFirst("Location");
Long putCode2 = Long.valueOf(location.substring(location.lastIndexOf('/') + 1));
// Delete both
ClientResponse deleteResponse = memberV2ApiClient_rc2.deleteResearcherUrl(getUser1OrcidId(), putCode1, accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
deleteResponse = memberV2ApiClient_rc2.deleteResearcherUrl(getUser1OrcidId(), putCode2, otherClientToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testTryingToAddInvalidResearcherUrls_release() throws InterruptedException, JSONException, URISyntaxException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_v2.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_v2.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_v2.Url(""));
rUrlToCreate.setUrlName("");
// Create
ClientResponse postResponse = memberV2ApiClient_release.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
String _351Chars = new String();
for (int i = 0; i < 531; i++) {
_351Chars += "a";
}
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_v2.Url(_351Chars));
postResponse = memberV2ApiClient_release.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_v2.Url("http://myurl.com"));
rUrlToCreate.setUrlName(_351Chars);
postResponse = memberV2ApiClient_release.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), postResponse.getStatus());
rUrlToCreate.setUrlName("The name");
postResponse = memberV2ApiClient_release.createResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(postResponse);
assertEquals(Response.Status.CREATED.getStatusCode(), postResponse.getStatus());
// Read it to delete it
ClientResponse getResponse = memberV2ApiClient_release.viewLocationXml(postResponse.getLocation(), accessToken);
assertEquals(Response.Status.OK.getStatusCode(), getResponse.getStatus());
org.orcid.jaxb.model.record_v2.ResearcherUrl gotResearcherUrl = getResponse.getEntity(org.orcid.jaxb.model.record_v2.ResearcherUrl.class);
ClientResponse deleteResponse = memberV2ApiClient_release.deleteResearcherUrl(getUser1OrcidId(), gotResearcherUrl.getPutCode(), accessToken);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.getStatus());
}
@Test
public void testInvalidPutCodeReturns404_release() throws InterruptedException, JSONException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
org.orcid.jaxb.model.record_v2.ResearcherUrl rUrlToCreate = new org.orcid.jaxb.model.record_v2.ResearcherUrl();
rUrlToCreate.setUrl(new org.orcid.jaxb.model.common_v2.Url("http://newurl.com/" + System.currentTimeMillis()));
rUrlToCreate.setUrlName("url-name-" + System.currentTimeMillis());
rUrlToCreate.setVisibility(org.orcid.jaxb.model.common_v2.Visibility.PUBLIC);
rUrlToCreate.setPutCode(1234567890L);
ClientResponse response = memberV2ApiClient_release.updateResearcherUrls(getUser1OrcidId(), rUrlToCreate, accessToken);
assertNotNull(response);
assertEquals(ClientResponse.Status.NOT_FOUND.getStatusCode(), response.getStatus());
}
/**
* --------- -- -- -- ALL -- -- -- ---------
*
*/
@Test
public void testGetWithPublicAPI() throws InterruptedException, JSONException {
// RC2
boolean found = false;
ClientResponse getAllResponse = publicV2ApiClient_rc2.viewResearcherUrlsXML(getUser1OrcidId());
assertNotNull(getAllResponse);
org.orcid.jaxb.model.record_rc2.ResearcherUrls researcherUrls_rc2 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc2.ResearcherUrls.class);
assertNotNull(researcherUrls_rc2);
assertNotNull(researcherUrls_rc2.getResearcherUrls());
for (org.orcid.jaxb.model.record_rc2.ResearcherUrl rUrl : researcherUrls_rc2.getResearcherUrls()) {
assertEquals(org.orcid.jaxb.model.common_rc2.Visibility.PUBLIC, rUrl.getVisibility());
if (researcherUrl1.equals(rUrl.getUrl().getValue())) {
found = true;
}
}
assertTrue(found);
// RC3
found = false;
getAllResponse = publicV2ApiClient_rc3.viewResearcherUrlsXML(getUser1OrcidId());
assertNotNull(getAllResponse);
org.orcid.jaxb.model.record_rc3.ResearcherUrls researcherUrls_rc3 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc3.ResearcherUrls.class);
assertNotNull(researcherUrls_rc3);
assertNotNull(researcherUrls_rc3.getResearcherUrls());
for (org.orcid.jaxb.model.record_rc3.ResearcherUrl rUrl : researcherUrls_rc3.getResearcherUrls()) {
assertEquals(org.orcid.jaxb.model.common_rc3.Visibility.PUBLIC, rUrl.getVisibility());
if (researcherUrl1.equals(rUrl.getUrl().getValue())) {
found = true;
}
}
assertTrue(found);
// RC4
found = false;
getAllResponse = publicV2ApiClient_rc4.viewResearcherUrlsXML(getUser1OrcidId());
assertNotNull(getAllResponse);
org.orcid.jaxb.model.record_rc4.ResearcherUrls researcherUrls_rc4 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc4.ResearcherUrls.class);
assertNotNull(researcherUrls_rc4);
assertNotNull(researcherUrls_rc4.getResearcherUrls());
for (org.orcid.jaxb.model.record_rc4.ResearcherUrl rUrl : researcherUrls_rc4.getResearcherUrls()) {
assertEquals(org.orcid.jaxb.model.common_rc4.Visibility.PUBLIC, rUrl.getVisibility());
if (researcherUrl1.equals(rUrl.getUrl().getValue())) {
found = true;
}
}
assertTrue(found);
// Release
found = false;
getAllResponse = publicV2ApiClient_release.viewResearcherUrlsXML(getUser1OrcidId());
assertNotNull(getAllResponse);
org.orcid.jaxb.model.record_v2.ResearcherUrls researcherUrls_v2 = getAllResponse.getEntity(org.orcid.jaxb.model.record_v2.ResearcherUrls.class);
assertNotNull(researcherUrls_v2);
assertNotNull(researcherUrls_v2.getResearcherUrls());
for (org.orcid.jaxb.model.record_v2.ResearcherUrl rUrl : researcherUrls_v2.getResearcherUrls()) {
assertEquals(org.orcid.jaxb.model.common_v2.Visibility.PUBLIC, rUrl.getVisibility());
if (researcherUrl1.equals(rUrl.getUrl().getValue())) {
found = true;
}
}
assertTrue(found);
// SET ALL TO LIMITED
showMyOrcidPage();
openEditResearcherUrlsModal();
changeResearcherUrlsVisibility(org.orcid.jaxb.model.common_v2.Visibility.LIMITED);
saveResearcherUrlsModal();
// RC2
getAllResponse = publicV2ApiClient_rc2.viewResearcherUrlsXML(getUser1OrcidId());
assertNotNull(getAllResponse);
researcherUrls_rc2 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc2.ResearcherUrls.class);
assertNotNull(researcherUrls_rc2);
assertNull(researcherUrls_rc2.getResearcherUrls());
// RC3
getAllResponse = publicV2ApiClient_rc3.viewResearcherUrlsXML(getUser1OrcidId());
assertNotNull(getAllResponse);
researcherUrls_rc3 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc3.ResearcherUrls.class);
assertNotNull(researcherUrls_rc3);
assertNull(researcherUrls_rc3.getResearcherUrls());
// RC4
getAllResponse = publicV2ApiClient_rc4.viewResearcherUrlsXML(getUser1OrcidId());
assertNotNull(getAllResponse);
researcherUrls_rc4 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc4.ResearcherUrls.class);
assertNotNull(researcherUrls_rc4);
assertNotNull(researcherUrls_rc4.getResearcherUrls());
assertTrue(researcherUrls_rc4.getResearcherUrls().isEmpty());
// Release
getAllResponse = publicV2ApiClient_release.viewResearcherUrlsXML(getUser1OrcidId());
assertNotNull(getAllResponse);
researcherUrls_v2 = getAllResponse.getEntity(org.orcid.jaxb.model.record_v2.ResearcherUrls.class);
assertNotNull(researcherUrls_v2);
assertNotNull(researcherUrls_v2.getResearcherUrls());
assertTrue(researcherUrls_v2.getResearcherUrls().isEmpty());
// SET THEM ALL TO PUBLIC BEFORE FINISHING THE TEST
showMyOrcidPage();
openEditResearcherUrlsModal();
changeResearcherUrlsVisibility(org.orcid.jaxb.model.common_v2.Visibility.PUBLIC);
saveResearcherUrlsModal();
}
@Test
public void testGetWithMembersAPI() throws InterruptedException, JSONException {
String accessToken = getAccessToken();
assertNotNull(accessToken);
// SET THEM ALL TO LIMITED
showMyOrcidPage();
openEditResearcherUrlsModal();
changeResearcherUrlsVisibility(org.orcid.jaxb.model.common_v2.Visibility.LIMITED);
saveResearcherUrlsModal();
// RC2
ClientResponse getAllResponse = memberV2ApiClient_rc2.getResearcherUrls(getUser1OrcidId(), accessToken);
assertNotNull(getAllResponse);
org.orcid.jaxb.model.record_rc2.ResearcherUrls researcherUrls_rc2 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc2.ResearcherUrls.class);
assertNotNull(researcherUrls_rc2);
assertNotNull(researcherUrls_rc2.getResearcherUrls());
assertEquals(1, researcherUrls_rc2.getResearcherUrls().size());
assertNotNull(researcherUrls_rc2.getResearcherUrls().get(0).getUrl());
assertEquals(researcherUrl1, researcherUrls_rc2.getResearcherUrls().get(0).getUrl().getValue());
// RC3
getAllResponse = memberV2ApiClient_rc3.getResearcherUrls(getUser1OrcidId(), accessToken);
assertNotNull(getAllResponse);
org.orcid.jaxb.model.record_rc3.ResearcherUrls researcherUrls_rc3 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc3.ResearcherUrls.class);
assertNotNull(researcherUrls_rc3);
assertNotNull(researcherUrls_rc3.getResearcherUrls());
assertEquals(1, researcherUrls_rc3.getResearcherUrls().size());
assertNotNull(researcherUrls_rc3.getResearcherUrls().get(0).getUrl());
assertEquals(researcherUrl1, researcherUrls_rc3.getResearcherUrls().get(0).getUrl().getValue());
// RC4
getAllResponse = memberV2ApiClient_rc4.getResearcherUrls(getUser1OrcidId(), accessToken);
assertNotNull(getAllResponse);
org.orcid.jaxb.model.record_rc4.ResearcherUrls researcherUrls_rc4 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc4.ResearcherUrls.class);
assertNotNull(researcherUrls_rc4);
assertNotNull(researcherUrls_rc4.getResearcherUrls());
assertEquals(1, researcherUrls_rc4.getResearcherUrls().size());
assertNotNull(researcherUrls_rc4.getResearcherUrls().get(0).getUrl());
assertEquals(researcherUrl1, researcherUrls_rc4.getResearcherUrls().get(0).getUrl().getValue());
// Release
getAllResponse = memberV2ApiClient_release.getResearcherUrls(getUser1OrcidId(), accessToken);
assertNotNull(getAllResponse);
org.orcid.jaxb.model.record_v2.ResearcherUrls researcherUrls_v2 = getAllResponse.getEntity(org.orcid.jaxb.model.record_v2.ResearcherUrls.class);
assertNotNull(researcherUrls_v2);
assertNotNull(researcherUrls_v2.getResearcherUrls());
assertEquals(1, researcherUrls_v2.getResearcherUrls().size());
assertNotNull(researcherUrls_v2.getResearcherUrls().get(0).getUrl());
assertEquals(researcherUrl1, researcherUrls_v2.getResearcherUrls().get(0).getUrl().getValue());
// SET THEM ALL TO PRIVATE
showMyOrcidPage();
openEditResearcherUrlsModal();
changeResearcherUrlsVisibility(org.orcid.jaxb.model.common_v2.Visibility.PRIVATE);
saveResearcherUrlsModal();
// RC2
getAllResponse = memberV2ApiClient_rc2.getResearcherUrls(getUser1OrcidId(), accessToken);
assertNotNull(getAllResponse);
researcherUrls_rc2 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc2.ResearcherUrls.class);
assertNotNull(researcherUrls_rc2);
assertNull(researcherUrls_rc2.getResearcherUrls());
// RC3
getAllResponse = memberV2ApiClient_rc3.getResearcherUrls(getUser1OrcidId(), accessToken);
assertNotNull(getAllResponse);
researcherUrls_rc3 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc3.ResearcherUrls.class);
assertNotNull(researcherUrls_rc3);
assertNull(researcherUrls_rc3.getResearcherUrls());
// RC4
getAllResponse = memberV2ApiClient_rc4.getResearcherUrls(getUser1OrcidId(), accessToken);
assertNotNull(getAllResponse);
researcherUrls_rc4 = getAllResponse.getEntity(org.orcid.jaxb.model.record_rc4.ResearcherUrls.class);
assertNotNull(researcherUrls_rc4);
assertNotNull(researcherUrls_rc4.getResearcherUrls());
assertTrue(researcherUrls_rc4.getResearcherUrls().isEmpty());
// Release
getAllResponse = memberV2ApiClient_release.getResearcherUrls(getUser1OrcidId(), accessToken);
assertNotNull(getAllResponse);
researcherUrls_v2 = getAllResponse.getEntity(org.orcid.jaxb.model.record_v2.ResearcherUrls.class);
assertNotNull(researcherUrls_v2);
assertNotNull(researcherUrls_v2.getResearcherUrls());
assertTrue(researcherUrls_v2.getResearcherUrls().isEmpty());
// SET THEM ALL TO PUBLIC BEFORE FINISHING THE TEST
showMyOrcidPage();
openEditResearcherUrlsModal();
changeResearcherUrlsVisibility(org.orcid.jaxb.model.common_v2.Visibility.PUBLIC);
saveResearcherUrlsModal();
}
public String getAccessToken() throws InterruptedException, JSONException {
return getAccessToken(getScopes(ScopePathType.PERSON_UPDATE, ScopePathType.PERSON_READ_LIMITED));
}
}