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("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.