1Open Policy Agent(1)                                      Open Policy Agent(1)
2
3
4

NAME

6       opa-test - Execute Rego test cases
7
8
9

SYNOPSIS

11       opa test  [path [...]] [flags]
12
13
14

DESCRIPTION

16       Execute Rego test cases.
17
18
19       The 'test' command takes a file or directory path as input and executes
20       all test cases discovered in matching files. Test cases are rules whose
21       names have the prefix "test_".
22
23
24       If the '--bundle' option is specified the paths will be treated as pol‐
25       icy bundles and loaded following standard bundle conventions. The  path
26       can  be  a compressed archive file or a directory which will be treated
27       as a bundle. Without the '--bundle' flag OPA will recursively load  ALL
28       *.rego, *.json, and *.yaml files for evaluating the test cases.
29
30
31       Test  cases  under development may be prefixed "todo_" in order to skip
32       their execution, while still getting marked as skipped in the test  re‐
33       sults.
34
35
36       Example policy (example/authz.rego):
37
38
39              package authz
40
41              allow {
42                   input.path = ["users"]
43                   input.method = "POST"
44              }
45
46              allow {
47                   input.path = ["users", profile_id]
48                   input.method = "GET"
49                   profile_id = input.user_id
50              }
51
52
53
54       Example test (example/authz_test.rego):
55
56
57              package authz
58
59              test_post_allowed {
60                   allow with input as {"path": ["users"], "method": "POST"}
61              }
62
63              test_get_denied {
64                   not allow with input as {"path": ["users"], "method": "GET"}
65              }
66
67              test_get_user_allowed {
68                   allow with input as {"path": ["users", "bob"], "method": "GET", "user_id": "bob"}
69              }
70
71              test_get_another_user_denied {
72                   not allow with input as {"path": ["users", "bob"], "method": "GET", "user_id": "alice"}
73              }
74
75              todo_test_user_allowed_http_client_data {
76                   false # Remember to test this later!
77              }
78
79
80
81       Example test run:
82
83
84              $ opa test ./example/
85
86
87
88       If used with the '--bench' option then tests will be benchmarked.
89
90
91       Example benchmark run:
92
93
94              $ opa test --bench ./example/
95
96
97
98       The  optional "gobench" output format conforms to the Go Benchmark Data
99       Format.
100
101
102

OPTIONS

104       --bench[=false]      benchmark the unit tests
105
106
107       --benchmem[=true]      report memory allocations with benchmark results
108
109
110       -b, --bundle[=false]      load paths as bundle files or  root  directo‐
111       ries
112
113
114       --count=1      number of times to repeat each test
115
116
117       -c, --coverage[=false]      report coverage (overrides debug tracing)
118
119
120       --explain=fails      enable query explanations
121
122
123       -f, --format=pretty      set output format
124
125
126       -h, --help[=false]      help for test
127
128
129       --ignore=[]       set file and directory names to ignore during loading
130       (e.g., '.*' excludes hidden files)
131
132
133       -m, --max-errors=10      set the number of errors to allow before  com‐
134       pilation fails early
135
136
137       -r, --run=""      run only test cases matching the regular expression.
138
139
140       -t, --target=rego      set the runtime to exercise
141
142
143       --threshold=0      set coverage threshold and exit with non-zero status
144       if coverage is less than threshold %
145
146
147       --timeout=0s      set test timeout (default 5s, 30s when benchmarking)
148
149
150       -v, --verbose[=false]      set verbose reporting mode
151
152
153

SEE ALSO

155       opa(1)
156
157
158
159                                   Jan 2023               Open Policy Agent(1)
Impressum