package com.dalab.discovery.client.rest; import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.web.servlet.MockMvc; import com.dalab.discovery.config.dto.ConnectionDiscoveryConfigDTO; import com.dalab.discovery.config.dto.GlobalDiscoveryConfigDTO; import com.dalab.discovery.config.service.IDiscoveryConfigService; import com.dalab.discovery.sd.config.TestDatabaseConfiguration; import com.fasterxml.jackson.databind.ObjectMapper; @SpringBootTest( classes = com.dalab.discovery.application.DADiscoveryAgent.class, properties = { "spring.autoconfigure.exclude=com.google.cloud.spring.autoconfigure.secretmanager.GcpSecretManagerAutoConfiguration,com.google.cloud.spring.autoconfigure.core.GcpAutoConfiguration", "server.port=0" } ) @AutoConfigureMockMvc @ActiveProfiles("test") @Import({TestWebSecurityConfiguration.class, TestDatabaseConfiguration.class}) class DiscoveryConfigControllerIntegrationTest { @Autowired private MockMvc mockMvc; @MockBean private IDiscoveryConfigService configService; @Autowired private ObjectMapper objectMapper; private GlobalDiscoveryConfigDTO globalConfigDTO; private ConnectionDiscoveryConfigDTO connectionConfigDTO; private final String testConnectionId = "conn-123"; @BeforeEach void setUp() { globalConfigDTO = new GlobalDiscoveryConfigDTO(); globalConfigDTO.setDefaultScanIntervalMinutes(60); globalConfigDTO.setEnableAutoRemediation(false); connectionConfigDTO = new ConnectionDiscoveryConfigDTO(); connectionConfigDTO.setIsEnabled(true); connectionConfigDTO.setScanIntervalHours(2); } @Test @WithMockUser(authorities = "ROLE_ADMIN") void getGlobalConfig_AsAdmin_ShouldReturnConfig() throws Exception { when(configService.getGlobalDiscoveryConfig()).thenReturn(globalConfigDTO); mockMvc.perform(get("/api/v1/discovery/config/global")) .andExpect(status().isOk()) .andExpect(jsonPath("$.defaultScanIntervalMinutes").value(60)); } }