test(e2e): smoke test через Testcontainers + fix audit_log.ip_address INET bug
Phase 1 e2e — proof framework работает: - E2ESupport: Postgres 18 (postgis/postgis:18-3.6) + Kafka (cp-kafka 7.6.0) через Testcontainers, reuse=true. db-init.sql создаёт postgis+btree_gist расширения которые ожидает Liquibase 0001. - application-test.yml: тушит cloud-config/vault/otel/outbox publishing, включает Liquibase autoconfig. Auth disabled для упрощения. - SmokeE2ETest: full e2e — POST dictionary → POST record → GET record → проверка audit_log row. UUID-suffix в dictName для идемпотентности. - master.xml: relativeToChangelogFile=true для всех include — иначе Liquibase из ordinis-app classpath не находит changes/X.xml в JAR. - pom.xml: testcontainers 1.21.3, surefire env DOCKER_HOST + DOCKER_API_VERSION для macOS Docker Desktop. Найден реальный prod-баг: audit_log.ip_address был INET, Hibernate JPA не делает автоматический cast String→INET → INSERT падал. AuditLogger.write обёрнут в try/catch, поэтому тихо съедал ошибку — на staging audit_log оставался пустым после CRUD. - 0012-audit-log-ipaddress-varchar.xml: ALTER COLUMN INET → VARCHAR(64) - AuditLog entity: убрал columnDefinition="inet", length=64.
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# Профиль для @SpringBootTest e2e тестов. Тушит весь cloud-config / vault /
|
||||
# OTel / outbox publishing — оставляем чистый Spring Boot + Postgres + Kafka
|
||||
# Testcontainers.
|
||||
|
||||
spring:
|
||||
cloud:
|
||||
config:
|
||||
enabled: false
|
||||
vault:
|
||||
enabled: false
|
||||
autoconfigure:
|
||||
exclude:
|
||||
- org.springframework.cloud.vault.config.VaultAutoConfiguration
|
||||
- org.springframework.cloud.vault.config.VaultObservationAutoConfiguration
|
||||
- org.springframework.cloud.vault.config.VaultReactiveAutoConfiguration
|
||||
jpa:
|
||||
hibernate:
|
||||
ddl-auto: none
|
||||
properties:
|
||||
hibernate.dialect: org.hibernate.dialect.PostgreSQLDialect
|
||||
hibernate.jdbc.lob.non_contextual_creation: true
|
||||
open-in-view: false
|
||||
liquibase:
|
||||
change-log: db/changelog/master.xml
|
||||
enabled: true
|
||||
kafka:
|
||||
producer:
|
||||
acks: all
|
||||
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
||||
value-serializer: org.apache.kafka.common.serialization.StringSerializer
|
||||
|
||||
ordinis:
|
||||
auth:
|
||||
issuer-uri: ""
|
||||
require-authentication: false
|
||||
allow-query-scope: true
|
||||
outbox:
|
||||
enabled: ${ORDINIS_OUTBOX_ENABLED:false}
|
||||
bundle:
|
||||
cuod:
|
||||
auto-import: ${ORDINIS_BUNDLE_AUTOIMPORT:false}
|
||||
|
||||
otel:
|
||||
sdk:
|
||||
disabled: true
|
||||
|
||||
management:
|
||||
metrics:
|
||||
export:
|
||||
prometheus:
|
||||
enabled: false
|
||||
|
||||
logging:
|
||||
level:
|
||||
root: WARN
|
||||
cloud.nstart.terravault.ordinis: INFO
|
||||
liquibase: WARN
|
||||
org.hibernate.SQL: WARN
|
||||
@@ -0,0 +1,6 @@
|
||||
-- Init SQL для testcontainer Postgres. Liquibase 0001-extensions.xml
|
||||
-- ожидает postgis + btree_gist уже созданными (в прод-кластере CNPG initdb
|
||||
-- их создаёт). В тестах создаём вручную.
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS postgis;
|
||||
CREATE EXTENSION IF NOT EXISTS btree_gist;
|
||||
Reference in New Issue
Block a user