74 Commits

Author SHA1 Message Date
Phillip Webb
05ff4ed4e0 Upgrade to Tomcat 8.5.4 & remove tomcat-juli
Upgrade the managed Tomcat dependency to 8.5.4 and remove `tomcat-juli`
since it's now included in `tomcat-embed-core`.

Fixes gh-6192
2016-07-18 17:52:35 -07:00
Johnny Lim
a9f6ae4422 Polish
Closes gh-6374
2016-07-12 08:46:58 +02:00
Phillip Webb
43afc149a1 Consider WebAppConfiguration in @SpringBootTest
Update SpringBootTestContextBootstrapper to consider the
`@WebAppConfiguration` annotation and use sensible resourceBasePath
defaults.

Fixes gh-6371
2016-07-11 16:38:10 -07:00
Marcin Zajaczkowski
ed829d7981 Fix compatibility with Mockito 2.0
Update MockDefinition to only call `Answers.get()` if a direct cast
isn't possible. This provides compatibility with Mockito 2.0 (currently
2.0.47-beta) without breaking support for Mockto 1.x.

Closes gh-6323
2016-07-06 14:28:36 -07:00
Andy Wilkinson
92bb24e365 Avoid synchronizing on this and use an internal monitor instead
Where possible, code that previously synchronized on this (or on the
class in the case of static methods) has been updated to use an
internal monitor object instead. This allows the locking model that's
employed to be an implementation detail rather than part of the
class's API.

Classes that override a synchronized method continue to declare
the overriding method as synchronized. This ensures that locking
is consistent across the superclass and its subclass.

Closes gh-6262
2016-07-01 10:44:23 +01:00
Phillip Webb
be884d4e33 Polish 2016-06-29 10:57:43 -07:00
Stephane Nicoll
669da59b4a Polish 2016-06-29 16:28:41 +02:00
Johnny Lim
5bc9d5b380 Polish
Closes gh-6244
2016-06-29 08:08:53 +02:00
Stephane Nicoll
f54bec835d Move BasicAuthorizationInterceptor
`BasicAuthorizationInterceptor` is now available in the core framework
and this commit uses that instead of the outdated copy in Boot.

Closes gh-6237
2016-06-29 08:07:30 +02:00
Andy Wilkinson
f28e3d54c5 Upgrade to Tomcat 8.5.3
This commit changes the default version of Tomcat to 8.5.3 while
also retaining support for Tomcat 8.0 and 7.0. The main difference
in 8.5 is that the ServerSocketFactory abstraction that allowed the
TrustStore and KeyStore to be configured programatically no longer
exists. This logic has been replaced with the use of a custom URL
protocol (springbootssl) that provides access to the key store and
trust store of an SslStoreProvider. In addition to working with 8.5,
this approach has the advantage of also working with 8.0 and 7.0.

Closes gh-6164
2016-06-20 13:27:47 +01:00
Johnny Lim
a70a8635f9 Polish
Closes gh-6155
2016-06-14 08:35:22 +02:00
Phillip Webb
99c6194e17 Don't use MockitoJUnitRunner
Replace `@RunWith(MockitoJUnitRunner.class)` with direct Mockito
initialization since the running doesn't support parallel test
execution.
2016-06-09 20:55:59 -07:00
Johnny Lim
5de9516255 Fix typos
Closes gh-6114
2016-06-03 07:20:39 -04:00
Phillip Webb
433f5e7930 Configure TestRestTemplate using builder
Update SpringBootTestContextCustomizer to create the TestRestTemplate
using the RestTemplateBuilder whenever possible.

Fixes gh-5509
2016-05-31 18:01:55 -07:00
Phillip Webb
2eafb3d887 Add @RestClientTest support
Add @RestClientTest annotation that can be used when testing REST
clients. Provides auto-configuration for a MockRestServiceServer which
can be used when the bean under test builds a single RestTemplate
via the auto-configured RestTemplateBuilder.

Closes gh-6030
2016-05-31 10:18:07 -07:00
Phillip Webb
b641e63466 Add RestTemplateBuilder support
Add a RestTemplateBuilder that allows RestTemplates to be easily created
and configured.

