Merge branch '1.2.x'
This commit is contained in:
commit
3b979eb828
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2014 the original author or authors.
|
* Copyright 2012-2015 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -137,11 +137,11 @@ public class HealthMvcEndpoint implements MvcEndpoint, EnvironmentAware {
|
||||||
|
|
||||||
private Health getHealth(Principal principal) {
|
private Health getHealth(Principal principal) {
|
||||||
long accessTime = System.currentTimeMillis();
|
long accessTime = System.currentTimeMillis();
|
||||||
if (isCacheStale(accessTime) || isSecure(principal) || isUnrestricted()) {
|
if (isCacheStale(accessTime)) {
|
||||||
this.lastAccess = accessTime;
|
this.lastAccess = accessTime;
|
||||||
this.cached = this.delegate.invoke();
|
this.cached = this.delegate.invoke();
|
||||||
}
|
}
|
||||||
if (isSecure(principal) || isUnrestricted()) {
|
if (exposeHealthDetails(principal)) {
|
||||||
return this.cached;
|
return this.cached;
|
||||||
}
|
}
|
||||||
return Health.status(this.cached.getStatus()).build();
|
return Health.status(this.cached.getStatus()).build();
|
||||||
|
|
@ -154,9 +154,8 @@ public class HealthMvcEndpoint implements MvcEndpoint, EnvironmentAware {
|
||||||
return (accessTime - this.lastAccess) > this.delegate.getTimeToLive();
|
return (accessTime - this.lastAccess) > this.delegate.getTimeToLive();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isUnrestricted() {
|
private boolean exposeHealthDetails(Principal principal) {
|
||||||
Boolean sensitive = this.propertyResolver.getProperty("sensitive", Boolean.class);
|
return isSecure(principal) || isUnrestricted();
|
||||||
return !this.secure || Boolean.FALSE.equals(sensitive);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSecure(Principal principal) {
|
private boolean isSecure(Principal principal) {
|
||||||
|
|
@ -164,6 +163,11 @@ public class HealthMvcEndpoint implements MvcEndpoint, EnvironmentAware {
|
||||||
.contains("Anonymous"));
|
.contains("Anonymous"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isUnrestricted() {
|
||||||
|
Boolean sensitive = this.propertyResolver.getProperty("sensitive", Boolean.class);
|
||||||
|
return !this.secure || Boolean.FALSE.equals(sensitive);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPath() {
|
public String getPath() {
|
||||||
return "/" + this.delegate.getId();
|
return "/" + this.delegate.getId();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2014 the original author or authors.
|
* Copyright 2012-2015 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -44,6 +44,7 @@ import static org.mockito.Mockito.mock;
|
||||||
*
|
*
|
||||||
* @author Christian Dupuis
|
* @author Christian Dupuis
|
||||||
* @author Dave Syer
|
* @author Dave Syer
|
||||||
|
* @author Andy Wilkinson
|
||||||
*/
|
*/
|
||||||
public class HealthMvcEndpointTests {
|
public class HealthMvcEndpointTests {
|
||||||
|
|
||||||
|
|
@ -115,23 +116,7 @@ public class HealthMvcEndpointTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void secureNotCached() {
|
public void healthIsCached() {
|
||||||
given(this.endpoint.getTimeToLive()).willReturn(10000L);
|
|
||||||
given(this.endpoint.isSensitive()).willReturn(false);
|
|
||||||
given(this.endpoint.invoke()).willReturn(
|
|
||||||
new Health.Builder().up().withDetail("foo", "bar").build());
|
|
||||||
Object result = this.mvc.invoke(this.user);
|
|
||||||
assertTrue(result instanceof Health);
|
|
||||||
assertTrue(((Health) result).getStatus() == Status.UP);
|
|
||||||
given(this.endpoint.invoke()).willReturn(new Health.Builder().down().build());
|
|
||||||
result = this.mvc.invoke(this.user);
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
Health health = ((ResponseEntity<Health>) result).getBody();
|
|
||||||
assertTrue(health.getStatus() == Status.DOWN);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void unsecureCached() {
|
|
||||||
given(this.endpoint.getTimeToLive()).willReturn(10000L);
|
given(this.endpoint.getTimeToLive()).willReturn(10000L);
|
||||||
given(this.endpoint.isSensitive()).willReturn(true);
|
given(this.endpoint.isSensitive()).willReturn(true);
|
||||||
given(this.endpoint.invoke()).willReturn(
|
given(this.endpoint.invoke()).willReturn(
|
||||||
|
|
@ -164,9 +149,8 @@ public class HealthMvcEndpointTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void unsecureIsNotCachedWhenAnonymousAccessIsUnrestricted() {
|
public void noCachingWhenTimeToLiveIsZero() {
|
||||||
this.environment.getPropertySources().addLast(NON_SENSITIVE);
|
given(this.endpoint.getTimeToLive()).willReturn(0L);
|
||||||
given(this.endpoint.getTimeToLive()).willReturn(10000L);
|
|
||||||
given(this.endpoint.invoke()).willReturn(
|
given(this.endpoint.invoke()).willReturn(
|
||||||
new Health.Builder().up().withDetail("foo", "bar").build());
|
new Health.Builder().up().withDetail("foo", "bar").build());
|
||||||
Object result = this.mvc.invoke(null);
|
Object result = this.mvc.invoke(null);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue