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
5867cd61
Commit
5867cd61
authored
Feb 27, 2017
by
Phillip Webb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish
parent
47fd5f4f
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
113 additions
and
80 deletions
+113
-80
CloudFoundrySecurityService.java
...oot/actuate/cloudfoundry/CloudFoundrySecurityService.java
+2
-3
Token.java
.../org/springframework/boot/actuate/cloudfoundry/Token.java
+0
-1
TokenValidator.java
...ngframework/boot/actuate/cloudfoundry/TokenValidator.java
+3
-5
TokenValidatorTests.java
...mework/boot/actuate/cloudfoundry/TokenValidatorTests.java
+7
-6
EmbeddedLdapAutoConfiguration.java
...onfigure/ldap/embedded/EmbeddedLdapAutoConfiguration.java
+24
-18
ResourceServerProperties.java
...re/security/oauth2/resource/ResourceServerProperties.java
+12
-9
SpringValidatorAdapterWrapper.java
...boot/autoconfigure/web/SpringValidatorAdapterWrapper.java
+6
-5
WebMvcAutoConfiguration.java
...ework/boot/autoconfigure/web/WebMvcAutoConfiguration.java
+5
-3
GroovyTemplateAvailabilityProviderTests.java
...ovy/template/GroovyTemplateAvailabilityProviderTests.java
+3
-3
OAuth2AutoConfigurationTests.java
...nfigure/security/oauth2/OAuth2AutoConfigurationTests.java
+4
-2
ResourceServerPropertiesTests.java
...curity/oauth2/resource/ResourceServerPropertiesTests.java
+12
-5
SpringValidatorAdapterWrapperTests.java
...autoconfigure/web/SpringValidatorAdapterWrapperTests.java
+10
-10
WebMvcAutoConfigurationTests.java
.../boot/autoconfigure/web/WebMvcAutoConfigurationTests.java
+3
-3
pom.xml
spring-boot-samples/spring-boot-sample-cache/pom.xml
+3
-2
MockDefinition.java
...pringframework/boot/test/mock/mockito/MockDefinition.java
+2
-1
ProjectLibraries.java
...ringframework/boot/gradle/repackage/ProjectLibraries.java
+10
-0
PropertySourcesPropertyValues.java
...ingframework/boot/bind/PropertySourcesPropertyValues.java
+1
-2
ConfigurationPropertiesBindingPostProcessorTests.java
...ies/ConfigurationPropertiesBindingPostProcessorTests.java
+1
-0
BindFailureAnalyzerTests.java
...k/boot/diagnostics/analyzer/BindFailureAnalyzerTests.java
+5
-2
No files found.
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/CloudFoundrySecurityService.java
View file @
5867cd61
...
@@ -117,10 +117,9 @@ class CloudFoundrySecurityService {
...
@@ -117,10 +117,9 @@ class CloudFoundrySecurityService {
private
Map
<
String
,
String
>
extractTokenKeys
(
Map
<?,
?>
response
)
{
private
Map
<
String
,
String
>
extractTokenKeys
(
Map
<?,
?>
response
)
{
Map
<
String
,
String
>
tokenKeys
=
new
HashMap
<
String
,
String
>();
Map
<
String
,
String
>
tokenKeys
=
new
HashMap
<
String
,
String
>();
List
<?>
keys
=
(
List
<?>)
response
.
get
(
"keys"
);
for
(
Object
key
:
(
List
<?>)
response
.
get
(
"keys"
))
{
for
(
Object
key
:
keys
)
{
Map
<?,
?>
tokenKey
=
(
Map
<?,
?>)
key
;
Map
<?,
?>
tokenKey
=
(
Map
<?,
?>)
key
;
tokenKeys
.
put
((
String
)
(
tokenKey
).
get
(
"kid"
),
(
String
)
(
tokenKey
)
.
get
(
"value"
));
tokenKeys
.
put
((
String
)
tokenKey
.
get
(
"kid"
),
(
String
)
tokenKey
.
get
(
"value"
));
}
}
return
tokenKeys
;
return
tokenKeys
;
}
}
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/Token.java
View file @
5867cd61
...
@@ -97,7 +97,6 @@ class Token {
...
@@ -97,7 +97,6 @@ class Token {
return
getRequired
(
this
.
claims
,
"scope"
,
List
.
class
);
return
getRequired
(
this
.
claims
,
"scope"
,
List
.
class
);
}
}
@SuppressWarnings
(
"unchecked"
)
public
String
getKeyId
()
{
public
String
getKeyId
()
{
return
getRequired
(
this
.
header
,
"kid"
,
String
.
class
);
return
getRequired
(
this
.
header
,
"kid"
,
String
.
class
);
}
}
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/TokenValidator.java
View file @
5867cd61
...
@@ -52,8 +52,6 @@ class TokenValidator {
...
@@ -52,8 +52,6 @@ class TokenValidator {
validateAudience
(
token
);
validateAudience
(
token
);
}
}
private
void
validateAlgorithm
(
Token
token
)
{
private
void
validateAlgorithm
(
Token
token
)
{
String
algorithm
=
token
.
getSignatureAlgorithm
();
String
algorithm
=
token
.
getSignatureAlgorithm
();
if
(
algorithm
==
null
)
{
if
(
algorithm
==
null
)
{
...
@@ -83,9 +81,9 @@ class TokenValidator {
...
@@ -83,9 +81,9 @@ class TokenValidator {
}
}
}
}
private
boolean
hasValidKeyId
(
String
tokenKey
Id
)
{
private
boolean
hasValidKeyId
(
String
tokenKey
)
{
for
(
String
keyId
:
this
.
tokenKeys
.
keySet
())
{
for
(
String
candidate
:
this
.
tokenKeys
.
keySet
())
{
if
(
tokenKey
Id
.
equals
(
keyId
))
{
if
(
tokenKey
.
equals
(
candidate
))
{
return
true
;
return
true
;
}
}
}
}
...
...
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/cloudfoundry/TokenValidatorTests.java
View file @
5867cd61
...
@@ -85,7 +85,8 @@ public class TokenValidatorTests {
...
@@ -85,7 +85,8 @@ public class TokenValidatorTests {
private
static
final
Map
<
String
,
String
>
INVALID_KEYS
=
Collections
private
static
final
Map
<
String
,
String
>
INVALID_KEYS
=
Collections
.
singletonMap
(
"invalid-key"
,
INVALID_KEY
);
.
singletonMap
(
"invalid-key"
,
INVALID_KEY
);
private
static
final
Map
<
String
,
String
>
VALID_KEYS
=
Collections
.
singletonMap
(
"valid-key"
,
VALID_KEY
);
private
static
final
Map
<
String
,
String
>
VALID_KEYS
=
Collections
.
singletonMap
(
"valid-key"
,
VALID_KEY
);
@Before
@Before
public
void
setup
()
throws
Exception
{
public
void
setup
()
throws
Exception
{
...
@@ -100,8 +101,8 @@ public class TokenValidatorTests {
...
@@ -100,8 +101,8 @@ public class TokenValidatorTests {
given
(
this
.
securityService
.
fetchTokenKeys
()).
willReturn
(
INVALID_KEYS
);
given
(
this
.
securityService
.
fetchTokenKeys
()).
willReturn
(
INVALID_KEYS
);
String
header
=
"{\"alg\": \"RS256\", \"kid\": \"valid-key\",\"typ\": \"JWT\"}"
;
String
header
=
"{\"alg\": \"RS256\", \"kid\": \"valid-key\",\"typ\": \"JWT\"}"
;
String
claims
=
"{\"exp\": 2147483647, \"iss\": \"http://localhost:8080/uaa/oauth/token\", \"scope\": [\"actuator.read\"]}"
;
String
claims
=
"{\"exp\": 2147483647, \"iss\": \"http://localhost:8080/uaa/oauth/token\", \"scope\": [\"actuator.read\"]}"
;
this
.
thrown
.
expect
(
this
.
thrown
AuthorizationExceptionMatcher
.
withReason
(
Reason
.
INVALID_KEY_ID
));
.
expect
(
AuthorizationExceptionMatcher
.
withReason
(
Reason
.
INVALID_KEY_ID
));
this
.
tokenValidator
.
validate
(
this
.
tokenValidator
.
validate
(
new
Token
(
getSignedToken
(
header
.
getBytes
(),
claims
.
getBytes
())));
new
Token
(
getSignedToken
(
header
.
getBytes
(),
claims
.
getBytes
())));
}
}
...
@@ -131,8 +132,7 @@ public class TokenValidatorTests {
...
@@ -131,8 +132,7 @@ public class TokenValidatorTests {
}
}
@Test
@Test
public
void
validateTokenWhenValidShouldNotFetchTokenKeys
()
public
void
validateTokenWhenValidShouldNotFetchTokenKeys
()
throws
Exception
{
throws
Exception
{
ReflectionTestUtils
.
setField
(
this
.
tokenValidator
,
"tokenKeys"
,
VALID_KEYS
);
ReflectionTestUtils
.
setField
(
this
.
tokenValidator
,
"tokenKeys"
,
VALID_KEYS
);
given
(
this
.
securityService
.
getUaaUrl
()).
willReturn
(
"http://localhost:8080/uaa"
);
given
(
this
.
securityService
.
getUaaUrl
()).
willReturn
(
"http://localhost:8080/uaa"
);
String
header
=
"{ \"alg\": \"RS256\", \"kid\": \"valid-key\",\"typ\": \"JWT\"}"
;
String
header
=
"{ \"alg\": \"RS256\", \"kid\": \"valid-key\",\"typ\": \"JWT\"}"
;
...
@@ -144,7 +144,8 @@ public class TokenValidatorTests {
...
@@ -144,7 +144,8 @@ public class TokenValidatorTests {
@Test
@Test
public
void
validateTokenWhenSignatureInvalidShouldThrowException
()
throws
Exception
{
public
void
validateTokenWhenSignatureInvalidShouldThrowException
()
throws
Exception
{
ReflectionTestUtils
.
setField
(
this
.
tokenValidator
,
"tokenKeys"
,
Collections
.
singletonMap
(
"valid-key"
,
INVALID_KEY
));
ReflectionTestUtils
.
setField
(
this
.
tokenValidator
,
"tokenKeys"
,
Collections
.
singletonMap
(
"valid-key"
,
INVALID_KEY
));
given
(
this
.
securityService
.
getUaaUrl
()).
willReturn
(
"http://localhost:8080/uaa"
);
given
(
this
.
securityService
.
getUaaUrl
()).
willReturn
(
"http://localhost:8080/uaa"
);
String
header
=
"{ \"alg\": \"RS256\", \"kid\": \"valid-key\",\"typ\": \"JWT\"}"
;
String
header
=
"{ \"alg\": \"RS256\", \"kid\": \"valid-key\",\"typ\": \"JWT\"}"
;
String
claims
=
"{ \"exp\": 2147483647, \"iss\": \"http://localhost:8080/uaa/oauth/token\", \"scope\": [\"actuator.read\"]}"
;
String
claims
=
"{ \"exp\": 2147483647, \"iss\": \"http://localhost:8080/uaa/oauth/token\", \"scope\": [\"actuator.read\"]}"
;
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ldap/embedded/EmbeddedLdapAutoConfiguration.java
View file @
5867cd61
...
@@ -109,24 +109,7 @@ public class EmbeddedLdapAutoConfiguration {
...
@@ -109,24 +109,7 @@ public class EmbeddedLdapAutoConfiguration {
this
.
embeddedProperties
.
getCredential
().
getUsername
(),
this
.
embeddedProperties
.
getCredential
().
getUsername
(),
this
.
embeddedProperties
.
getCredential
().
getPassword
());
this
.
embeddedProperties
.
getCredential
().
getPassword
());
}
}
setSchema
(
config
);
if
(!
this
.
embeddedProperties
.
getValidation
().
isEnabled
())
{
config
.
setSchema
(
null
);
}
else
{
Resource
schema
=
this
.
embeddedProperties
.
getValidation
().
getSchema
();
if
(
schema
!=
null
)
{
try
{
config
.
setSchema
(
Schema
.
mergeSchemas
(
Schema
.
getDefaultStandardSchema
(),
Schema
.
getSchema
(
schema
.
getInputStream
())));
}
catch
(
Exception
ex
)
{
throw
new
IllegalStateException
(
"Unable to load schema "
+
schema
.
getDescription
(),
ex
);
}
}
}
InMemoryListenerConfig
listenerConfig
=
InMemoryListenerConfig
InMemoryListenerConfig
listenerConfig
=
InMemoryListenerConfig
.
createLDAPConfig
(
"LDAP"
,
this
.
embeddedProperties
.
getPort
());
.
createLDAPConfig
(
"LDAP"
,
this
.
embeddedProperties
.
getPort
());
config
.
setListenerConfigs
(
listenerConfig
);
config
.
setListenerConfigs
(
listenerConfig
);
...
@@ -137,6 +120,29 @@ public class EmbeddedLdapAutoConfiguration {
...
@@ -137,6 +120,29 @@ public class EmbeddedLdapAutoConfiguration {
return
this
.
server
;
return
this
.
server
;
}
}
private
void
setSchema
(
InMemoryDirectoryServerConfig
config
)
{
if
(!
this
.
embeddedProperties
.
getValidation
().
isEnabled
())
{
config
.
setSchema
(
null
);
return
;
}
Resource
schema
=
this
.
embeddedProperties
.
getValidation
().
getSchema
();
if
(
schema
!=
null
)
{
setSchema
(
config
,
schema
);
}
}
private
void
setSchema
(
InMemoryDirectoryServerConfig
config
,
Resource
resource
)
{
try
{
Schema
defaultSchema
=
Schema
.
getDefaultStandardSchema
();
Schema
schema
=
Schema
.
getSchema
(
resource
.
getInputStream
());
config
.
setSchema
(
Schema
.
mergeSchemas
(
defaultSchema
,
schema
));
}
catch
(
Exception
ex
)
{
throw
new
IllegalStateException
(
"Unable to load schema "
+
resource
.
getDescription
(),
ex
);
}
}
private
boolean
hasCredentials
(
Credential
credential
)
{
private
boolean
hasCredentials
(
Credential
credential
)
{
return
StringUtils
.
hasText
(
credential
.
getUsername
())
return
StringUtils
.
hasText
(
credential
.
getUsername
())
&&
StringUtils
.
hasText
(
credential
.
getPassword
());
&&
StringUtils
.
hasText
(
credential
.
getPassword
());
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/resource/ResourceServerProperties.java
View file @
5867cd61
...
@@ -203,31 +203,36 @@ public class ResourceServerProperties implements Validator, BeanFactoryAware {
...
@@ -203,31 +203,36 @@ public class ResourceServerProperties implements Validator, BeanFactoryAware {
return
;
return
;
}
}
ResourceServerProperties
resource
=
(
ResourceServerProperties
)
target
;
ResourceServerProperties
resource
=
(
ResourceServerProperties
)
target
;
validate
(
resource
,
errors
);
}
private
void
validate
(
ResourceServerProperties
target
,
Errors
errors
)
{
if
((
StringUtils
.
hasText
(
this
.
jwt
.
getKeyUri
())
if
((
StringUtils
.
hasText
(
this
.
jwt
.
getKeyUri
())
||
StringUtils
.
hasText
(
this
.
jwt
.
getKeyValue
()))
||
StringUtils
.
hasText
(
this
.
jwt
.
getKeyValue
()))
&&
StringUtils
.
hasText
(
this
.
jwk
.
getKeySetUri
()))
{
&&
StringUtils
.
hasText
(
this
.
jwk
.
getKeySetUri
()))
{
errors
.
reject
(
"ambiguous.keyUri"
,
"Only one of jwt.keyUri (or jwt.keyValue) and jwk.keySetUri should be configured."
);
errors
.
reject
(
"ambiguous.keyUri"
,
"Only one of jwt.keyUri (or jwt.keyValue) and "
+
"jwk.keySetUri should be configured."
);
}
}
else
{
else
{
if
(
StringUtils
.
hasText
(
this
.
clientId
))
{
if
(
StringUtils
.
hasText
(
this
.
clientId
))
{
if
(!
StringUtils
.
hasText
(
this
.
clientSecret
))
{
if
(!
StringUtils
.
hasText
(
this
.
clientSecret
))
{
if
(!
StringUtils
.
hasText
(
resource
.
getUserInfoUri
()))
{
if
(!
StringUtils
.
hasText
(
target
.
getUserInfoUri
()))
{
errors
.
rejectValue
(
"userInfoUri"
,
"missing.userInfoUri"
,
errors
.
rejectValue
(
"userInfoUri"
,
"missing.userInfoUri"
,
"Missing userInfoUri (no client secret available)"
);
"Missing userInfoUri (no client secret available)"
);
}
}
}
}
else
{
else
{
if
(
isPreferTokenInfo
()
if
(
isPreferTokenInfo
()
&&
!
StringUtils
.
hasText
(
resource
.
getTokenInfoUri
()))
{
&&
!
StringUtils
.
hasText
(
target
.
getTokenInfoUri
()))
{
if
(
StringUtils
.
hasText
(
getJwt
().
getKeyUri
())
if
(
StringUtils
.
hasText
(
getJwt
().
getKeyUri
())
||
StringUtils
.
hasText
(
getJwt
().
getKeyValue
())
||
StringUtils
.
hasText
(
getJwt
().
getKeyValue
())
||
StringUtils
.
hasText
(
getJwk
().
getKeySetUri
()))
{
||
StringUtils
.
hasText
(
getJwk
().
getKeySetUri
()))
{
// It's a JWT decoder
// It's a JWT decoder
return
;
return
;
}
}
if
(!
StringUtils
.
hasText
(
resource
.
getUserInfoUri
()))
{
if
(!
StringUtils
.
hasText
(
target
.
getUserInfoUri
()))
{
errors
.
rejectValue
(
"tokenInfoUri"
,
"missing.tokenInfoUri"
,
errors
.
rejectValue
(
"tokenInfoUri"
,
"missing.tokenInfoUri"
,
"Missing tokenInfoUri and userInfoUri and there is no "
"Missing tokenInfoUri and userInfoUri and there is no "
+
"JWT verifier key"
);
+
"JWT verifier key"
);
...
@@ -236,7 +241,6 @@ public class ResourceServerProperties implements Validator, BeanFactoryAware {
...
@@ -236,7 +241,6 @@ public class ResourceServerProperties implements Validator, BeanFactoryAware {
}
}
}
}
}
}
}
}
private
int
countBeans
(
Class
<?>
type
)
{
private
int
countBeans
(
Class
<?>
type
)
{
...
@@ -294,9 +298,8 @@ public class ResourceServerProperties implements Validator, BeanFactoryAware {
...
@@ -294,9 +298,8 @@ public class ResourceServerProperties implements Validator, BeanFactoryAware {
public
class
Jwk
{
public
class
Jwk
{
/**
/**
* The URI to get verification keys to verify the JWT token.
* The URI to get verification keys to verify the JWT token. This can be set when
* This can be set when the authorization server returns a
* the authorization server returns a set of verification keys.
* set of verification keys.
*/
*/
private
String
keySetUri
;
private
String
keySetUri
;
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/SpringValidatorAdapterWrapper.java
View file @
5867cd61
...
@@ -26,9 +26,9 @@ import org.springframework.validation.Validator;
...
@@ -26,9 +26,9 @@ import org.springframework.validation.Validator;
import
org.springframework.validation.beanvalidation.SpringValidatorAdapter
;
import
org.springframework.validation.beanvalidation.SpringValidatorAdapter
;
/**
/**
* Wraps a {@link SpringValidatorAdapter} so that only the Spring's {@link Validator}
* Wraps a {@link SpringValidatorAdapter} so that only the Spring's {@link Validator}
type
*
type is exposed. This prevents such a bean to expose both the Spring and JSR-303
*
is exposed. This prevents such a bean to expose both the Spring and JSR-303 validator
*
validator
contract at the same time.
* contract at the same time.
*
*
* @author Stephane Nicoll
* @author Stephane Nicoll
*/
*/
...
@@ -36,6 +36,7 @@ class SpringValidatorAdapterWrapper
...
@@ -36,6 +36,7 @@ class SpringValidatorAdapterWrapper
implements
Validator
,
ApplicationContextAware
,
InitializingBean
,
DisposableBean
{
implements
Validator
,
ApplicationContextAware
,
InitializingBean
,
DisposableBean
{
private
final
SpringValidatorAdapter
target
;
private
final
SpringValidatorAdapter
target
;
private
final
boolean
managed
;
private
final
boolean
managed
;
SpringValidatorAdapterWrapper
(
SpringValidatorAdapter
target
,
boolean
managed
)
{
SpringValidatorAdapterWrapper
(
SpringValidatorAdapter
target
,
boolean
managed
)
{
...
@@ -61,8 +62,8 @@ class SpringValidatorAdapterWrapper
...
@@ -61,8 +62,8 @@ class SpringValidatorAdapterWrapper
public
void
setApplicationContext
(
ApplicationContext
applicationContext
)
public
void
setApplicationContext
(
ApplicationContext
applicationContext
)
throws
BeansException
{
throws
BeansException
{
if
(!
this
.
managed
&&
this
.
target
instanceof
ApplicationContextAware
)
{
if
(!
this
.
managed
&&
this
.
target
instanceof
ApplicationContextAware
)
{
((
ApplicationContextAware
)
this
.
target
)
.
setApplicationContext
(
((
ApplicationContextAware
)
this
.
target
)
applicationContext
);
.
setApplicationContext
(
applicationContext
);
}
}
}
}
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration.java
View file @
5867cd61
...
@@ -575,15 +575,17 @@ public class WebMvcAutoConfiguration {
...
@@ -575,15 +575,17 @@ public class WebMvcAutoConfiguration {
try
{
try
{
if
(
this
.
userDefinedValidator
!=
null
)
{
if
(
this
.
userDefinedValidator
!=
null
)
{
if
(
this
.
userDefinedValidator
instanceof
javax
.
validation
.
Validator
)
{
if
(
this
.
userDefinedValidator
instanceof
javax
.
validation
.
Validator
)
{
return
wrap
((
javax
.
validation
.
Validator
)
this
.
userDefinedValidator
,
false
);
return
wrap
(
(
javax
.
validation
.
Validator
)
this
.
userDefinedValidator
,
false
);
}
}
else
{
else
{
return
this
.
userDefinedValidator
;
return
this
.
userDefinedValidator
;
}
}
}
}
else
{
else
{
return
wrap
(
this
.
applicationContext
.
getBean
(
return
wrap
(
this
.
applicationContext
javax
.
validation
.
Validator
.
class
),
true
);
.
getBean
(
javax
.
validation
.
Validator
.
class
),
true
);
}
}
}
}
catch
(
NoSuchBeanDefinitionException
ex
)
{
catch
(
NoSuchBeanDefinitionException
ex
)
{
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/groovy/template/GroovyTemplateAvailabilityProviderTests.java
View file @
5867cd61
...
@@ -32,11 +32,11 @@ import static org.assertj.core.api.Assertions.assertThat;
...
@@ -32,11 +32,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
*/
public
class
GroovyTemplateAvailabilityProviderTests
{
public
class
GroovyTemplateAvailabilityProviderTests
{
private
final
TemplateAvailabilityProvider
provider
=
new
GroovyTemplateAvailabilityProvider
();
private
TemplateAvailabilityProvider
provider
=
new
GroovyTemplateAvailabilityProvider
();
private
final
ResourceLoader
resourceLoader
=
new
DefaultResourceLoader
();
private
ResourceLoader
resourceLoader
=
new
DefaultResourceLoader
();
private
final
MockEnvironment
environment
=
new
MockEnvironment
();
private
MockEnvironment
environment
=
new
MockEnvironment
();
@Test
@Test
public
void
availabilityOfTemplateInDefaultLocation
()
{
public
void
availabilityOfTemplateInDefaultLocation
()
{
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/oauth2/OAuth2AutoConfigurationTests.java
View file @
5867cd61
...
@@ -390,11 +390,13 @@ public class OAuth2AutoConfigurationTests {
...
@@ -390,11 +390,13 @@ public class OAuth2AutoConfigurationTests {
}
}
@Test
@Test
public
void
resourceServerConditionWhenJwkConfigurationPresentShouldMatch
()
throws
Exception
{
public
void
resourceServerConditionWhenJwkConfigurationPresentShouldMatch
()
throws
Exception
{
this
.
context
=
new
AnnotationConfigEmbeddedWebApplicationContext
();
this
.
context
=
new
AnnotationConfigEmbeddedWebApplicationContext
();
EnvironmentTestUtils
.
addEnvironment
(
this
.
context
,
EnvironmentTestUtils
.
addEnvironment
(
this
.
context
,
"security.oauth2.resource.jwk.key-set-uri:http://my-auth-server/token_keys"
);
"security.oauth2.resource.jwk.key-set-uri:http://my-auth-server/token_keys"
);
this
.
context
.
register
(
ResourceServerConfiguration
.
class
,
MinimalSecureWebApplication
.
class
);
this
.
context
.
register
(
ResourceServerConfiguration
.
class
,
MinimalSecureWebApplication
.
class
);
this
.
context
.
refresh
();
this
.
context
.
refresh
();
assertThat
(
countBeans
(
RESOURCE_SERVER_CONFIG
)).
isEqualTo
(
1
);
assertThat
(
countBeans
(
RESOURCE_SERVER_CONFIG
)).
isEqualTo
(
1
);
}
}
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/oauth2/resource/ResourceServerPropertiesTests.java
View file @
5867cd61
...
@@ -68,13 +68,15 @@ public class ResourceServerPropertiesTests {
...
@@ -68,13 +68,15 @@ public class ResourceServerPropertiesTests {
}
}
@Test
@Test
public
void
validateWhenBothJwtAndJwtKeyConfigurationPresentShouldFail
()
throws
Exception
{
public
void
validateWhenBothJwtAndJwtKeyConfigurationPresentShouldFail
()
throws
Exception
{
this
.
properties
.
getJwk
().
setKeySetUri
(
"http://my-auth-server/token_keys"
);
this
.
properties
.
getJwk
().
setKeySetUri
(
"http://my-auth-server/token_keys"
);
this
.
properties
.
getJwt
().
setKeyUri
(
"http://my-auth-server/token_key"
);
this
.
properties
.
getJwt
().
setKeyUri
(
"http://my-auth-server/token_key"
);
setListableBeanFactory
();
setListableBeanFactory
();
Errors
errors
=
mock
(
Errors
.
class
);
Errors
errors
=
mock
(
Errors
.
class
);
this
.
properties
.
validate
(
this
.
properties
,
errors
);
this
.
properties
.
validate
(
this
.
properties
,
errors
);
verify
(
errors
).
reject
(
"ambiguous.keyUri"
,
"Only one of jwt.keyUri (or jwt.keyValue) and jwk.keySetUri should be configured."
);
verify
(
errors
).
reject
(
"ambiguous.keyUri"
,
"Only one of jwt.keyUri (or jwt.keyValue) and jwk.keySetUri should be configured."
);
}
}
...
@@ -89,14 +91,19 @@ public class ResourceServerPropertiesTests {
...
@@ -89,14 +91,19 @@ public class ResourceServerPropertiesTests {
private
void
setListableBeanFactory
()
{
private
void
setListableBeanFactory
()
{
ListableBeanFactory
beanFactory
=
new
StaticWebApplicationContext
()
{
ListableBeanFactory
beanFactory
=
new
StaticWebApplicationContext
()
{
@Override
@Override
public
String
[]
getBeanNamesForType
(
Class
<?>
type
,
boolean
includeNonSingletons
,
boolean
allowEagerInit
)
{
public
String
[]
getBeanNamesForType
(
Class
<?>
type
,
if
(
type
.
isAssignableFrom
(
ResourceServerTokenServicesConfiguration
.
class
))
{
boolean
includeNonSingletons
,
boolean
allowEagerInit
)
{
return
new
String
[]{
"ResourceServerTokenServicesConfiguration"
};
if
(
type
.
isAssignableFrom
(
ResourceServerTokenServicesConfiguration
.
class
))
{
return
new
String
[]
{
"ResourceServerTokenServicesConfiguration"
};
}
}
return
new
String
[
0
];
return
new
String
[
0
];
}
}
};
};
this
.
properties
.
setBeanFactory
(
beanFactory
);
this
.
properties
.
setBeanFactory
(
beanFactory
);
}
}
}
}
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/SpringValidatorAdapterWrapperTests.java
View file @
5867cd61
...
@@ -57,8 +57,8 @@ public class SpringValidatorAdapterWrapperTests {
...
@@ -57,8 +57,8 @@ public class SpringValidatorAdapterWrapperTests {
SpringValidatorAdapterWrapper
wrapper
=
load
(
SpringValidatorAdapterWrapper
wrapper
=
load
(
LocalValidatorFactoryBeanConfig
.
class
);
LocalValidatorFactoryBeanConfig
.
class
);
assertThat
(
wrapper
.
supports
(
SampleData
.
class
)).
isTrue
();
assertThat
(
wrapper
.
supports
(
SampleData
.
class
)).
isTrue
();
MapBindingResult
errors
=
new
MapBindingResult
(
MapBindingResult
errors
=
new
MapBindingResult
(
new
HashMap
<
String
,
Object
>(),
new
HashMap
<
String
,
Object
>(),
"test"
);
"test"
);
wrapper
.
validate
(
new
SampleData
(
40
),
errors
);
wrapper
.
validate
(
new
SampleData
(
40
),
errors
);
assertThat
(
errors
.
getErrorCount
()).
isEqualTo
(
1
);
assertThat
(
errors
.
getErrorCount
()).
isEqualTo
(
1
);
}
}
...
@@ -66,8 +66,8 @@ public class SpringValidatorAdapterWrapperTests {
...
@@ -66,8 +66,8 @@ public class SpringValidatorAdapterWrapperTests {
@Test
@Test
public
void
wrapperInvokesCallbackOnNonManagedBean
()
{
public
void
wrapperInvokesCallbackOnNonManagedBean
()
{
load
(
NonManagedBeanConfig
.
class
);
load
(
NonManagedBeanConfig
.
class
);
LocalValidatorFactoryBean
validator
=
this
.
context
.
getBean
(
LocalValidatorFactoryBean
validator
=
this
.
context
NonManagedBeanConfig
.
class
).
validator
;
.
getBean
(
NonManagedBeanConfig
.
class
).
validator
;
verify
(
validator
,
times
(
1
)).
setApplicationContext
(
any
(
ApplicationContext
.
class
));
verify
(
validator
,
times
(
1
)).
setApplicationContext
(
any
(
ApplicationContext
.
class
));
verify
(
validator
,
times
(
1
)).
afterPropertiesSet
();
verify
(
validator
,
times
(
1
)).
afterPropertiesSet
();
verify
(
validator
,
times
(
0
)).
destroy
();
verify
(
validator
,
times
(
0
)).
destroy
();
...
@@ -79,8 +79,8 @@ public class SpringValidatorAdapterWrapperTests {
...
@@ -79,8 +79,8 @@ public class SpringValidatorAdapterWrapperTests {
@Test
@Test
public
void
wrapperDoesNotInvokeCallbackOnManagedBean
()
{
public
void
wrapperDoesNotInvokeCallbackOnManagedBean
()
{
load
(
ManagedBeanConfig
.
class
);
load
(
ManagedBeanConfig
.
class
);
LocalValidatorFactoryBean
validator
=
this
.
context
.
getBean
(
LocalValidatorFactoryBean
validator
=
this
.
context
ManagedBeanConfig
.
class
).
validator
;
.
getBean
(
ManagedBeanConfig
.
class
).
validator
;
verify
(
validator
,
times
(
0
)).
setApplicationContext
(
any
(
ApplicationContext
.
class
));
verify
(
validator
,
times
(
0
)).
setApplicationContext
(
any
(
ApplicationContext
.
class
));
verify
(
validator
,
times
(
0
)).
afterPropertiesSet
();
verify
(
validator
,
times
(
0
)).
afterPropertiesSet
();
verify
(
validator
,
times
(
0
)).
destroy
();
verify
(
validator
,
times
(
0
)).
destroy
();
...
@@ -115,8 +115,8 @@ public class SpringValidatorAdapterWrapperTests {
...
@@ -115,8 +115,8 @@ public class SpringValidatorAdapterWrapperTests {
@Configuration
@Configuration
static
class
NonManagedBeanConfig
{
static
class
NonManagedBeanConfig
{
private
final
LocalValidatorFactoryBean
validator
private
final
LocalValidatorFactoryBean
validator
=
mock
(
=
mock
(
LocalValidatorFactoryBean
.
class
);
LocalValidatorFactoryBean
.
class
);
@Bean
@Bean
public
SpringValidatorAdapterWrapper
wrapper
()
{
public
SpringValidatorAdapterWrapper
wrapper
()
{
...
@@ -128,8 +128,8 @@ public class SpringValidatorAdapterWrapperTests {
...
@@ -128,8 +128,8 @@ public class SpringValidatorAdapterWrapperTests {
@Configuration
@Configuration
static
class
ManagedBeanConfig
{
static
class
ManagedBeanConfig
{
private
final
LocalValidatorFactoryBean
validator
private
final
LocalValidatorFactoryBean
validator
=
mock
(
=
mock
(
LocalValidatorFactoryBean
.
class
);
LocalValidatorFactoryBean
.
class
);
@Bean
@Bean
public
SpringValidatorAdapterWrapper
wrapper
()
{
public
SpringValidatorAdapterWrapper
wrapper
()
{
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfigurationTests.java
View file @
5867cd61
...
@@ -662,8 +662,8 @@ public class WebMvcAutoConfigurationTests {
...
@@ -662,8 +662,8 @@ public class WebMvcAutoConfigurationTests {
.
isEmpty
();
.
isEmpty
();
assertThat
(
this
.
context
.
getBeansOfType
(
Validator
.
class
)).
hasSize
(
1
);
assertThat
(
this
.
context
.
getBeansOfType
(
Validator
.
class
)).
hasSize
(
1
);
Validator
validator
=
this
.
context
.
getBean
(
Validator
.
class
);
Validator
validator
=
this
.
context
.
getBean
(
Validator
.
class
);
assertThat
(
validator
)
.
isSameAs
(
this
.
context
.
getBean
(
MvcValidator
.
class
)
assertThat
(
validator
)
.
validator
);
.
isSameAs
(
this
.
context
.
getBean
(
MvcValidator
.
class
).
validator
);
}
}
@Test
@Test
...
@@ -900,7 +900,7 @@ public class WebMvcAutoConfigurationTests {
...
@@ -900,7 +900,7 @@ public class WebMvcAutoConfigurationTests {
@Configuration
@Configuration
protected
static
class
MvcJsr303Validator
extends
WebMvcConfigurerAdapter
{
protected
static
class
MvcJsr303Validator
extends
WebMvcConfigurerAdapter
{
private
final
LocalValidatorFactoryBean
validator
=
new
LocalValidatorFactoryBean
();
private
final
LocalValidatorFactoryBean
validator
=
new
LocalValidatorFactoryBean
();
@Override
@Override
public
Validator
getValidator
()
{
public
Validator
getValidator
()
{
...
...
spring-boot-samples/spring-boot-sample-cache/pom.xml
View file @
5867cd61
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<parent>
<!-- Your own application should inherit from spring-boot-starter-parent -->
<!-- Your own application should inherit from spring-boot-starter-parent -->
...
@@ -24,7 +25,7 @@
...
@@ -24,7 +25,7 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-cache
</artifactId>
<artifactId>
spring-boot-starter-cache
</artifactId>
</dependency>
</dependency>
<!-- Only used to expose cache metrics
-->
<!-- Only used to expose cache metrics -->
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<artifactId>
spring-boot-starter-web
</artifactId>
...
...
spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockDefinition.java
View file @
5867cd61
...
@@ -121,7 +121,8 @@ class MockDefinition extends Definition {
...
@@ -121,7 +121,8 @@ class MockDefinition extends Definition {
MockDefinition
other
=
(
MockDefinition
)
obj
;
MockDefinition
other
=
(
MockDefinition
)
obj
;
boolean
result
=
super
.
equals
(
obj
);
boolean
result
=
super
.
equals
(
obj
);
result
=
result
&&
ObjectUtils
.
nullSafeEquals
(
this
.
typeToMock
,
other
.
typeToMock
);
result
=
result
&&
ObjectUtils
.
nullSafeEquals
(
this
.
typeToMock
,
other
.
typeToMock
);
result
=
result
&&
ObjectUtils
.
nullSafeEquals
(
this
.
extraInterfaces
,
other
.
extraInterfaces
);
result
=
result
&&
ObjectUtils
.
nullSafeEquals
(
this
.
extraInterfaces
,
other
.
extraInterfaces
);
result
=
result
&&
ObjectUtils
.
nullSafeEquals
(
this
.
answer
,
other
.
answer
);
result
=
result
&&
ObjectUtils
.
nullSafeEquals
(
this
.
answer
,
other
.
answer
);
result
=
result
&&
this
.
serializable
==
other
.
serializable
;
result
=
result
&&
this
.
serializable
==
other
.
serializable
;
return
result
;
return
result
;
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/repackage/ProjectLibraries.java
View file @
5867cd61
...
@@ -278,12 +278,19 @@ class ProjectLibraries implements Libraries {
...
@@ -278,12 +278,19 @@ class ProjectLibraries implements Libraries {
}
}
/**
* Strategy used to resolve configurations regardless of the underlying Gradle
* version.
*/
private
interface
TargetConfigurationResolver
{
private
interface
TargetConfigurationResolver
{
Configuration
resolveTargetConfiguration
(
ProjectDependency
projectDependency
);
Configuration
resolveTargetConfiguration
(
ProjectDependency
projectDependency
);
}
}
/**
* {@link TargetConfigurationResolver} for Gradle 2.x.
*/
private
static
final
class
Gradle2TargetConfigurationResolver
private
static
final
class
Gradle2TargetConfigurationResolver
implements
TargetConfigurationResolver
{
implements
TargetConfigurationResolver
{
...
@@ -295,6 +302,9 @@ class ProjectLibraries implements Libraries {
...
@@ -295,6 +302,9 @@ class ProjectLibraries implements Libraries {
}
}
/**
* {@link TargetConfigurationResolver} for Gradle 3.x.
*/
private
static
final
class
Gradle3TargetConfigurationResolver
private
static
final
class
Gradle3TargetConfigurationResolver
implements
TargetConfigurationResolver
{
implements
TargetConfigurationResolver
{
...
...
spring-boot/src/main/java/org/springframework/boot/bind/PropertySourcesPropertyValues.java
View file @
5867cd61
...
@@ -70,8 +70,7 @@ public class PropertySourcesPropertyValues implements PropertyValues {
...
@@ -70,8 +70,7 @@ public class PropertySourcesPropertyValues implements PropertyValues {
* Create a new PropertyValues from the given PropertySources that will optionally
* Create a new PropertyValues from the given PropertySources that will optionally
* resolve placeholders.
* resolve placeholders.
* @param propertySources a PropertySources instance
* @param propertySources a PropertySources instance
* @param resolvePlaceholders {@code true} if placeholders should be resolved,
* @param resolvePlaceholders {@code true} if placeholders should be resolved.
* otherwise {@code false}
* @since 1.5.2
* @since 1.5.2
*/
*/
public
PropertySourcesPropertyValues
(
PropertySources
propertySources
,
public
PropertySourcesPropertyValues
(
PropertySources
propertySources
,
...
...
spring-boot/src/test/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessorTests.java
View file @
5867cd61
...
@@ -529,6 +529,7 @@ public class ConfigurationPropertiesBindingPostProcessorTests {
...
@@ -529,6 +529,7 @@ public class ConfigurationPropertiesBindingPostProcessorTests {
public
void
setFoo
(
String
foo
)
{
public
void
setFoo
(
String
foo
)
{
this
.
foo
=
foo
;
this
.
foo
=
foo
;
}
}
}
}
@Configuration
@Configuration
...
...
spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/BindFailureAnalyzerTests.java
View file @
5867cd61
...
@@ -58,7 +58,8 @@ public class BindFailureAnalyzerTests {
...
@@ -58,7 +58,8 @@ public class BindFailureAnalyzerTests {
@Test
@Test
public
void
bindExceptionWithFieldErrorsDueToValidationFailure
()
{
public
void
bindExceptionWithFieldErrorsDueToValidationFailure
()
{
FailureAnalysis
analysis
=
performAnalysis
(
FieldValidationFailureConfiguration
.
class
);
FailureAnalysis
analysis
=
performAnalysis
(
FieldValidationFailureConfiguration
.
class
);
assertThat
(
analysis
.
getDescription
())
assertThat
(
analysis
.
getDescription
())
.
contains
(
failure
(
"test.foo.foo"
,
"null"
,
"may not be null"
));
.
contains
(
failure
(
"test.foo.foo"
,
"null"
,
"may not be null"
));
assertThat
(
analysis
.
getDescription
())
assertThat
(
analysis
.
getDescription
())
...
@@ -69,7 +70,8 @@ public class BindFailureAnalyzerTests {
...
@@ -69,7 +70,8 @@ public class BindFailureAnalyzerTests {
@Test
@Test
public
void
bindExceptionWithObjectErrorsDueToValidationFailure
()
throws
Exception
{
public
void
bindExceptionWithObjectErrorsDueToValidationFailure
()
throws
Exception
{
FailureAnalysis
analysis
=
performAnalysis
(
ObjectValidationFailureConfiguration
.
class
);
FailureAnalysis
analysis
=
performAnalysis
(
ObjectValidationFailureConfiguration
.
class
);
assertThat
(
analysis
.
getDescription
())
assertThat
(
analysis
.
getDescription
())
.
contains
(
"Reason: This object could not be bound."
);
.
contains
(
"Reason: This object could not be bound."
);
}
}
...
@@ -171,6 +173,7 @@ public class BindFailureAnalyzerTests {
...
@@ -171,6 +173,7 @@ public class BindFailureAnalyzerTests {
public
boolean
supports
(
Class
<?>
clazz
)
{
public
boolean
supports
(
Class
<?>
clazz
)
{
return
true
;
return
true
;
}
}
}
}
}
}
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