/** * ============================================================================= * * 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.analytics; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.net.URI; import javax.ws.rs.core.HttpHeaders; import org.junit.Test; import com.sun.jersey.core.header.InBoundHeaders; import com.sun.jersey.server.impl.application.WebApplicationImpl; import com.sun.jersey.spi.container.ContainerRequest; public class APIEndpointParserTest { @Test public void testAPIEndpointParserWithApiVersionAndOrcid() { ContainerRequest request = getRequest("https://localhost:8443/orcid-api-web/v2.0/1234-4321-1234-4321/works"); APIEndpointParser parser = new APIEndpointParser(request); assertEquals("v2.0", parser.getApiVersion()); assertEquals("works", parser.getCategory()); assertEquals("1234-4321-1234-4321", parser.getOrcidId()); } @Test public void testAPIEndpointParserWithApiVersionWithoutOrcid() { ContainerRequest request = getRequest("https://localhost:8443/orcid-api-web/v1.2/orcid-profile"); APIEndpointParser parser = new APIEndpointParser(request); assertEquals("v1.2", parser.getApiVersion()); assertEquals("orcid-profile", parser.getCategory()); assertNull(parser.getOrcidId()); } @Test public void testAPIEndpointParserWithoutApiVersionOrOrcid() { ContainerRequest request = getRequest("https://localhost:8443/orcid-api-web/oauth/token"); APIEndpointParser parser = new APIEndpointParser(request); assertNotNull(parser.getApiVersion()); assertEquals("", parser.getApiVersion()); assertEquals("oauth", parser.getCategory()); assertNull(parser.getOrcidId()); } @Test public void testAPIEndpointParserWithoutApiVersionWithOrcid() { ContainerRequest request = getRequest("https://localhost:8443/orcid-api-web/1234-4321-1234-4321/orcid-bio"); APIEndpointParser parser = new APIEndpointParser(request); assertNotNull(parser.getApiVersion()); assertEquals("", parser.getApiVersion()); assertEquals("orcid-bio", parser.getCategory()); assertEquals("1234-4321-1234-4321", parser.getOrcidId()); } @Test public void testAPIEndpointParserNoCategoryV2() { ContainerRequest request = getRequest("https://localhost:8443/orcid-api-web/v2.0/1234-4321-1234-4321"); APIEndpointParser parser = new APIEndpointParser(request); assertEquals("v2.0", parser.getApiVersion()); assertEquals("record", parser.getCategory()); assertEquals("1234-4321-1234-4321", parser.getOrcidId()); } @Test public void testAPIEndpointParserNoCategoryV1() { ContainerRequest request = getRequest("https://localhost:8443/orcid-api-web/v1.2/1234-4321-1234-4321"); APIEndpointParser parser = new APIEndpointParser(request); assertEquals("v1.2", parser.getApiVersion()); assertEquals("orcid-bio", parser.getCategory()); assertEquals("1234-4321-1234-4321", parser.getOrcidId()); } @Test public void testAPIEndpointParserNoCategoryOrVersion() { ContainerRequest request = getRequest("https://localhost:8443/orcid-api-web/1234-4321-1234-4321"); APIEndpointParser parser = new APIEndpointParser(request); assertNotNull(parser.getApiVersion()); assertEquals("", parser.getApiVersion()); assertEquals("orcid-bio", parser.getCategory()); assertEquals("1234-4321-1234-4321", parser.getOrcidId()); } private ContainerRequest getRequest(String url) { InBoundHeaders headers = new InBoundHeaders(); headers.add(HttpHeaders.CONTENT_TYPE, "application/xml"); headers.add(HttpHeaders.USER_AGENT, "blah"); headers.add("X-FORWARDED-FOR", "37.14.150.83"); return new ContainerRequest(new WebApplicationImpl(), "POST", URI.create("https://localhost:8443/orcid-api-web/"), URI.create(url), headers, null); } }