aboutsummaryrefslogtreecommitdiffstats
path: root/test/graph/ac/test_base.py
blob: ad24e3d631d3d2d6483cc9df64031589e1fa5926 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"""

Part of the bsfs test suite.
A copy of the license is provided with the project.
Author: Matthias Baumgartner, 2022
"""
# imports
import unittest

# bsie imports
from bsfs import schema as bsc
from bsfs.namespace import ns
from bsfs.query import ast
from bsfs.triple_store import SparqlStore
from bsfs.utils import URI

# objects to test
from bsfs.graph.ac.base import AccessControlBase


## code ##

class StubAC(AccessControlBase):
    def is_protected_predicate(self, pred):
        pass
    def create(self, node_type, guids):
        pass
    def link_from_node(self, node_type, guids):
        pass
    def link_to_node(self, node_type, guids):
        pass
    def write_literal(self, node_type, guids):
        pass
    def createable(self, node_type, guids):
        pass
    def filter_read(self, node_type, query):
        pass
    def fetch_read(self, node_type, query):
        pass


class TestAccessControlBase(unittest.TestCase):
    def setUp(self):
        self.backend = SparqlStore()
        self.user = URI('http://www.example.com/me')

    def test_essentials(self):
        ac = StubAC(self.backend, self.user)
        # equal construction means equal instance
        self.assertEqual(StubAC(self.backend, self.user), StubAC(self.backend, self.user))
        self.assertEqual(hash(StubAC(self.backend, self.user)), hash(StubAC(self.backend, self.user)))
        self.assertEqual(ac, StubAC(self.backend, self.user))
        self.assertEqual(hash(ac), hash(StubAC(self.backend, self.user)))
        # equivalence respects type
        class Foo(): pass
        self.assertNotEqual(ac, 1234)
        self.assertNotEqual(hash(ac), hash(1234))
        self.assertNotEqual(ac, 'hello')
        self.assertNotEqual(hash(ac), hash('hello'))
        self.assertNotEqual(ac, Foo())
        self.assertNotEqual(hash(ac), hash(Foo()))
        # equivalence respects backend
        self.assertNotEqual(ac, StubAC(SparqlStore(), self.user))
        self.assertNotEqual(hash(ac), hash(StubAC(SparqlStore(), self.user)))
        # equivalence respects user
        self.assertNotEqual(ac, StubAC(self.backend, URI('http://www.example.com/you')))
        self.assertNotEqual(hash(ac), hash(StubAC(self.backend, URI('http://www.example.com/you'))))
        # string conversion
        self.assertEqual(str(ac), f'StubAC({self.user})')
        self.assertEqual(repr(ac), f'StubAC({self.user})')
        # string conversion respects user
        self.assertEqual(str(StubAC(self.backend, URI('http://www.example.com/you'))),
            f'StubAC(http://www.example.com/you)')
        self.assertEqual(repr(StubAC(self.backend, URI('http://www.example.com/you'))),
            f'StubAC(http://www.example.com/you)')


## main ##

if __name__ == '__main__':
    unittest.main()

## EOF ##