1# Authors: Karl MacMillan <kmacmillan@mentalrootkit.com>
2#
3# Copyright (C) 2006 Red Hat
4# see file 'COPYING' for use and warranty information
5#
6# This program is free software; you can redistribute it and/or
7# modify it under the terms of the GNU General Public License as
8# published by the Free Software Foundation; version 2 only
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, write to the Free Software
17# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18#
19
20import unittest
21import sepolgen.objectmodel
22
23class TestInfoFlow(unittest.TestCase):
24    def test_from_file(self):
25        info = sepolgen.objectmodel.PermMappings()
26        fd = open("perm_map")
27        info.from_file(fd)
28        fd.close()
29
30        pm = info.get("filesystem", "mount")
31        self.assertEqual(pm.perm, "mount")
32        self.assertEqual(pm.dir, sepolgen.objectmodel.FLOW_WRITE)
33        self.assertEqual(pm.weight, 1)
34
35        self.assertRaises(KeyError, info.get, "filesystem", "foo")
36
37        pm = info.getdefault("filesystem", "foo")
38        self.assertEqual(pm.perm, "foo")
39        self.assertEqual(pm.dir, sepolgen.objectmodel.FLOW_BOTH)
40        self.assertEqual(pm.weight, 5)
41
42        pm = info.getdefault("foo", "bar")
43        self.assertEqual(pm.perm, "bar")
44        self.assertEqual(pm.dir, sepolgen.objectmodel.FLOW_BOTH)
45        self.assertEqual(pm.weight, 5)
46