Coverage for gws-app/gws/base/auth/_test/access_test.py: 100%
37 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 23:09 +0200
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 23:09 +0200
1from typing import Optional, cast
3import gws
4import gws.test.util as u
6from gws.base.auth import method, provider, user
8mock_provider = cast(gws.AuthProvider, gws.Data(uid='mock_provider'))
9mock_user = user.from_record(mock_provider, dict(localUid='mock', roles=['a', 'b']))
11root = u.gws_root()
14def make_obj(acl):
15 return root.create(gws.Node, permissions=gws.Data(read=gws.u.parse_acl(acl)))
18def test_access_direct():
19 obj = make_obj('allow a')
20 assert mock_user.can_use(obj) is True
22 obj = make_obj('deny a')
23 assert mock_user.can_use(obj) is False
25 obj = make_obj('deny x, allow b')
26 assert mock_user.can_use(obj) is True
28 obj = make_obj('deny x, deny b')
29 assert mock_user.can_use(obj) is False
31 obj = make_obj('deny x')
32 assert mock_user.can_use(obj) is False
35def test_access_context():
36 x = make_obj('allow x')
37 y = make_obj('allow y')
38 z = make_obj('allow z')
39 a = make_obj('allow a')
41 assert mock_user.can_use(x) is False
42 assert mock_user.can_use(x, y, z) is False
43 assert mock_user.can_use(x, y, z, a) is True
46def test_access_context_and_parent():
47 x = make_obj('allow x')
48 y = make_obj('allow y')
49 z = make_obj('allow z')
50 a = make_obj('allow a')
52 assert mock_user.can_use(x) is False
54 x.parent = y
55 y.parent = a
57 assert mock_user.can_use(x) is True