Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
4e70cd29
Commit
4e70cd29
authored
Jan 19, 2017
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.4.x' into 1.5.x
parents
531cf5d4
b7a02e72
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
280 additions
and
15 deletions
+280
-15
TestRestTemplate.java
...pringframework/boot/test/web/client/TestRestTemplate.java
+29
-15
TestRestTemplateTests.java
...framework/boot/test/web/client/TestRestTemplateTests.java
+251
-0
No files found.
spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java
View file @
4e70cd29
...
@@ -217,7 +217,7 @@ public class TestRestTemplate {
...
@@ -217,7 +217,7 @@ public class TestRestTemplate {
* @see RestTemplate#getForObject(java.net.URI, java.lang.Class)
* @see RestTemplate#getForObject(java.net.URI, java.lang.Class)
*/
*/
public
<
T
>
T
getForObject
(
URI
url
,
Class
<
T
>
responseType
)
throws
RestClientException
{
public
<
T
>
T
getForObject
(
URI
url
,
Class
<
T
>
responseType
)
throws
RestClientException
{
return
this
.
restTemplate
.
getForObject
(
url
,
responseType
);
return
this
.
restTemplate
.
getForObject
(
url
.
toString
()
,
responseType
);
}
}
/**
/**
...
@@ -269,7 +269,7 @@ public class TestRestTemplate {
...
@@ -269,7 +269,7 @@ public class TestRestTemplate {
*/
*/
public
<
T
>
ResponseEntity
<
T
>
getForEntity
(
URI
url
,
Class
<
T
>
responseType
)
public
<
T
>
ResponseEntity
<
T
>
getForEntity
(
URI
url
,
Class
<
T
>
responseType
)
throws
RestClientException
{
throws
RestClientException
{
return
this
.
restTemplate
.
getForEntity
(
url
,
responseType
);
return
this
.
restTemplate
.
getForEntity
(
url
.
toString
()
,
responseType
);
}
}
/**
/**
...
@@ -310,7 +310,7 @@ public class TestRestTemplate {
...
@@ -310,7 +310,7 @@ public class TestRestTemplate {
* @see RestTemplate#headForHeaders(java.net.URI)
* @see RestTemplate#headForHeaders(java.net.URI)
*/
*/
public
HttpHeaders
headForHeaders
(
URI
url
)
throws
RestClientException
{
public
HttpHeaders
headForHeaders
(
URI
url
)
throws
RestClientException
{
return
this
.
restTemplate
.
headForHeaders
(
url
);
return
this
.
restTemplate
.
headForHeaders
(
url
.
toString
()
);
}
}
/**
/**
...
@@ -374,7 +374,7 @@ public class TestRestTemplate {
...
@@ -374,7 +374,7 @@ public class TestRestTemplate {
* @see RestTemplate#postForLocation(java.net.URI, java.lang.Object)
* @see RestTemplate#postForLocation(java.net.URI, java.lang.Object)
*/
*/
public
URI
postForLocation
(
URI
url
,
Object
request
)
throws
RestClientException
{
public
URI
postForLocation
(
URI
url
,
Object
request
)
throws
RestClientException
{
return
this
.
restTemplate
.
postForLocation
(
url
,
request
);
return
this
.
restTemplate
.
postForLocation
(
url
.
toString
()
,
request
);
}
}
/**
/**
...
@@ -442,7 +442,7 @@ public class TestRestTemplate {
...
@@ -442,7 +442,7 @@ public class TestRestTemplate {
*/
*/
public
<
T
>
T
postForObject
(
URI
url
,
Object
request
,
Class
<
T
>
responseType
)
public
<
T
>
T
postForObject
(
URI
url
,
Object
request
,
Class
<
T
>
responseType
)
throws
RestClientException
{
throws
RestClientException
{
return
this
.
restTemplate
.
postForObject
(
url
,
request
,
responseType
);
return
this
.
restTemplate
.
postForObject
(
url
.
toString
()
,
request
,
responseType
);
}
}
/**
/**
...
@@ -511,7 +511,7 @@ public class TestRestTemplate {
...
@@ -511,7 +511,7 @@ public class TestRestTemplate {
*/
*/
public
<
T
>
ResponseEntity
<
T
>
postForEntity
(
URI
url
,
Object
request
,
public
<
T
>
ResponseEntity
<
T
>
postForEntity
(
URI
url
,
Object
request
,
Class
<
T
>
responseType
)
throws
RestClientException
{
Class
<
T
>
responseType
)
throws
RestClientException
{
return
this
.
restTemplate
.
postForEntity
(
url
,
request
,
responseType
);
return
this
.
restTemplate
.
postForEntity
(
url
.
toString
()
,
request
,
responseType
);
}
}
/**
/**
...
@@ -564,7 +564,7 @@ public class TestRestTemplate {
...
@@ -564,7 +564,7 @@ public class TestRestTemplate {
* @see RestTemplate#put(java.net.URI, java.lang.Object)
* @see RestTemplate#put(java.net.URI, java.lang.Object)
*/
*/
public
void
put
(
URI
url
,
Object
request
)
throws
RestClientException
{
public
void
put
(
URI
url
,
Object
request
)
throws
RestClientException
{
this
.
restTemplate
.
put
(
url
,
request
);
this
.
restTemplate
.
put
(
url
.
toString
()
,
request
);
}
}
/**
/**
...
@@ -630,7 +630,7 @@ public class TestRestTemplate {
...
@@ -630,7 +630,7 @@ public class TestRestTemplate {
*/
*/
public
<
T
>
T
patchForObject
(
URI
url
,
Object
request
,
Class
<
T
>
responseType
)
public
<
T
>
T
patchForObject
(
URI
url
,
Object
request
,
Class
<
T
>
responseType
)
throws
RestClientException
{
throws
RestClientException
{
return
this
.
restTemplate
.
patchForObject
(
url
,
request
,
responseType
);
return
this
.
restTemplate
.
patchForObject
(
url
.
toString
()
,
request
,
responseType
);
}
}
...
@@ -668,7 +668,7 @@ public class TestRestTemplate {
...
@@ -668,7 +668,7 @@ public class TestRestTemplate {
* @see RestTemplate#delete(java.net.URI)
* @see RestTemplate#delete(java.net.URI)
*/
*/
public
void
delete
(
URI
url
)
throws
RestClientException
{
public
void
delete
(
URI
url
)
throws
RestClientException
{
this
.
restTemplate
.
delete
(
url
);
this
.
restTemplate
.
delete
(
url
.
toString
()
);
}
}
/**
/**
...
@@ -709,7 +709,7 @@ public class TestRestTemplate {
...
@@ -709,7 +709,7 @@ public class TestRestTemplate {
* @see RestTemplate#optionsForAllow(java.net.URI)
* @see RestTemplate#optionsForAllow(java.net.URI)
*/
*/
public
Set
<
HttpMethod
>
optionsForAllow
(
URI
url
)
throws
RestClientException
{
public
Set
<
HttpMethod
>
optionsForAllow
(
URI
url
)
throws
RestClientException
{
return
this
.
restTemplate
.
optionsForAllow
(
url
);
return
this
.
restTemplate
.
optionsForAllow
(
url
.
toString
()
);
}
}
/**
/**
...
@@ -777,7 +777,8 @@ public class TestRestTemplate {
...
@@ -777,7 +777,8 @@ public class TestRestTemplate {
public
<
T
>
ResponseEntity
<
T
>
exchange
(
URI
url
,
HttpMethod
method
,
public
<
T
>
ResponseEntity
<
T
>
exchange
(
URI
url
,
HttpMethod
method
,
HttpEntity
<?>
requestEntity
,
Class
<
T
>
responseType
)
HttpEntity
<?>
requestEntity
,
Class
<
T
>
responseType
)
throws
RestClientException
{
throws
RestClientException
{
return
this
.
restTemplate
.
exchange
(
url
,
method
,
requestEntity
,
responseType
);
return
this
.
restTemplate
.
exchange
(
url
.
toString
(),
method
,
requestEntity
,
responseType
);
}
}
/**
/**
...
@@ -859,7 +860,8 @@ public class TestRestTemplate {
...
@@ -859,7 +860,8 @@ public class TestRestTemplate {
public
<
T
>
ResponseEntity
<
T
>
exchange
(
URI
url
,
HttpMethod
method
,
public
<
T
>
ResponseEntity
<
T
>
exchange
(
URI
url
,
HttpMethod
method
,
HttpEntity
<?>
requestEntity
,
ParameterizedTypeReference
<
T
>
responseType
)
HttpEntity
<?>
requestEntity
,
ParameterizedTypeReference
<
T
>
responseType
)
throws
RestClientException
{
throws
RestClientException
{
return
this
.
restTemplate
.
exchange
(
url
,
method
,
requestEntity
,
responseType
);
return
this
.
restTemplate
.
exchange
(
url
.
toString
(),
method
,
requestEntity
,
responseType
);
}
}
/**
/**
...
@@ -879,7 +881,8 @@ public class TestRestTemplate {
...
@@ -879,7 +881,8 @@ public class TestRestTemplate {
*/
*/
public
<
T
>
ResponseEntity
<
T
>
exchange
(
RequestEntity
<?>
requestEntity
,
public
<
T
>
ResponseEntity
<
T
>
exchange
(
RequestEntity
<?>
requestEntity
,
Class
<
T
>
responseType
)
throws
RestClientException
{
Class
<
T
>
responseType
)
throws
RestClientException
{
return
this
.
restTemplate
.
exchange
(
requestEntity
,
responseType
);
return
this
.
restTemplate
.
exchange
(
createRequestEntityWithExpandedUri
(
requestEntity
),
responseType
);
}
}
/**
/**
...
@@ -901,7 +904,8 @@ public class TestRestTemplate {
...
@@ -901,7 +904,8 @@ public class TestRestTemplate {
*/
*/
public
<
T
>
ResponseEntity
<
T
>
exchange
(
RequestEntity
<?>
requestEntity
,
public
<
T
>
ResponseEntity
<
T
>
exchange
(
RequestEntity
<?>
requestEntity
,
ParameterizedTypeReference
<
T
>
responseType
)
throws
RestClientException
{
ParameterizedTypeReference
<
T
>
responseType
)
throws
RestClientException
{
return
this
.
restTemplate
.
exchange
(
requestEntity
,
responseType
);
return
this
.
restTemplate
.
exchange
(
createRequestEntityWithExpandedUri
(
requestEntity
),
responseType
);
}
}
/**
/**
...
@@ -968,7 +972,8 @@ public class TestRestTemplate {
...
@@ -968,7 +972,8 @@ public class TestRestTemplate {
*/
*/
public
<
T
>
T
execute
(
URI
url
,
HttpMethod
method
,
RequestCallback
requestCallback
,
public
<
T
>
T
execute
(
URI
url
,
HttpMethod
method
,
RequestCallback
requestCallback
,
ResponseExtractor
<
T
>
responseExtractor
)
throws
RestClientException
{
ResponseExtractor
<
T
>
responseExtractor
)
throws
RestClientException
{
return
this
.
restTemplate
.
execute
(
url
,
method
,
requestCallback
,
responseExtractor
);
return
this
.
restTemplate
.
execute
(
url
.
toString
(),
method
,
requestCallback
,
responseExtractor
);
}
}
/**
/**
...
@@ -1002,6 +1007,15 @@ public class TestRestTemplate {
...
@@ -1002,6 +1007,15 @@ public class TestRestTemplate {
return
testRestTemplate
;
return
testRestTemplate
;
}
}
@SuppressWarnings
({
"rawtypes"
,
"unchecked"
})
private
RequestEntity
<?>
createRequestEntityWithExpandedUri
(
RequestEntity
<?>
requestEntity
)
{
URI
expandedUri
=
this
.
restTemplate
.
getUriTemplateHandler
()
.
expand
(
requestEntity
.
getUrl
().
toString
());
return
new
RequestEntity
(
requestEntity
.
getBody
(),
requestEntity
.
getHeaders
(),
requestEntity
.
getMethod
(),
expandedUri
,
requestEntity
.
getType
());
}
/**
/**
* Options used to customize the Apache Http Client if it is used.
* Options used to customize the Apache Http Client if it is used.
*/
*/
...
...
spring-boot-test/src/test/java/org/springframework/boot/test/web/client/TestRestTemplateTests.java
View file @
4e70cd29
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
package
org
.
springframework
.
boot
.
test
.
web
.
client
;
package
org
.
springframework
.
boot
.
test
.
web
.
client
;
import
java.io.IOException
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Modifier
;
import
java.lang.reflect.Modifier
;
import
java.net.URI
;
import
java.net.URI
;
...
@@ -27,21 +28,33 @@ import org.junit.Test;
...
@@ -27,21 +28,33 @@ import org.junit.Test;
import
org.springframework.boot.test.web.client.TestRestTemplate.CustomHttpComponentsClientHttpRequestFactory
;
import
org.springframework.boot.test.web.client.TestRestTemplate.CustomHttpComponentsClientHttpRequestFactory
;
import
org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption
;
import
org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption
;
import
org.springframework.boot.web.client.RestTemplateBuilder
;
import
org.springframework.boot.web.client.RestTemplateBuilder
;
import
org.springframework.core.ParameterizedTypeReference
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.RequestEntity
;
import
org.springframework.http.client.ClientHttpRequestFactory
;
import
org.springframework.http.client.ClientHttpRequestInterceptor
;
import
org.springframework.http.client.ClientHttpRequestInterceptor
;
import
org.springframework.http.client.HttpComponentsClientHttpRequestFactory
;
import
org.springframework.http.client.HttpComponentsClientHttpRequestFactory
;
import
org.springframework.http.client.InterceptingClientHttpRequestFactory
;
import
org.springframework.http.client.InterceptingClientHttpRequestFactory
;
import
org.springframework.http.client.support.BasicAuthorizationInterceptor
;
import
org.springframework.http.client.support.BasicAuthorizationInterceptor
;
import
org.springframework.mock.http.client.MockClientHttpRequest
;
import
org.springframework.mock.http.client.MockClientHttpResponse
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.util.ReflectionUtils
;
import
org.springframework.util.ReflectionUtils
;
import
org.springframework.util.ReflectionUtils.MethodCallback
;
import
org.springframework.util.ReflectionUtils.MethodCallback
;
import
org.springframework.web.client.ResponseErrorHandler
;
import
org.springframework.web.client.ResponseErrorHandler
;
import
org.springframework.web.client.RestOperations
;
import
org.springframework.web.client.RestOperations
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.util.DefaultUriTemplateHandler
;
import
org.springframework.web.util.UriTemplateHandler
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
mockito
.
BDDMockito
.
given
;
import
static
org
.
mockito
.
BDDMockito
.
given
;
import
static
org
.
mockito
.
Matchers
.
any
;
import
static
org
.
mockito
.
Matchers
.
eq
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
verify
;
/**
/**
* Tests for {@link TestRestTemplate}.
* Tests for {@link TestRestTemplate}.
...
@@ -49,6 +62,7 @@ import static org.mockito.Mockito.mock;
...
@@ -49,6 +62,7 @@ import static org.mockito.Mockito.mock;
* @author Dave Syer
* @author Dave Syer
* @author Phillip Webb
* @author Phillip Webb
* @author Stephane Nicoll
* @author Stephane Nicoll
* @author Andy Wilkinson
*/
*/
public
class
TestRestTemplateTests
{
public
class
TestRestTemplateTests
{
...
@@ -87,6 +101,8 @@ public class TestRestTemplateTests {
...
@@ -87,6 +101,8 @@ public class TestRestTemplateTests {
@Test
@Test
public
void
restOperationsAreAvailable
()
throws
Exception
{
public
void
restOperationsAreAvailable
()
throws
Exception
{
RestTemplate
delegate
=
mock
(
RestTemplate
.
class
);
RestTemplate
delegate
=
mock
(
RestTemplate
.
class
);
given
(
delegate
.
getUriTemplateHandler
())
.
willReturn
(
new
DefaultUriTemplateHandler
());
final
TestRestTemplate
restTemplate
=
new
TestRestTemplate
(
delegate
);
final
TestRestTemplate
restTemplate
=
new
TestRestTemplate
(
delegate
);
ReflectionUtils
.
doWithMethods
(
RestOperations
.
class
,
new
MethodCallback
()
{
ReflectionUtils
.
doWithMethods
(
RestOperations
.
class
,
new
MethodCallback
()
{
...
@@ -131,6 +147,10 @@ public class TestRestTemplateTests {
...
@@ -131,6 +147,10 @@ public class TestRestTemplateTests {
if
(
Class
.
class
.
equals
(
type
))
{
if
(
Class
.
class
.
equals
(
type
))
{
return
Object
.
class
;
return
Object
.
class
;
}
}
if
(
RequestEntity
.
class
.
equals
(
type
))
{
return
new
RequestEntity
<>(
HttpMethod
.
GET
,
new
URI
(
"http://localhost"
));
}
return
mock
(
type
);
return
mock
(
type
);
}
}
...
@@ -195,6 +215,231 @@ public class TestRestTemplateTests {
...
@@ -195,6 +215,231 @@ public class TestRestTemplateTests {
.
isSameAs
(
errorHandler
);
.
isSameAs
(
errorHandler
);
}
}
@Test
public
void
deleteHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
delete
(
relativeUri
);
}
});
}
@Test
public
void
exchangeWithRequestEntityAndClassHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
exchange
(
new
RequestEntity
<>(
HttpMethod
.
GET
,
relativeUri
),
String
.
class
);
}
});
}
@Test
public
void
exchangeWithRequestEntityAndParameterizedTypeReferenceHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
exchange
(
new
RequestEntity
<>(
HttpMethod
.
GET
,
relativeUri
),
new
ParameterizedTypeReference
<
String
>()
{
});
}
});
}
@Test
public
void
exchangeHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
exchange
(
relativeUri
,
HttpMethod
.
GET
,
new
HttpEntity
<
byte
[]>(
new
byte
[
0
]),
String
.
class
);
}
});
}
@Test
public
void
exchangeWithParameterizedTypeReferenceHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
exchange
(
relativeUri
,
HttpMethod
.
GET
,
new
HttpEntity
<
byte
[]>(
new
byte
[
0
]),
new
ParameterizedTypeReference
<
String
>()
{
});
}
});
}
@Test
public
void
executeHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
execute
(
relativeUri
,
HttpMethod
.
GET
,
null
,
null
);
}
});
}
@Test
public
void
getForEntityHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
getForEntity
(
relativeUri
,
String
.
class
);
}
});
}
@Test
public
void
getForObjectHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
getForObject
(
relativeUri
,
String
.
class
);
}
});
}
@Test
public
void
headForHeadersHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
headForHeaders
(
relativeUri
);
}
});
}
@Test
public
void
optionsForAllowHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
optionsForAllow
(
relativeUri
);
}
});
}
@Test
public
void
patchForObjectHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
patchForObject
(
relativeUri
,
"hello"
,
String
.
class
);
}
});
}
@Test
public
void
postForEntityHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
postForEntity
(
relativeUri
,
"hello"
,
String
.
class
);
}
});
}
@Test
public
void
postForLocationHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
postForLocation
(
relativeUri
,
"hello"
);
}
});
}
@Test
public
void
postForObjectHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
postForObject
(
relativeUri
,
"hello"
,
String
.
class
);
}
});
}
@Test
public
void
putHandlesRelativeUris
()
throws
IOException
{
verifyRelativeUriHandling
(
new
TestRestTemplateCallback
()
{
@Override
public
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
)
{
testRestTemplate
.
put
(
relativeUri
,
"hello"
);
}
});
}
private
void
verifyRelativeUriHandling
(
TestRestTemplateCallback
callback
)
throws
IOException
{
ClientHttpRequestFactory
requestFactory
=
mock
(
ClientHttpRequestFactory
.
class
);
MockClientHttpRequest
request
=
new
MockClientHttpRequest
();
request
.
setResponse
(
new
MockClientHttpResponse
(
new
byte
[
0
],
HttpStatus
.
OK
));
URI
relativeUri
=
URI
.
create
(
"a/b/c.txt"
);
URI
absoluteUri
=
URI
.
create
(
"http://localhost:8080/"
+
relativeUri
.
toString
());
given
(
requestFactory
.
createRequest
(
eq
(
absoluteUri
),
any
())).
willReturn
(
request
);
RestTemplate
delegate
=
new
RestTemplate
();
TestRestTemplate
template
=
new
TestRestTemplate
(
delegate
);
delegate
.
setRequestFactory
(
requestFactory
);
UriTemplateHandler
uriTemplateHandler
=
mock
(
UriTemplateHandler
.
class
);
given
(
uriTemplateHandler
.
expand
(
relativeUri
.
toString
(),
new
Object
[
0
]))
.
willReturn
(
absoluteUri
);
template
.
setUriTemplateHandler
(
uriTemplateHandler
);
callback
.
doWithTestRestTemplate
(
template
,
relativeUri
);
verify
(
requestFactory
).
createRequest
(
eq
(
absoluteUri
),
any
());
}
private
void
assertBasicAuthorizationInterceptorCredentials
(
private
void
assertBasicAuthorizationInterceptorCredentials
(
TestRestTemplate
testRestTemplate
,
String
username
,
String
password
)
{
TestRestTemplate
testRestTemplate
,
String
username
,
String
password
)
{
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
...
@@ -211,4 +456,10 @@ public class TestRestTemplateTests {
...
@@ -211,4 +456,10 @@ public class TestRestTemplateTests {
}
}
private
static
interface
TestRestTemplateCallback
{
void
doWithTestRestTemplate
(
TestRestTemplate
testRestTemplate
,
URI
relativeUri
);
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment