package de.dev089.eventproducer.web; import de.dev089.eventproducer.producer.HealthRequestProducer; 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.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @SpringBootTest(properties = { "RABBITMQ_HOST=localhost", "RABBITMQ_PORT=5672", "RABBITMQ_USERNAME=guest", "RABBITMQ_PASSWORD=guest" }) @AutoConfigureMockMvc class RequestProducerControllerIT { @Autowired private MockMvc mockMvc; @MockBean private HealthRequestProducer healthRequestProducer; @Test void postPopulate_acceptsValidRequest() throws Exception { mockMvc.perform(post("/api/events/populate") .contentType(MediaType.APPLICATION_JSON) .content("{\"message\":\"hello\"}")) .andExpect(status().isAccepted()); verify(healthRequestProducer).publishToDefaultQueue(any()); } @Test void postPopulate_rejectsInvalidRequest() throws Exception { mockMvc.perform(post("/api/events/populate") .contentType(MediaType.APPLICATION_JSON) .content("{\"message\":\"\"}")) .andExpect(status().isBadRequest()); } }