1

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.

Antwort

0

Wie haben Sie die Aktuatorabhängigkeit in pom hinzugefügt? Hast du einen Bereich in Abhängigkeit hinzugefügt? Wenn Sie wie folgt hinzugefügt haben, entfernen Sie das Kompilieren oder ändern Sie es zum Test

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
    <scope>compile</scope> 
</dependency> 
Verwandte Themen