Skip to main content

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.