001/**
002 * Copyright 2015 DuraSpace, Inc.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.fcrepo.client;
017
018import static org.junit.Assert.assertEquals;
019
020import java.net.URI;
021
022import org.junit.Test;
023import org.junit.runner.RunWith;
024import org.mockito.runners.MockitoJUnitRunner;
025
026/**
027 * @author acoburn
028 */
029@RunWith(MockitoJUnitRunner.class)
030public class FcrepoLinkTest {
031
032    @Test
033    public void testLink() {
034        final String url = "http://localhost/rest/a/b/c";
035        final String rel = "describedby";
036        final String header = String.format("<%s>; rel=\"%s\"", url, rel);
037        final FcrepoLink link = new FcrepoLink(header);
038        assertEquals(URI.create(url), link.getUri());
039        assertEquals(url, link.getUri().toString());
040        assertEquals(rel, link.getRel());
041    }
042
043    @Test
044    public void testLinkNoQuotes() {
045        final String url = "http://localhost/rest/a/b/c";
046        final String rel = "describedby";
047        final String header = String.format("<%s>; rel=%s", url, rel);
048        final FcrepoLink link = new FcrepoLink(header);
049        assertEquals(URI.create(url), link.getUri());
050        assertEquals(url, link.getUri().toString());
051        assertEquals(rel, link.getRel());
052    }
053
054    @Test
055    public void testLinkNoBrackets() {
056        final String url = "http://localhost/rest/a/b/c";
057        final String rel = "describedby";
058        final String header = String.format("%s; rel=%s", url, rel);
059        final FcrepoLink link = new FcrepoLink(header);
060        assertEquals(null, link.getUri());
061        assertEquals(null, link.getRel());
062    }
063
064    @Test
065    public void testLinkBadBrackets1() {
066        final String url = "http://localhost/rest/a/b/c";
067        final String rel = "describedby";
068        final String header = String.format("<%s; rel=%s", url, rel);
069        final FcrepoLink link = new FcrepoLink(header);
070        assertEquals(null, link.getUri());
071        assertEquals(null, link.getRel());
072    }
073
074    @Test
075    public void testLinkBadBrackets2() {
076        final String url = "http://localhost/rest/a/b/c";
077        final String rel = "describedby";
078        final String header = String.format("%s>; rel=%s", url, rel);
079        final FcrepoLink link = new FcrepoLink(header);
080        assertEquals(null, link.getUri());
081        assertEquals(null, link.getRel());
082    }
083
084    @Test
085    public void testLinkBadQuotes() {
086        final String url = "http://localhost/rest/a/b/c";
087        final String rel = "describedby";
088        final String header = String.format("<%s>; rel=\"%s", url, rel);
089        final FcrepoLink link = new FcrepoLink(header);
090        assertEquals(URI.create(url), link.getUri());
091        assertEquals("\"" + rel, link.getRel());
092    }
093
094
095    @Test
096    public void testNullLink() {
097        final FcrepoLink link = new FcrepoLink(null);
098        assertEquals(null, link.getUri());
099        assertEquals(null, link.getRel());
100    }
101
102    @Test
103    public void testMultipleSegments() {
104        final FcrepoLink link = new FcrepoLink("<a>; rel=foo; bar=bar");
105        assertEquals(URI.create("a"), link.getUri());
106        assertEquals("foo", link.getRel());
107    }
108
109    @Test
110    public void testMultipleMeta() {
111        final FcrepoLink link = new FcrepoLink("<a>; rel=foo=bar");
112        assertEquals(URI.create("a"), link.getUri());
113        assertEquals(null, link.getRel());
114    }
115
116    @Test
117    public void testNotMetaRel() {
118        final FcrepoLink link = new FcrepoLink("<a>; foo=bar");
119        assertEquals(URI.create("a"), link.getUri());
120        assertEquals(null, link.getRel());
121    }
122}