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