Ich habe eine Webanwendung mit einem Stellglied, das unter dem Kontextpfad /manage verfügbar ist und nur für Benutzer mit der Rolle 'Administratoren' über Federsicherheitsintegration verfügbar ist. Tatsächlich funktioniert die Anwendung wie vorgesehen. Ich kämpfe jedoch, um die Web-Anwendung zu testen, d. H. Schreibe Integrationstests unter Verwendung von Springboot-Einrichtungen.Die Endpunkte des Federschuhs sind während des Tests nicht verfügbar
Beim Ausführen eines Tests wie unten, der den Federkontext lädt, habe ich festgestellt, dass die Endpunkte des Aktors nicht registriert wurden.
@RunWith(SpringRunner.class)
@DirtiesContext
@SpringBootTest
@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.AUTO_CONFIGURED)
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class, WithSecurityContextTestExecutionListener.class})
@WebAppConfiguration
@Slf4j
public class ActuatorControllerTest {
private MediaType contentTypeJSON = new MediaType(MediaType.APPLICATION_JSON.getType(), MediaType.APPLICATION_JSON.getSubtype(), StandardCharsets.UTF_8);
protected MockMvc mockMvc;
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public void setUp() throws Exception {
this.webApplicationContext.getBean(HealthEndpoint.class).setEnabled(true);
this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build();
}
@Test
@WithMockUser(username="test",roles={"developers"})
public void user_without_role_administrator_should_not_be_able_to_access_actuator() throws Exception {
mockMvc.perform(get("/manage/health").with(csrf()))
.andExpect(status().isForbidden());
}
@Test
@WithMockUser(username="admin",roles={"administrator"})
public void user_with_role_administrator_should_be_able_to_access_actuator() throws Exception {
mockMvc.perform(get("/manage/health")
.with(csrf())
// I also tried the following approach which miserably failed
// .with(user(buildUserDetails()))
).andExpect(status().isOk());
}
private UserDetails buildUserDetails() {
return User.withUsername("admin").password("admin").roles("administrators").build();
}
}
Log-Datei-Schnipsel
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'environmentEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'healthEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'beansEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'infoEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'loggersEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'metricsEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'traceEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'dumpEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'autoConfigurationReportEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'shutdownEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'configurationPropertiesReportEndpoint': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'endpoints-org.springframework.boot.actuate.endpoint.EndpointProperties': no URL paths identified
2017-06-19 09:09:35.966 DEBUG 986 --- [ main] o.s.w.s.h.BeanNameUrlHandlerMapping : Rejected bean name 'org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration': no URL paths identified
Relevante Ausschnitt aus application.properties unten.
management.port=8080
management.context-path=/manage
management.security.enabled=false
endpoints.health.sensitive=false
management.health.db.enabled=false
management.health.defaults.enabled=true
management.health.diskspace.enabled=true
management.security.roles=administrators
Kann jemand bitte helfen Sie mir und lassen Sie mich wissen, was ich hier falsch machen und wie die abgelehnte bohnenNamensFrage zu lösen voraus zu gehen?
In meinem Fall ist die Version des Federgehäuses und des Stellantriebs 1.5.2.RELEASE.