|
1
|
|
|
from django.test import TestCase |
|
2
|
|
|
|
|
3
|
|
|
from django.core.exceptions import ValidationError |
|
4
|
|
|
|
|
5
|
|
|
from sigma_core.models.validator import get_validator_by_name, are_validator_fields_valid, is_validator_input_valid |
|
6
|
|
|
from sigma_core.models.validator import Validator |
|
7
|
|
|
|
|
8
|
|
|
class ValidatorTests(TestCase): |
|
9
|
|
|
@classmethod |
|
10
|
|
|
def setUp(self): |
|
11
|
|
|
pass |
|
12
|
|
|
def test_notfound_get_validator_by_name(self): |
|
13
|
|
|
self.assertEqual(get_validator_by_name('notfound-validator'), None) |
|
14
|
|
|
def test_base_get_validator_by_name(self): |
|
15
|
|
|
self.assertNotEqual(get_validator_by_name(Validator.VALIDATOR_NONE), None) |
|
16
|
|
|
|
|
17
|
|
|
class TextValidatorTests(TestCase): |
|
18
|
|
|
@classmethod |
|
19
|
|
|
def setUp(self): |
|
20
|
|
|
pass |
|
21
|
|
|
def test_get_validator_by_name(self): |
|
22
|
|
|
self.assertNotEqual(get_validator_by_name(Validator.VALIDATOR_TEXT), None) |
|
23
|
|
|
def test_regex1(self): |
|
24
|
|
|
fields = {'regex': "\s*(?P<header>[^:]+)\s*:(?P<value>.*?)\s*$", 'message': 'Err msg' } |
|
25
|
|
|
self.assertTrue(are_validator_fields_valid(Validator.VALIDATOR_TEXT, fields)) |
|
26
|
|
|
def test_regex2(self): |
|
27
|
|
|
# The following pattern excludes filenames that end in either bat or exe: |
|
28
|
|
|
# https://docs.python.org/3/howto/regex.html |
|
29
|
|
|
fields = {'regex': ".*[.](?!bat$|exe$).*$", 'message': 'Err msg' } |
|
30
|
|
|
self.assertTrue(are_validator_fields_valid(Validator.VALIDATOR_TEXT, fields)) |
|
31
|
|
|
self.assertTrue(is_validator_input_valid(Validator.VALIDATOR_TEXT, fields, 'file.png')) |
|
32
|
|
|
self.assertFalse(is_validator_input_valid(Validator.VALIDATOR_TEXT, fields, 'file.exe')) |
|
33
|
|
|
def test_evil_regex(self): |
|
34
|
|
|
fields = {'regex': "^(([a-z])+.)+[A-Z]([a-z])+$", 'message': 'Err msg' } |
|
35
|
|
|
value = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!' |
|
36
|
|
|
self.assertTrue(are_validator_fields_valid(Validator.VALIDATOR_TEXT, fields)) |
|
37
|
|
|
self.assertFalse(is_validator_input_valid(Validator.VALIDATOR_TEXT, fields, value)) |
|
38
|
|
|
|