From bee02810f696477adaa92d23c7fab5058abf15f1 Mon Sep 17 00:00:00 2001 From: Michael Wirth Date: Mon, 1 Apr 2019 21:03:41 +0200 Subject: [PATCH] #971 - Only expand templated links with Traverson when requested. --- .../springframework/hateoas/client/Server.java | 6 ++++++ .../hateoas/client/TraversonTest.java | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/test/java/org/springframework/hateoas/client/Server.java b/src/test/java/org/springframework/hateoas/client/Server.java index 2b788a93..bde0961e 100644 --- a/src/test/java/org/springframework/hateoas/client/Server.java +++ b/src/test/java/org/springframework/hateoas/client/Server.java @@ -100,6 +100,12 @@ public class Server implements Closeable { withBody("{ \"_links\" : { \"self\" : { \"href\" : \"/{?template}\" }}}"). // withContentType(MediaTypes.HAL_JSON.toString()); + onRequest(). // + havingPathEqualTo("/github-with-template"). // + respond(). // + withBody("{ \"foo_url_templated\" : \"" + rootResource() + "/github/{issue}\"}"). // + withContentType(MediaTypes.HAL_JSON.toString()); + // Sample traversal of HAL docs based on Spring-a-Gram showcase ResourceLoader resourceLoader = new DefaultResourceLoader(); org.springframework.core.io.Resource springagramRoot = resourceLoader diff --git a/src/test/java/org/springframework/hateoas/client/TraversonTest.java b/src/test/java/org/springframework/hateoas/client/TraversonTest.java index 98cd5fdf..ac25340a 100755 --- a/src/test/java/org/springframework/hateoas/client/TraversonTest.java +++ b/src/test/java/org/springframework/hateoas/client/TraversonTest.java @@ -247,6 +247,23 @@ public class TraversonTest { assertThat(link.isTemplated()).isFalse(); } + @Test + public void returnsTemplatedRequiredLinkIfRequested() { + + TraversalBuilder follow = new Traverson(URI.create(server.rootResource().concat("/github-with-template")), MediaTypes.HAL_JSON) + .follow("foo_url_templated"); + + Link link = follow.asTemplatedLink(); + + assertThat(link.isTemplated()).isTrue(); + assertThat(link.getVariableNames()).contains("template"); + + link = follow.asLink(); + + assertThat(link.isTemplated()).isFalse(); + } + + /** * @see #258 */