def test_write_manually_1(self): obj = AliasRule('/foo', '/bar') expected = ' alias /foo -> /bar,' self.assertEqual(expected, obj.get_clean(2), 'unexpected clean rule') self.assertEqual(expected, obj.get_raw(2), 'unexpected raw rule')
def test_write_manually_2(self): obj = AliasRule('/foo 2', '/bar 2') expected = ' alias "/foo 2" -> "/bar 2",' self.assertEqual(expected, obj.get_clean(2), 'unexpected clean rule') self.assertEqual(expected, obj.get_raw(2), 'unexpected raw rule')
def _check_invalid_rawrule(self, rawrule, matches_regex=False): obj = None self.assertEqual(AliasRule.match(rawrule), matches_regex) with self.assertRaises(AppArmorException): obj = AliasRule.parse(rawrule) self.assertIsNone(obj, 'AliasRule handed back an object unexpectedly')
def _run_test(self, rawrule, expected): self.assertTrue(AliasRule.match(rawrule)) obj = AliasRule.parse(rawrule) clean = obj.get_clean() raw = obj.get_raw() self.assertEqual(expected.strip(), clean, 'unexpected clean rule') self.assertEqual(rawrule.strip(), raw, 'unexpected raw rule')
def testAdd_alias_2(self): self.pl.add_alias('/etc/apparmor.d/bin.foo', AliasRule('/foo', '/bar')) self.pl.add_alias('/etc/apparmor.d/bin.foo', AliasRule('/xyz', '/zyx')) self.assertEqual(list(self.pl.files.keys()), ['/etc/apparmor.d/bin.foo']) self.assertEqual(self.pl.get_clean('/etc/apparmor.d/bin.foo'), ['alias /foo -> /bar,', 'alias /xyz -> /zyx,', '']) self.assertEqual(self.pl.get_raw('/etc/apparmor.d/bin.foo'), ['alias /foo -> /bar,', 'alias /xyz -> /zyx,', ''])
class AliasFromInit(AliasTest): tests = [ # AliasRule object comment orig_path target (AliasRule('/foo', '/bar'), exp('', '/foo', '/bar')), (AliasRule('/foo', '/bar', comment='# cmt'), exp('# cmt', '/foo', '/bar')), ] def _run_test(self, obj, expected): self._compare_obj(obj, expected)
def testAdd_alias_two_targets(self): self.pl.add_alias('/etc/apparmor.d/bin.foo', AliasRule('/foo', '/bar')) self.pl.add_alias('/etc/apparmor.d/bin.foo', AliasRule('/foo', '/another_target')) self.assertEqual(list(self.pl.files.keys()), ['/etc/apparmor.d/bin.foo']) self.assertEqual( self.pl.get_clean('/etc/apparmor.d/bin.foo'), ['alias /foo -> /bar,', 'alias /foo -> /another_target,', '']) self.assertEqual( self.pl.get_raw('/etc/apparmor.d/bin.foo'), ['alias /foo -> /bar,', 'alias /foo -> /another_target,', ''])
def test_invalid_is_equal(self): obj = AliasRule.parse('alias /foo -> /bar,') testobj = BaseRule() # different type with self.assertRaises(AppArmorBug): obj.is_equal(testobj)
def test_dedup_alias_1(self): self.pl.add_alias('/etc/apparmor.d/bin.foo', AliasRule('/foo', '/bar')) self.pl.add_alias('/etc/apparmor.d/bin.foo', AliasRule('/foo', '/another_target')) self.pl.add_alias('/etc/apparmor.d/bin.foo', AliasRule('/foo', '/bar')) # duplicate deleted = self.pl.delete_preamble_duplicates('/etc/apparmor.d/bin.foo') self.assertEqual(deleted, 1) self.assertEqual(list(self.pl.files.keys()), ['/etc/apparmor.d/bin.foo']) self.assertEqual( self.pl.get_clean('/etc/apparmor.d/bin.foo'), ['alias /foo -> /bar,', 'alias /foo -> /another_target,', '']) self.assertEqual( self.pl.get_raw('/etc/apparmor.d/bin.foo'), ['alias /foo -> /bar,', 'alias /foo -> /another_target,', ''])
def _run_test(self, param, expected): obj = AliasRule.parse(self.rule) check_obj = AliasRule.parse(param) self.assertTrue(AliasRule.match(param)) self.assertEqual(obj.is_equal(check_obj), expected[0], 'Mismatch in is_equal, expected %s' % expected[0]) self.assertEqual( obj.is_equal(check_obj, True), expected[1], 'Mismatch in is_equal/strict, expected %s' % expected[1]) self.assertEqual(obj.is_covered(check_obj), expected[2], 'Mismatch in is_covered, expected %s' % expected[2]) self.assertEqual( obj.is_covered(check_obj, True, True), expected[3], 'Mismatch in is_covered/exact, expected %s' % expected[3])
def test_ruleset_1(self): ruleset = AliasRuleset() rules = [ 'alias /foo -> /bar,', ' alias /asdf -> /whatever ,', 'alias /asdf -> /somewhere,', 'alias /foo -> /bar,', ] expected_raw = [ 'alias /foo -> /bar,', 'alias /asdf -> /whatever ,', 'alias /asdf -> /somewhere,', 'alias /foo -> /bar,', '', ] expected_clean = [ 'alias /asdf -> /somewhere,', 'alias /asdf -> /whatever,', 'alias /foo -> /bar,', 'alias /foo -> /bar,', '', ] expected_clean_unsorted = [ 'alias /foo -> /bar,', 'alias /asdf -> /whatever,', 'alias /asdf -> /somewhere,', 'alias /foo -> /bar,', '', ] for rule in rules: ruleset.add(AliasRule.parse(rule)) self.assertEqual(expected_raw, ruleset.get_raw()) self.assertEqual(expected_clean, ruleset.get_clean()) self.assertEqual(expected_clean_unsorted, ruleset.get_clean_unsorted())
def test_invalid_deny(self): with self.assertRaises(AppArmorBug): AliasRule('/foo', '/bar', deny=True)
def _run_test(self, params, expected): with self.assertRaises(expected): AliasRule(params[0], params[1])
def _run_test(self, rawrule, expected): self.assertEqual(AliasRule.match(rawrule), expected[0]) with self.assertRaises(expected[1]): AliasRule.parse(rawrule)
def _run_test(self, rawrule, expected): self.assertTrue(AliasRule.match(rawrule)) obj = AliasRule.parse(rawrule) self.assertEqual(rawrule.strip(), obj.raw_rule) self._compare_obj(obj, expected)
def test_invalid_audit(self): with self.assertRaises(AppArmorBug): AliasRule('/foo', '/bar', audit=True)
def testAdd_alias_error_2(self): with self.assertRaises(AppArmorBug): self.pl.add_alias('/etc/apparmor.d/bin.foo', AliasRule('/foo', None)) # target None insteadd of str self.assertEqual(list(self.pl.files.keys()), [])
def _run_test(self, params, expected): obj = AliasRule._parse(params) self.assertEqual(obj.logprof_header(), expected)
def test_missing_params_2(self): with self.assertRaises(TypeError): AliasRule('/foo')