Skip to content

Commit

Permalink
Fikser lokalt oppsett.
Browse files Browse the repository at this point in the history
  • Loading branch information
ramrock93 committed Jan 17, 2024
1 parent 2044833 commit 876798f
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 8 deletions.
3 changes: 1 addition & 2 deletions src/test/kotlin/no/nav/k9punsj/AbstractContainerBaseTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,12 @@ import org.springframework.test.context.ContextConfiguration
import org.springframework.test.context.junit.jupiter.SpringExtension
import org.springframework.test.jdbc.JdbcTestUtils
import org.springframework.test.web.reactive.server.WebTestClient
import org.springframework.util.ResourceUtils
import org.testcontainers.containers.PostgreSQLContainer
import org.testcontainers.utility.MountableFile
import java.net.URI


private class PostgreSQLContainer12 : PostgreSQLContainer<PostgreSQLContainer12>("postgres:12.2-alpine")
class PostgreSQLContainer12 : PostgreSQLContainer<PostgreSQLContainer12>("postgres:12.2-alpine")

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@DirtiesContext
Expand Down
39 changes: 35 additions & 4 deletions src/test/kotlin/no/nav/k9punsj/K9PunsjApplicationWithMocks.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,32 @@ import com.github.tomakehurst.wiremock.WireMockServer
import kotlinx.coroutines.runBlocking
import no.nav.k9punsj.journalpost.JournalpostService
import no.nav.k9punsj.journalpost.dto.PunsjJournalpost
import no.nav.k9punsj.util.DbContainerInitializer
import no.nav.k9punsj.wiremock.initWireMock
import org.springframework.boot.Banner
import org.springframework.boot.builder.SpringApplicationBuilder
import org.springframework.boot.test.util.TestPropertyValues
import org.springframework.context.ApplicationContextInitializer
import org.springframework.context.ConfigurableApplicationContext
import org.testcontainers.utility.MountableFile
import java.net.URI
import java.util.UUID
import java.util.*

internal class K9PunsjApplicationWithMocks {
internal companion object {
private val postgreSQLContainer12 = PostgreSQLContainer12().apply {
// Cloud SQL har wal_level = 'logical' på grunn av flagget cloudsql.logical_decoding i
// naiserator.yaml. Vi må sette det samme lokalt for at flyway migrering skal fungere.
withCommand("postgres", "-c", "wal_level=logical")

// Kopierer init.sql til containeren med script for å opprette rollen k9-punsj-admin.
withCopyFileToContainer(
MountableFile.forClasspathResource(
"db/init.sql"
),
"/docker-entrypoint-initdb.d/init.sql"
)
}

internal fun startup(
wireMockServer: WireMockServer,
port: Int,
Expand All @@ -29,7 +45,8 @@ internal class K9PunsjApplicationWithMocks {
MockConfiguration.config(
wireMockServer = wireMockServer,
port = port,
azureV2Url = azureV2Url
azureV2Url = azureV2Url,
postgresqlContainer = postgreSQLContainer12
)
)
.main(K9PunsjApplication::class.java)
Expand Down Expand Up @@ -63,9 +80,11 @@ internal class K9PunsjApplicationWithMocks {
rootDirectory = "src/test/resources"
)

postgreSQLContainer12.start()

Runtime.getRuntime().addShutdownHook(
Thread {
DbContainerInitializer.postgresContainer.close()
postgreSQLContainer12.close()
wireMockServer.stop()
}
)
Expand All @@ -88,4 +107,16 @@ internal class K9PunsjApplicationWithMocks {
}
}
}

internal class PostgresqlContainerInitializer : ApplicationContextInitializer<ConfigurableApplicationContext> {
override fun initialize(configurableApplicationContext: ConfigurableApplicationContext) {
postgreSQLContainer12.start()

TestPropertyValues.of(
"no.nav.db.url=${postgreSQLContainer12.jdbcUrl}",
"no.nav.db.username=${postgreSQLContainer12.username}",
"no.nav.db.password=${postgreSQLContainer12.password}"
).applyTo(configurableApplicationContext.environment)
}
}
}
7 changes: 5 additions & 2 deletions src/test/kotlin/no/nav/k9punsj/MockConfiguration.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import no.nav.helse.dusseldorf.testsupport.wiremock.getAzureV2TokenUrl
import no.nav.helse.dusseldorf.testsupport.wiremock.getAzureV2WellKnownUrl
import no.nav.helse.dusseldorf.testsupport.wiremock.getNaisStsTokenUrl
import no.nav.helse.dusseldorf.testsupport.wiremock.getNaisStsWellKnownUrl
import no.nav.k9punsj.util.DbContainerInitializer
import no.nav.k9punsj.wiremock.getAaregBaseUrl
import no.nav.k9punsj.wiremock.getDokarkivBaseUrl
import no.nav.k9punsj.wiremock.getEregBaseUrl
Expand All @@ -20,7 +19,8 @@ internal object MockConfiguration {
internal fun config(
wireMockServer: WireMockServer,
port: Int,
azureV2Url: URI?
azureV2Url: URI?,
postgresqlContainer: PostgreSQLContainer12? = null
): Map<String, String> {
val (wellKnownUrl, tokenUrl) = when (azureV2Url) {
null -> wireMockServer.getAzureV2WellKnownUrl() to wireMockServer.getAzureV2TokenUrl()
Expand Down Expand Up @@ -50,6 +50,9 @@ internal object MockConfiguration {
"SWAGGER_SERVER_BASE_URL" to "http://localhost:$port",
"KAFKA_BOOTSTRAP_SERVERS" to "localhost:9093",
"DEFAULTDS_VAULT_MOUNTPATH" to "",
"DEFAULTDS_URL" to "${postgresqlContainer?.jdbcUrl}",
"DEFAULTDS_USERNAME" to "${postgresqlContainer?.username}",
"DEFAULTDS_PASSWORD" to "${postgresqlContainer?.password}",
"NAIS_STS_TOKEN_ENDPOINT" to wireMockServer.getNaisStsTokenUrl(),
"AUDITLOGGER_ENABLED" to "false",
"ABAC_PDP_ENDPOINT_URL" to "",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ import no.nav.k9punsj.felles.dto.PeriodeDto
import no.nav.k9punsj.felles.dto.SøknadEntitet
import no.nav.k9punsj.integrasjoner.k9sak.Fagsak
import no.nav.k9punsj.integrasjoner.k9sak.K9SakService
import org.springframework.context.annotation.Profile
import org.springframework.stereotype.Component
import java.time.LocalDate

@Component
@Profile("test") // TODO: Erstatt med mock
internal class TestK9SakService : K9SakService {
override suspend fun hentPerioderSomFinnesIK9(
ker: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ import no.nav.k9punsj.integrasjoner.pdl.IdentPdl
import no.nav.k9punsj.integrasjoner.pdl.PdlResponse
import no.nav.k9punsj.integrasjoner.pdl.PdlService
import no.nav.k9punsj.integrasjoner.pdl.Personopplysninger
import org.springframework.context.annotation.Profile
import org.springframework.stereotype.Component
import java.time.LocalDate

@Component
@Profile("test") // TODO: Erstatt med mock
internal class TestPdlService : PdlService {
private val dummyFnr = "11111111111"
private val dummyAktørId = "1000000000000"
Expand Down

0 comments on commit 876798f

Please sign in to comment.