See gh-5507
2016-05-31 09:50:46 -07:00
Johnny Lim
70adefc87b Polish
Closes gh-6046
2016-05-26 14:58:41 +02:00
Phillip Webb
f0b6d346d7 Filter scoped target proxy beans from Mockito
Update MockitoPostProcessor to filter bean names that match
`ScopedProxyUtils.isScopedTarget` from the candidates list.

Fixes gh-5724
2016-05-16 13:56:13 -07:00
Johnny Lim
5759f685e5 Fix Mockito tests to align with name and comments
Fixup Mockto tests where the test implementation didn't align with the
name of the test or the test Javadoc.

Closes gh-5972
2016-05-16 13:20:01 -07:00
Phillip Webb
2fc86b2d5a Only attempt mock reset on instantiated singletons
Update ResetMocksTestExecutionListener to only attempt a mock reset when
a singleton has actually been created.

Fixes gh-5870
2016-05-16 13:03:04 -07:00
Phillip Webb
bcfa2e6676 Make TestRestTemplate not extend RestTemplate
Update TestRestTemplate so that it no longer directly extends
RestTemplate. Prior to this commit it was possible that TestRestTemplate
could interfere with user defined RestTemplate beans.

TestRestTemplate offers the same methods as RestTemplate so should be
a drop-in replacement. If access is needed to the actual underlying
template the `getRestTemplate()` method should be used.

Fixes gh-5915
2016-05-16 12:35:31 -07:00
Johnny Lim
29898c73d3 Remove superflous if in MockitoPostProcessor
The `if` in registerSpies() is not required as it's covered by the
Assert check.

Closes gh-5889
2016-05-13 20:09:02 -07:00
Johnny Lim
7a62b7d066 Polish
Closes gh-5936
2016-05-13 08:55:28 +02:00
Phillip Webb
cdfbf28099 Allow @MockBean/@SpyBean on Spring AOP proxies
Update Mockito support so that AOP Proxies automatically get additional
`Advice` that allows them to work with Mockito. Prior to this commit a
call to `verify` would fail because exiting AOP advice would confuse
Mockito and an `UnfinishedVerificationException` would be thrown.

The `MockitoAopProxyTargetInterceptor` works by detecting calls to a
mock that have been proceeded by `verify()` and bypassing AOP to
directly call the mock.

The order that `@SpyBean` creation occurs has also been updated to
ensure that that the spy is created before AOP advice is applied.
Without this, the creation of a spy would fail because Mockito copies
'state' to the newly created spied instance. Unfortunately, in the case
of AOP proxies, 'state' includes cglib interceptor fields. This means
that Mockito's own interceptors are clobbered by Spring's AOP
interceptors.

Fixes gh-5837
2016-05-11 20:20:02 -07:00
Phillip Webb
cf6212b955 Polish 2016-05-10 10:22:37 -07:00
Johnny Lim
38dc9ec441 Polish 2016-05-10 14:48:42 +01:00
Andy Wilkinson
0a765e36f1 Protect against stack overflow when searching meta annotations
It is legal for an annotation to be annotated with itself. Previously,
when searching for meta annotations this could lead to a stack overflow.
This was likely to occur when using Kotlin as, like Java, its Target
annotation is annotated with itself. A stack overflow doesn’t occur
with Java’s Target annotation due to some short-circuiting logic for
annotations in java.lang.

This commit updates the logic for finding meta-annotations to
short-circuit when an annotation that has already been seen is
encountered.

Closes gh-5902
2016-05-10 09:39:55 +01:00
Andy Wilkinson
db21bcdff6 Make SpringApplicationConfiguration use SpringApplicationContextLoader
The intention in 1.4 is for the deprecated testing functionality to
behave exactly as it did in 1.3. To help with this, this commit
updates SpringApplicationConfiguration to use
SpringApplicationContextLoader as its loader, just as it did in 1.3.

Closes gh-5882
2016-05-09 12:27:44 +01:00
Dave Syer
bdc71f693c Fix checksyle 'violations' 2016-05-06 13:11:09 +01:00
Dave Syer
be398741e1 Fix binary incompatibility of old TestRestTemplate
The TestRestTemplate is deprecated (so people can still use it)
but unusable because it only has constructors which depend on the
new options enum.
2016-05-06 13:07:39 +01:00
Johnny Lim
7763c2ae4c Polish
Closes gh-5843
2016-05-03 09:33:32 +02:00
Johnny Lim
06143195d0 Make json-path and selenium-api optional
Make json-path and selenium-api optional in spring-boot-test and
spring-boot-test-autoconfigure.

