diff --git a/pom.xml b/pom.xml index 110f5584..16b8c9b5 100644 --- a/pom.xml +++ b/pom.xml @@ -63,6 +63,7 @@ dev.vality damsel + 1.674-368f05b dev.vality.geck diff --git a/src/test/java/dev/vality/hooker/config/KafkaTest.java b/src/test/java/dev/vality/hooker/config/KafkaTest.java index 6120c318..1e817304 100644 --- a/src/test/java/dev/vality/hooker/config/KafkaTest.java +++ b/src/test/java/dev/vality/hooker/config/KafkaTest.java @@ -1,19 +1,14 @@ package dev.vality.hooker.config; - -import dev.vality.testcontainers.annotations.KafkaConfig; -import dev.vality.testcontainers.annotations.kafka.KafkaTestcontainerSingleton; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import dev.vality.testcontainers.annotations.KafkaConfig; + @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) -@KafkaTestcontainerSingleton( - properties = {"kafka.topics.invoice.enabled=true"}, - topicsKeys = {"kafka.topics.invoice.id"}) @KafkaConfig public @interface KafkaTest { } \ No newline at end of file diff --git a/src/test/java/dev/vality/hooker/kafka/MachineEventListenerKafkaTest.java b/src/test/java/dev/vality/hooker/kafka/MachineEventListenerKafkaTest.java index e743751f..f1c23488 100644 --- a/src/test/java/dev/vality/hooker/kafka/MachineEventListenerKafkaTest.java +++ b/src/test/java/dev/vality/hooker/kafka/MachineEventListenerKafkaTest.java @@ -13,7 +13,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.testcontainers.containers.KafkaContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -24,11 +30,25 @@ @KafkaTest @PostgresqlSpringBootITest @SpringBootTest +@Testcontainers class MachineEventListenerKafkaTest { public static final String SOURCE_ID = "source_id"; public static final String SOURCE_NS = "source_ns"; + @Container + private static final KafkaContainer kafkaContainer = new KafkaContainer( + DockerImageName.parse("confluentinc/cp-kafka:7.8.0")) + .withEnv("KAFKA_AUTO_CREATE_TOPICS_ENABLE", "true"); + + @DynamicPropertySource + static void kafkaProperties(DynamicPropertyRegistry registry) { + registry.add("kafka.bootstrap-servers", kafkaContainer::getBootstrapServers); + registry.add("spring.kafka.bootstrap-servers", kafkaContainer::getBootstrapServers); + registry.add("kafka.ssl.enabled", () -> "false"); + registry.add("kafka.topics.invoice.enabled", () -> "true"); + } + @Value("${kafka.topics.invoice.id}") private String invoiceTopic; diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml new file mode 100644 index 00000000..8804d43f --- /dev/null +++ b/src/test/resources/application.yml @@ -0,0 +1,42 @@ +testcontainers: + kafka: + confluent: + tag: '7.8.0' +spring: + kafka: + bootstrap-servers: PLAINTEXT:9092 + client-id: hooker + consumer: + group-id: "HookerListener" + enable-auto-commit: false + auto-offset-reset: earliest + max-poll-records: 20 + datasource: + hikari: + data-source-properties: + search_path: hook,public + flyway: + schemas: hook + table: schema_version + +kafka: + topics: + invoice: + id: mg-invoice-100-2 + enabled: false + concurrency: 8 + topic: + webhook-dispatcher: + name: webhook-dispatcher-topic + produce: + enabled: true + +service: + invoicing: + url: http://localhost:8022/v1/processing/invoicing + networkTimeout: 5000 + +limit: + perShop: 10 + perParty: 5 +