DATAREST-318 - BaseUri now correctly strips template variables from request.

Bugfix in BaseUri to correctly strip template variables when the repository lookup path is obtained from a NativeWebRequest.
This commit is contained in:
Oliver Gierke
2014-06-12 12:43:00 +02:00
parent 3969c34940
commit 59beb1db1a
2 changed files with 15 additions and 4 deletions

View File

@@ -23,7 +23,6 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.hateoas.UriTemplate;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.NativeWebRequest;
@@ -87,7 +86,6 @@ public class BaseUri {
private String getRepositoryLookupPath(HttpServletRequest request) {
String lookupPath = URL_PATH_HELPER.getLookupPathForRequest(request);
lookupPath = new UriTemplate(lookupPath).expand().toString();
return getRepositoryLookupPath(lookupPath);
}

View File

@@ -21,6 +21,8 @@ import static org.junit.Assert.*;
import java.net.URI;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.web.context.request.ServletWebRequest;
/**
* Unit tests for {@link BaseUri}.
@@ -92,10 +94,21 @@ public class BaseUriUnitTests {
* @see DATAREST-300
*/
@Test
public void stripsTemplatePlaceholders() {
public void stripsTemplateVariablesFromPath() {
BaseUri uri = new BaseUri(URI.create("foo"));
assertThat(uri.getRepositoryLookupPath("/foo/bar{?projection}"), is("/bar"));
}
/**
* @see DATAREST-318
*/
@Test
public void stripsTemplateVariablesFromRequest() {
BaseUri uri = new BaseUri(URI.create("foo"));
assertThat(uri.getRepositoryLookupPath("/foo/bar{?projection}"), is("/bar"));
ServletWebRequest request = new ServletWebRequest(new MockHttpServletRequest("GET", "/foo/bar{?projection}"));
assertThat(uri.getRepositoryLookupPath(request), is("/bar"));
}
}