Fixes gh-5828
2016-05-02 17:17:29 -07:00
Johnny Lim
e5715df7e3 Polish
Closes gh-5836
2016-05-02 17:08:34 -07:00
Johnny Lim
0efa0038c3 Polish
Closes gh-5815
2016-04-30 10:24:33 +02:00
Phillip Webb
609cb52cd4 Move to relocated web classes
Refactor code to move from recently deprecated classes.

Closes gh-5822
2016-04-28 12:45:15 -07:00
Phillip Webb
a7cb689f95 Move @LocalServerPort annotation
Move the @LocalServerPort to org.springframework.boot.context.embedded
since it's only really useful when working with embedded servlet
containers.

See gh-5822
2016-04-28 12:45:15 -07:00
Phillip Webb
93382648ab Formatting 2016-04-24 22:54:27 -07:00
Andy Wilkinson
aa19c19753 Merge branch '1.3.x' 2016-04-20 10:58:50 +01:00
Andy Wilkinson
601791c664 Configure test property sources before ConfigFileApplicationListener runs
Previously, SpringBootContextLoader configured the environment with the
test property sources using an ApplicationContextInitializer. This was
because TestPropertySourceUtils did not provide a method to directly
configure the environment using properties files, it had to be done
via an application context. An unwanted side-effect of this was that
the test property sources were not being configured before
ConfigFileApplicationListener examined the environment to determine the
name and locations of the files that it should be loading.

This commit takes advantage of a new method that was added to
TestPropertySourceUtils which allows properties files to be added
directly to the environment without using an application context. This
means that the use of the ApplicationContextInitializer can be removed
and the test property sources can be applied to the environment before
the application context is created.

Closes gh-5728
2016-04-19 13:30:18 +01:00
Stephane Nicoll
786004e297 Fix build 2016-04-16 10:58:28 +02:00
Phillip Webb
cf41512e66 Don't throw checked exceptions from Assert classes
Fixes gh-5709
2016-04-15 22:46:12 -07:00
Andy Wilkinson
35270e939f Update dependency management for Selenium and its HTMLUnit Driver
Closes gh-5705
2016-04-15 17:08:04 +01:00
Johnny Lim
90d897eb9d Polish
Closes gh-5685
2016-04-14 08:03:52 +02:00
Andy Wilkinson
a37ae5d556 Polish test property source changes made in 69b08291
TestPropertySourcesInitializer needs to be ordered with a high
precedence, specifically higher than
ContextIdApplicationContextInitializer, to ensure that any properties
used in setting the context’s id are available in the environment.

Closes gh-4828
2016-04-07 11:34:36 +01:00
Andy Wilkinson
69b0829199 Align precedence of @SpringBootTest properties with @TestPropertySource
This commit updates the precedence of properties configured using
@SpringBootTest to align with @TestPropertySource. Properties configured
using properties on @SpringBootTest are now added to the same property
source as those configured using properties on @TestPropertySource so
the precedence described in the javadoc of @TestPropertySource now
applies in full. Additionally, if both @TestPropertySource properties
and @SpringBootTest properties configure the same property, the value
from @TestPropertySource will win.

Closes gh-4828
2016-04-07 10:41:07 +01:00
Phillip Webb
01c9d72644 Polish 2016-04-06 15:19:58 -07:00
Johnny Lim
a55315b5b5 Polish
Closes gh-5614
2016-04-06 10:25:45 +02:00
Johnny Lim
8864f85b82 Remove System.out.println() 2016-04-04 22:37:37 -07:00
Phillip Webb
b398b3319c Rename @SpringApplicationTest -> @SpringBootTest
Rename @SpringApplicationTest to SpringBootTest and
@SpringApplicationContextLoader to @SpringBootContextLoader.

Fixes gh-5562
2016-04-04 22:36:58 -07:00
Phillip Webb
b0b190b362 Delete @SpringApplicationConfiguration
Remove the @SpringApplicationConfiguration annotation since it offers
little value over @SpringApplicationTest.

See gh-5562
2016-04-04 22:36:58 -07:00