Skip to content

Commit

Permalink
Generalized validate_rule_collection into validate_rules
Browse files Browse the repository at this point in the history
validate_rules requires only an iterator over SigmRule objects and not a
RuleCollection.
  • Loading branch information
thomaspatzke committed Oct 3, 2022
1 parent 433aef3 commit 80b3700
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
8 changes: 4 additions & 4 deletions sigma/validation.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from collections import defaultdict
from typing import DefaultDict, Dict, Iterable, List, Set, Type
from typing import DefaultDict, Dict, Iterable, Iterator, List, Set, Type
from uuid import UUID
from sigma.collection import SigmaCollection
from sigma.exceptions import SigmaConfigurationError
Expand Down Expand Up @@ -120,9 +120,9 @@ def finalize(self) -> List[SigmaValidationIssue]:
for issue in validator.finalize()
]

def validate_rule_collection(self, rule_collection : SigmaCollection) -> List[SigmaValidationIssue]:
def validate_rules(self, rules : Iterator[SigmaRule]) -> List[SigmaValidationIssue]:
"""
Validate a Sigma rule collection. This method runs all validators on all rules and finalizes
Validate Sigma rules. This method runs all validators on all rules and finalizes
the validators at the end.
:param rule_collection: Rule collection that should be validated.
Expand All @@ -132,6 +132,6 @@ def validate_rule_collection(self, rule_collection : SigmaCollection) -> List[Si
"""
return [
issue
for rule in rule_collection
for rule in rules
for issue in self.validate_rule(rule)
] + self.finalize()
6 changes: 3 additions & 3 deletions tests/test_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
from sigma.collection import SigmaCollection
from sigma.validators.metadata import IdentifierExistenceValidator, IdentifierUniquenessValidator, IdentifierExistenceIssue, IdentifierCollisionIssue

def test_sigmavalidator_validate_rule_collection(rule_with_id, rule_without_id, rules_with_id_collision):
def test_sigmavalidator_validate_rules(rule_with_id, rule_without_id, rules_with_id_collision):
rules = SigmaCollection([rule_with_id, rule_without_id, *rules_with_id_collision])
validator = SigmaValidator({ IdentifierExistenceValidator, IdentifierUniquenessValidator })
issues = validator.validate_rule_collection(rules)
issues = validator.validate_rules(rules)
assert issues == [
IdentifierExistenceIssue([rule_without_id]),
IdentifierCollisionIssue(rules_with_id_collision, UUID("32532a0b-e56c-47c9-bcbb-3d88bd670c37")),
Expand All @@ -24,7 +24,7 @@ def test_sigmavalidator_exclusions(rule_with_id, rule_without_id, rules_with_id_
UUID("32532a0b-e56c-47c9-bcbb-3d88bd670c37"): { IdentifierUniquenessValidator },
}
validator = SigmaValidator({ IdentifierExistenceValidator, IdentifierUniquenessValidator }, exclusions)
issues = validator.validate_rule_collection(rules)
issues = validator.validate_rules(rules)
assert issues == [
IdentifierExistenceIssue([rule_without_id]),
]
Expand Down

0 comments on commit 80b3700

Please sign in to comment.