Testing i CI/CD
For integrasjonstesting kan du kjøre de nødvendige kompoentene med testcontainers.
Oppsettet her er identisk med lokal kjøring i Docker, med unntak av at OPA kjøres opp i
testcontainers istedenfor med docker compose. Du finner et eksempel på oppsett i en Java-applikasjon her.
Her ville du brukt variabelen opaUrl på samme måte som miljøvariabelen OPA_URL blir tilgjengelig for din
applikasjon på SKIP.
Eksempel på å starte opa med testcontainers i Java:
GenericContainer<?> opaContainer = new GenericContainer<>(DockerImageName.parse("ghcr.io/kartverket/skip-tilgangsstyring-local:latest-dev"))
.withExposedPorts(3010)
.withEnv("SECURITY_CONFIG_PATH", "/securityconfig.yaml")
.withEnv("OPA_HTTP_PORT", "3010")
.withEnv("OPA_PATHS", "/policies,/data/local")
.withFileSystemBind("./securityconfig.yaml", "/securityconfig.yaml", BindMode.READ_ONLY)
.withFileSystemBind("./opa/policies", "/policies", BindMode.READ_ONLY)
.withFileSystemBind("./opa/data/local", "/data/local", BindMode.READ_ONLY)
.withNetwork(network);
opaContainer.start();
opaUrl = String.format("http://%s:%d",
opaContainer.getHost(),
opaContainer.getMappedPort(3010));
tip
Vil du teste kun regelene, uten applikasjonen rundt? Bruk opa test direkte — det er raskere og krever
ingen container. Testcontainers-mønsteret er for å verifisere at integrasjonen mellom app og OPA fungerer.