Skip to content
This repository was archived by the owner on Jan 27, 2023. It is now read-only.

Commit e6db8d5

Browse files
authored
Merge pull request #1321 from anchore/base-trigger-parameters-unit-test
Add unit test for the BaseTrigger.parameters() method
2 parents bb18b70 + 5671602 commit e6db8d5

File tree

1 file changed

+70
-0
lines changed
  • tests/unit/anchore_engine/services/policy_engine/engine/policy

1 file changed

+70
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import pytest
2+
3+
from anchore_engine.services.policy_engine.engine.policy.gates import (
4+
PackageCheckGate,
5+
BaseTrigger,
6+
)
7+
from anchore_engine.services.policy_engine.engine.policy.gates.dockerfile import (
8+
EffectiveUserTrigger,
9+
)
10+
from anchore_engine.services.policy_engine.engine.policy.gates.npms import (
11+
PkgMatchTrigger,
12+
)
13+
from anchore_engine.services.policy_engine.engine.policy.params import (
14+
CommaDelimitedStringListParameter,
15+
EnumStringParameter,
16+
TriggerParameter,
17+
)
18+
19+
20+
class TestBaseTrigger:
21+
22+
"""
23+
For the purposes of this test, we are using a few random trigger and gate (instead of testing every gate/trigger class combo)
24+
To verify the parameters method works well.
25+
26+
This is specific to the random trigger that was selected, essentially verifying that
27+
the parameters method does what it's supposed to, which is retrieving a dict of
28+
data attributes and their values.
29+
30+
Note: for the gate parameter it is crucial to use a gate that has __lifecycle_state__ == LifecycleStates.eol for this test.
31+
Otherwise, the BaseTrigger constructor won't be able to execute because the parameter validation will fail
32+
"""
33+
34+
@pytest.mark.parametrize(
35+
"param",
36+
[
37+
pytest.param(
38+
{
39+
"trigger": EffectiveUserTrigger,
40+
"gate": PackageCheckGate,
41+
"expected_params": {
42+
"user": CommaDelimitedStringListParameter,
43+
"allowed_type": EnumStringParameter,
44+
},
45+
},
46+
id="effective-user-trigger",
47+
),
48+
pytest.param(
49+
{
50+
"trigger": PkgMatchTrigger,
51+
"gate": PackageCheckGate,
52+
"expected_params": {
53+
"name": TriggerParameter,
54+
"version": TriggerParameter,
55+
},
56+
},
57+
id="npm-pkg-match-trigger",
58+
),
59+
],
60+
)
61+
def test_parameters(self, param):
62+
parameters = param["trigger"](param["gate"]).parameters()
63+
for key, value in param["expected_params"].items():
64+
assert parameters.get(key).__class__ == value
65+
66+
def test_reset(self):
67+
trigger = BaseTrigger(PackageCheckGate)
68+
trigger._fired_instances = [1, 2, 3]
69+
trigger.reset()
70+
assert trigger._fired_instances == []

0 commit comments

Comments
 (0)