package org.jboss.resteasy.test.client; import org.jboss.resteasy.client.LinkHeaderDelegate; import org.jboss.resteasy.client.Link; import org.jboss.resteasy.client.LinkHeader; import org.junit.Assert; import org.junit.Test; /** * @tpSubChapter Resteasy-client * @tpChapter Client tests * @tpTestCaseDetails Test for LinkHeader (it use deprecated Link). Test also new Link provided by jax-rs 2.0 spec * @tpSince RESTEasy 3.0.16 */ public class LinkHeaderTest { /** * @tpTestDetails Test for deprecated Link, LinkHeader and LinkHeaderDelegate. Basic test. * @tpSince RESTEasy 3.0.16 */ @Test public void testTopic() throws Exception { LinkHeaderDelegate delegate = new LinkHeaderDelegate(); LinkHeader header = delegate.fromString("<http://localhost:8081/linkheader/topic/sender>; rel=\"sender\"; title=\"sender\", <http://localhost:8081/linkheader/topic/poller>; rel=\"top-message\"; title=\"top-message\""); Link sender = header.getLinkByTitle("sender"); Assert.assertNotNull("Link should not be null", sender); Assert.assertEquals("Wrong url", "http://localhost:8081/linkheader/topic/sender", sender.getHref()); Assert.assertEquals("Wrong rel", "sender", sender.getRelationship()); Link top = header.getLinkByTitle("top-message"); Assert.assertNotNull(top); Assert.assertEquals("Wrong URL in link", "http://localhost:8081/linkheader/topic/poller", top.getHref()); Assert.assertEquals("Wrong rel in link", "top-message", top.getRelationship()); } /** * @tpTestDetails Test for deprecated Link, LinkHeader and LinkHeaderDelegate. More complex URLs are used. * @tpSince RESTEasy 3.0.16 */ @Test public void testTopicComplex() throws Exception { LinkHeaderDelegate delegate = new LinkHeaderDelegate(); LinkHeader header = delegate.fromString("<http://localhost:8081/topics/test/poller/next?index=0>; rel=\"next-message\"; title=\"next-message\",<http://localhost:8081/topics/test/poller>; rel=\"generator\"; title=\"generator\""); Link next = header.getLinkByTitle("next-message"); Assert.assertNotNull("Link is not found", next); Assert.assertEquals("Wrong URL in link", "http://localhost:8081/topics/test/poller/next?index=0", next.getHref()); Assert.assertEquals("Wrong rel in link", "next-message", next.getRelationship()); Link generator = header.getLinkByTitle("generator"); Assert.assertNotNull(generator); Assert.assertEquals("Wrong URL in link", "http://localhost:8081/topics/test/poller", generator.getHref()); Assert.assertEquals("Wrong rel in link", "generator", generator.getRelationship()); } /** * @tpTestDetails Test add method in LinkHeader class. * @tpSince RESTEasy 3.0.16 */ @Test public void testAdd() { final LinkHeader linkHeader = new LinkHeader(); Assert.assertEquals("Wrong size of linkHeader", linkHeader.getLinks().size(), 0); linkHeader.addLink(new Link("one", "resl-1", "href-1", null, null)); Assert.assertEquals("Wrong size of linkHeader", linkHeader.getLinks().size(), 1); linkHeader.addLink(new Link("two", "resl-2", "href-2", null, null)); Assert.assertEquals("Wrong size of linkHeader", linkHeader.getLinks().size(), 2); } /** * @tpTestDetails Test new client without API and old client with API * @tpSince RESTEasy 3.0.16 */ @Test public void testLinkheader() throws Exception { LinkHeaderDelegate delegate = new LinkHeaderDelegate(); LinkHeader header = delegate.fromString("<http://example.com/TheBook/chapter2>; rel=\"previous\";\n" + " title=\"previous chapter\""); Assert.assertTrue("Link is not present", header.getLinksByTitle().containsKey("previous chapter")); Assert.assertTrue("Wrong link", header.getLinksByRelationship().containsKey("previous")); Assert.assertEquals("Wrong link", header.getLinksByTitle().get("previous chapter").getHref(), "http://example.com/TheBook/chapter2"); String str = delegate.toString(header); header = delegate.fromString(str); Assert.assertTrue("Wrong link", header.getLinksByTitle().containsKey("previous chapter")); Assert.assertTrue("Wrong link", header.getLinksByRelationship().containsKey("previous")); Assert.assertEquals("Wrong link", header.getLinksByTitle().get("previous chapter").getHref(), "http://example.com/TheBook/chapter2"); } }