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("openpolicyagent/opa:latest"))
.withExposedPorts(3010)
.withCommand("run", "--server", "/.opa/policy", "/.opa/data/local")
.withFileSystemBind("./.opa/policy", "/.opa/policy", BindMode.READ_ONLY)
.withFileSystemBind("./.opa/data/local", "/.opa/data/local", BindMode.READ_ONLY)
.withNetwork(network);
opaContainer.start();
opaUrl = String.format("http://%s:%d",
opaContainer.getHost(),
opaContainer.getMappedPort(8181));
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.