Merge branch '1.5.x'
This commit is contained in:
commit
91a7bf92e6
|
|
@ -38,7 +38,8 @@ class CloudFoundryHealthMvcEndpoint extends HealthMvcEndpoint {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected boolean exposeHealthDetails(HttpServletRequest request, Principal principal) {
|
||||
protected boolean exposeHealthDetails(HttpServletRequest request,
|
||||
Principal principal) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -183,7 +183,8 @@ public class HealthMvcEndpoint extends AbstractEndpointMvcAdapter<HealthEndpoint
|
|||
return (accessTime - this.lastAccess) >= getDelegate().getTimeToLive();
|
||||
}
|
||||
|
||||
protected boolean exposeHealthDetails(HttpServletRequest request, Principal principal) {
|
||||
protected boolean exposeHealthDetails(HttpServletRequest request,
|
||||
Principal principal) {
|
||||
if (!this.secure) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -192,7 +193,7 @@ public class HealthMvcEndpoint extends AbstractEndpointMvcAdapter<HealthEndpoint
|
|||
if (request.isUserInRole(role)) {
|
||||
return true;
|
||||
}
|
||||
if (isSpringSecurityAuthentication(principal)) {
|
||||
if (isSpringSecurityAuthentication(principal)) {
|
||||
Authentication authentication = (Authentication) principal;
|
||||
for (GrantedAuthority authority : authentication.getAuthorities()) {
|
||||
String name = authority.getAuthority();
|
||||
|
|
@ -217,7 +218,7 @@ public class HealthMvcEndpoint extends AbstractEndpointMvcAdapter<HealthEndpoint
|
|||
|
||||
private boolean isSpringSecurityAuthentication(Principal principal) {
|
||||
return ClassUtils.isPresent("org.springframework.security.core.Authentication",
|
||||
null) && (principal instanceof Authentication);
|
||||
null) && principal instanceof Authentication;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2016 the original author or authors.
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2016 the original author or authors.
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
|
|||
|
|
@ -167,7 +167,8 @@ public class HealthMvcEndpointTests {
|
|||
public void rightAuthorityPresentShouldExposeDetails() throws Exception {
|
||||
this.environment.getPropertySources().addLast(SECURITY_ROLES);
|
||||
Authentication principal = mock(Authentication.class);
|
||||
Set<SimpleGrantedAuthority> authorities = Collections.singleton(new SimpleGrantedAuthority("HERO"));
|
||||
Set<SimpleGrantedAuthority> authorities = Collections
|
||||
.singleton(new SimpleGrantedAuthority("HERO"));
|
||||
doReturn(authorities).when(principal).getAuthorities();
|
||||
given(this.endpoint.invoke())
|
||||
.willReturn(new Health.Builder().up().withDetail("foo", "bar").build());
|
||||
|
|
|
|||
|
|
@ -67,13 +67,15 @@ public class NoSpringSecurityHealthMvcEndpointIntegrationTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void healthWhenRightRoleNotPresentShouldExposeHealthDetails() throws Exception {
|
||||
public void healthWhenRightRoleNotPresentShouldExposeHealthDetails()
|
||||
throws Exception {
|
||||
this.context = new AnnotationConfigWebApplicationContext();
|
||||
this.context.setServletContext(new MockServletContext());
|
||||
this.context.register(TestConfiguration.class);
|
||||
this.context.refresh();
|
||||
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context).build();
|
||||
mockMvc.perform(get("/health").with(getRequestPostProcessor())).andExpect(status().isOk())
|
||||
mockMvc.perform(get("/health").with(getRequestPostProcessor()))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(content().string(containsString("\"status\":\"UP\"")));
|
||||
}
|
||||
|
||||
|
|
@ -93,12 +95,15 @@ public class NoSpringSecurityHealthMvcEndpointIntegrationTests {
|
|||
|
||||
private RequestPostProcessor getRequestPostProcessor() {
|
||||
return new RequestPostProcessor() {
|
||||
|
||||
@Override
|
||||
public MockHttpServletRequest postProcessRequest(MockHttpServletRequest request) {
|
||||
public MockHttpServletRequest postProcessRequest(
|
||||
MockHttpServletRequest request) {
|
||||
Principal principal = mock(Principal.class);
|
||||
request.setUserPrincipal(principal);
|
||||
return request;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -117,6 +122,7 @@ public class NoSpringSecurityHealthMvcEndpointIntegrationTests {
|
|||
public Health health() {
|
||||
return Health.up().withDetail("hello", "world").build();
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@ public class MongoProperties {
|
|||
*/
|
||||
public static final int DEFAULT_PORT = 27017;
|
||||
|
||||
/**
|
||||
* Default URI used when the configured URI is {@code null}.
|
||||
*/
|
||||
public static final String DEFAULT_URI = "mongodb://localhost/test";
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -145,25 +145,21 @@ public class EmbeddedServletContainerAutoConfiguration {
|
|||
if (this.beanFactory == null) {
|
||||
return;
|
||||
}
|
||||
if (ObjectUtils.isEmpty(this.beanFactory.getBeanNamesForType(
|
||||
EmbeddedServletContainerCustomizerBeanPostProcessor.class, true,
|
||||
false))) {
|
||||
RootBeanDefinition beanDefinition = new RootBeanDefinition(
|
||||
EmbeddedServletContainerCustomizerBeanPostProcessor.class);
|
||||
beanDefinition.setSynthetic(true);
|
||||
registry.registerBeanDefinition(
|
||||
"embeddedServletContainerCustomizerBeanPostProcessor",
|
||||
beanDefinition);
|
||||
registerSyntheticBeanIfMissing(registry,
|
||||
"embeddedServletContainerCustomizerBeanPostProcessor",
|
||||
EmbeddedServletContainerCustomizerBeanPostProcessor.class);
|
||||
registerSyntheticBeanIfMissing(registry,
|
||||
"errorPageRegistrarBeanPostProcessor",
|
||||
ErrorPageRegistrarBeanPostProcessor.class);
|
||||
}
|
||||
|
||||
}
|
||||
if (ObjectUtils.isEmpty(this.beanFactory.getBeanNamesForType(
|
||||
ErrorPageRegistrarBeanPostProcessor.class, true, false))) {
|
||||
RootBeanDefinition beanDefinition = new RootBeanDefinition(
|
||||
ErrorPageRegistrarBeanPostProcessor.class);
|
||||
private void registerSyntheticBeanIfMissing(BeanDefinitionRegistry registry,
|
||||
String name, Class<?> beanClass) {
|
||||
if (ObjectUtils.isEmpty(
|
||||
this.beanFactory.getBeanNamesForType(beanClass, true, false))) {
|
||||
RootBeanDefinition beanDefinition = new RootBeanDefinition(beanClass);
|
||||
beanDefinition.setSynthetic(true);
|
||||
registry.registerBeanDefinition("errorPageRegistrarBeanPostProcessor",
|
||||
beanDefinition);
|
||||
|
||||
registry.registerBeanDefinition(name, beanDefinition);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import org.springframework.beans.factory.BeanFactoryAware;
|
|||
import org.springframework.beans.factory.ListableBeanFactory;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* {@link BeanPostProcessor} that applies all {@link EmbeddedServletContainerCustomizer}s
|
||||
|
|
@ -45,6 +46,9 @@ public class EmbeddedServletContainerCustomizerBeanPostProcessor
|
|||
|
||||
@Override
|
||||
public void setBeanFactory(BeanFactory beanFactory) {
|
||||
Assert.isInstanceOf(ListableBeanFactory.class, beanFactory,
|
||||
"EmbeddedServletContainerCustomizerBeanPostProcessor can only be used "
|
||||
+ "with a ListableBeanFactory");
|
||||
this.beanFactory = (ListableBeanFactory) beanFactory;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import org.springframework.beans.factory.BeanFactoryAware;
|
|||
import org.springframework.beans.factory.ListableBeanFactory;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* {@link BeanPostProcessor} that applies all {@link ErrorPageRegistrar}s from the bean
|
||||
|
|
@ -45,6 +46,9 @@ public class ErrorPageRegistrarBeanPostProcessor
|
|||
|
||||
@Override
|
||||
public void setBeanFactory(BeanFactory beanFactory) {
|
||||
Assert.isInstanceOf(ListableBeanFactory.class, beanFactory,
|
||||
"ErrorPageRegistrarBeanPostProcessor can only be used "
|
||||
+ "with a ListableBeanFactory");
|
||||
this.beanFactory = (ListableBeanFactory) beanFactory;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue