From 7e763856469fc00cf65a6c25b05ab35493310df0 Mon Sep 17 00:00:00 2001 From: Marius Eriksen Date: Wed, 22 May 2024 15:08:53 +0200 Subject: [PATCH] =?UTF-8?q?Ny=20m=C3=A5te=20=C3=A5=20koble=20seg=20til=20d?= =?UTF-8?q?b?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Giao The Cung --- .../id/InnsendingFerdigstiltMottak.kt | 6 +++-- .../id/PostgresDataSourceBuilder.kt | 27 ++++++++++++------- .../oppslag/journalpost/id/Postgres.kt | 21 +++++---------- .../id/PostgresJournalpostRepositoryTest.kt | 5 ++-- 4 files changed, 32 insertions(+), 27 deletions(-) diff --git a/src/main/kotlin/no/nav/dagpenger/oppslag/journalpost/id/InnsendingFerdigstiltMottak.kt b/src/main/kotlin/no/nav/dagpenger/oppslag/journalpost/id/InnsendingFerdigstiltMottak.kt index f2f923a..96ca935 100644 --- a/src/main/kotlin/no/nav/dagpenger/oppslag/journalpost/id/InnsendingFerdigstiltMottak.kt +++ b/src/main/kotlin/no/nav/dagpenger/oppslag/journalpost/id/InnsendingFerdigstiltMottak.kt @@ -10,8 +10,10 @@ import java.util.UUID private val logger = KotlinLogging.logger { } -class InnsendingFerdigstiltMottak(rapidsConnection: RapidsConnection, private val journalpostRepository: JournalpostRepository) : - River.PacketListener { +class InnsendingFerdigstiltMottak( + rapidsConnection: RapidsConnection, + private val journalpostRepository: JournalpostRepository, +) : River.PacketListener { init { River(rapidsConnection).apply { validate { it.demandValue("@event_name", "innsending_ferdigstilt") } diff --git a/src/main/kotlin/no/nav/dagpenger/oppslag/journalpost/id/PostgresDataSourceBuilder.kt b/src/main/kotlin/no/nav/dagpenger/oppslag/journalpost/id/PostgresDataSourceBuilder.kt index 38fe89f..6c749ad 100644 --- a/src/main/kotlin/no/nav/dagpenger/oppslag/journalpost/id/PostgresDataSourceBuilder.kt +++ b/src/main/kotlin/no/nav/dagpenger/oppslag/journalpost/id/PostgresDataSourceBuilder.kt @@ -3,6 +3,7 @@ package no.nav.dagpenger.oppslag.journalpost.id import ch.qos.logback.core.util.OptionHelper.getEnv import ch.qos.logback.core.util.OptionHelper.getSystemProperty import com.zaxxer.hikari.HikariDataSource +import mu.KotlinLogging import org.flywaydb.core.Flyway import org.flywaydb.core.api.configuration.FluentConfiguration @@ -10,20 +11,19 @@ import org.flywaydb.core.api.configuration.FluentConfiguration internal object PostgresDataSourceBuilder { const val DB_USERNAME_KEY = "DB_USERNAME" const val DB_PASSWORD_KEY = "DB_PASSWORD" - const val DB_DATABASE_KEY = "DB_DATABASE" - const val DB_HOST_KEY = "DB_HOST" - const val DB_PORT_KEY = "DB_PORT" + const val DB_URL_KEY = "DB_URL" private fun getOrThrow(key: String): String = getEnv(key) ?: getSystemProperty(key) + private val logger = KotlinLogging.logger {} val dataSource by lazy { HikariDataSource().apply { - dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource" - addDataSourceProperty("serverName", getOrThrow(DB_HOST_KEY)) - addDataSourceProperty("portNumber", getOrThrow(DB_PORT_KEY)) - addDataSourceProperty("databaseName", getOrThrow(DB_DATABASE_KEY)) - addDataSourceProperty("user", getOrThrow(DB_USERNAME_KEY)) - addDataSourceProperty("password", getOrThrow(DB_PASSWORD_KEY)) + jdbcUrl = + getOrThrow(DB_URL_KEY).ensurePrefix("jdbc:postgresql://").stripCredentials().also { + logger.info("Connecting to $it") + } + username = getOrThrow(DB_USERNAME_KEY) + password = getOrThrow(DB_PASSWORD_KEY) maximumPoolSize = 10 minimumIdle = 1 idleTimeout = 10001 @@ -56,3 +56,12 @@ internal object PostgresDataSourceBuilder { .migrations .size } + +private fun String.stripCredentials() = this.replace(Regex("://.*:.*@"), "://") + +private fun String.ensurePrefix(prefix: String) = + if (this.startsWith(prefix)) { + this + } else { + prefix + this.substringAfter("//") + } diff --git a/src/test/kotlin/no/nav/dagpenger/oppslag/journalpost/id/Postgres.kt b/src/test/kotlin/no/nav/dagpenger/oppslag/journalpost/id/Postgres.kt index 95f404c..d05c781 100644 --- a/src/test/kotlin/no/nav/dagpenger/oppslag/journalpost/id/Postgres.kt +++ b/src/test/kotlin/no/nav/dagpenger/oppslag/journalpost/id/Postgres.kt @@ -3,7 +3,6 @@ package no.nav.dagpenger.oppslag.journalpost.id import com.zaxxer.hikari.HikariDataSource import org.flywaydb.core.internal.configuration.ConfigUtils import org.testcontainers.containers.PostgreSQLContainer -import javax.sql.DataSource internal object Postgres { val instance by lazy { @@ -12,10 +11,10 @@ internal object Postgres { } } - fun withMigratedDb(block: (ds: DataSource) -> Unit) { + fun withMigratedDb(block: () -> Unit) { withCleanDb { PostgresDataSourceBuilder.runMigration() - block(PostgresDataSourceBuilder.dataSource) + block() } } @@ -26,22 +25,16 @@ internal object Postgres { } fun setup() { - System.setProperty(PostgresDataSourceBuilder.DB_HOST_KEY, instance.host) - System.setProperty( - PostgresDataSourceBuilder.DB_PORT_KEY, - instance.getMappedPort(PostgreSQLContainer.POSTGRESQL_PORT).toString(), - ) - System.setProperty(PostgresDataSourceBuilder.DB_DATABASE_KEY, instance.databaseName) - System.setProperty(PostgresDataSourceBuilder.DB_PASSWORD_KEY, instance.password) + System.setProperty(ConfigUtils.CLEAN_DISABLED, "false") + System.setProperty(PostgresDataSourceBuilder.DB_URL_KEY, instance.jdbcUrl) System.setProperty(PostgresDataSourceBuilder.DB_USERNAME_KEY, instance.username) + System.setProperty(PostgresDataSourceBuilder.DB_PASSWORD_KEY, instance.password) } fun tearDown() { - System.clearProperty(PostgresDataSourceBuilder.DB_PASSWORD_KEY) + System.clearProperty(PostgresDataSourceBuilder.DB_URL_KEY) System.clearProperty(PostgresDataSourceBuilder.DB_USERNAME_KEY) - System.clearProperty(PostgresDataSourceBuilder.DB_HOST_KEY) - System.clearProperty(PostgresDataSourceBuilder.DB_PORT_KEY) - System.clearProperty(PostgresDataSourceBuilder.DB_DATABASE_KEY) + System.clearProperty(PostgresDataSourceBuilder.DB_PASSWORD_KEY) System.clearProperty(ConfigUtils.CLEAN_DISABLED) } diff --git a/src/test/kotlin/no/nav/dagpenger/oppslag/journalpost/id/PostgresJournalpostRepositoryTest.kt b/src/test/kotlin/no/nav/dagpenger/oppslag/journalpost/id/PostgresJournalpostRepositoryTest.kt index d9ce381..4f6c2a5 100644 --- a/src/test/kotlin/no/nav/dagpenger/oppslag/journalpost/id/PostgresJournalpostRepositoryTest.kt +++ b/src/test/kotlin/no/nav/dagpenger/oppslag/journalpost/id/PostgresJournalpostRepositoryTest.kt @@ -2,14 +2,15 @@ package no.nav.dagpenger.oppslag.journalpost.id import io.kotest.matchers.shouldBe import no.nav.dagpenger.oppslag.journalpost.id.Postgres.withMigratedDb +import no.nav.dagpenger.oppslag.journalpost.id.PostgresDataSourceBuilder.dataSource import org.junit.jupiter.api.Test import java.util.UUID class PostgresJournalpostRepositoryTest { @Test fun `Skal kunne lagre og hente journalpostId basert på søknadId`() = - withMigratedDb { ds -> - val journalpostRepository = PostgresJournalpostRepository(dataSource = ds) + withMigratedDb { + val journalpostRepository = PostgresJournalpostRepository(dataSource) val søknadId = UUID.randomUUID() val journalpostId = "123" journalpostRepository.lagre(søknadId, journalpostId)