Server IP : 184.154.167.98 / Your IP : 3.144.3.235 Web Server : Apache System : Linux pink.dnsnetservice.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 User : puertode ( 1767) PHP Version : 8.2.26 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /lib/python3.6/site-packages/tracer/tests/ |
Upload File : |
from .__meta__ import * from tracer.paths import DATA_DIR from tracer.resources.rules import Rules, Rule try: from unittest.mock import patch, mock_open builtins_open = "builtins.open" except: from mock import patch, mock_open builtins_open = "__builtin__.open" class TestRules(unittest.TestCase): @classmethod def setUpClass(cls): cls.DEFINITIONS = [x for x in Rules.DEFINITIONS if x.startswith(DATA_DIR)] def setUp(self): Rules.DEFINITIONS = self.DEFINITIONS Rules._rules = None def test_rules_types(self): for rule in Rules.all(): self.assertIsInstance(rule, Rule) def test_rules_attributes(self): i = 1 for r in Rules.all(): if ("name" not in r) or ("action" not in r): self.fail("Missing attributes in rule #" + str(i)) if r.action not in Rules.ACTIONS.values(): self.fail("Unknown action in rule: " + r.name) if len(r) > 2: self.fail("Unsupported attributes in rule: " + r.name) i += 1 def test_rules_duplicity(self): rules = Rules.all() for r in rules: if rules.count(r) > 1: self.fail("Duplicate rules for: " + r.name) def test_app_with_no_rule(self): self.assertIsNone(Rules.find("NON_EXISTING_APPLICATION")) def test_representations(self): rule = Rule({"name": "foo"}) self.assertEqual(str(rule), "<Rule: foo>") self.assertEqual(repr(rule), "<Rule: foo>") def test_update(self): r1 = Rule({"name": "foo", "action": "bar"}) r2 = Rule({"name": "foo", "action": "baz"}) r1.update(r2) self.assertEqual(r1.action, "baz") def test_load(self): """ Test parsing a single XML file with rules """ Rules.DEFINITIONS = ["whatever-file.xml"] data = ( "<rules>" " <rule name='foo' action='return' />" " <rule name='bar' />" "</rules>" ) with patch(builtins_open, mock_open(read_data=data)): rules = Rules.all() self.assertEqual(len(rules), 2) self.assertTrue(all([isinstance(x, Rule) for x in rules])) self.assertEqual(rules[0].name, "foo") self.assertEqual(rules[0].action, "return") self.assertEqual(rules[1].name, "bar") def _count(self, app_name, apps): count = 0 for a in apps: if a.name == app_name: count += 1 return count if __name__ == '__main__': unittest.main()