def test_filter_nested_item_deny_access(self, mock_engine):

        mock_engine.ACLField.objectify_acl.return_value = [["Allow", "someuser", "view"]]

        mock_nested_type = type(
            "mock_type",
            (DataProxy,),
            {
                "__init__": DataProxy.__init__,
                "__setattr__": DataProxy.__setattr__,
                "substitutions": list(),
                "to_dict": DataProxy.to_dict,
            },
        )

        mock_nested_object = mock_nested_type(
            data={
                "_type": "MockNestedType",
                "_acl": [{"action": "allow", "principal": "someuser", "permission": "view"}],
            }
        )

        mock_document = {"_type": "MockParent", "nested_type": [mock_nested_object]}

        mock_authz = type(
            "mock_authz", (ACLAuthorizationPolicy,), {"effective_principals": lambda x, y: ["someusergroup"]}
        )

        mock_registry = type("mock_registry", (object,), {"queryUtility": lambda x, y: mock_authz()})

        mock_request = type("Request", (AuthorizationAPIMixin,), {"registry": mock_registry()})

        result = es.check_relations_permissions(mock_request(), mock_document)
        assert result["nested_type"] == []
 def test_check_relations_permissions_dict(self, mock_check):
     mock_check.return_value = 1
     document = {"one": 2, "two": {}, "three": ["foo", "bar"]}
     request = "Foo"
     checked = es.check_relations_permissions(request, document)
     assert checked == {"one": 1, "two": 1, "three": [1, 1]}
     mock_check.assert_has_calls(
         [call(request, 2), call(request, {}), call(request, "foo"), call(request, "bar")], any_order=True
     )
Example #3
0
 def test_check_relations_permissions_none_dropped(self, mock_check):
     mock_check.return_value = None
     document = {
         'one': 2,
         'two': {},
         'three': ['foo', 'bar']
     }
     checked = es.check_relations_permissions('Foo', document)
     assert checked == {
         'one': None,
         'two': None,
         'three': []
     }
Example #4
0
 def test_check_relations_permissions_dict(self, mock_check):
     mock_check.return_value = 1
     document = {
         'one': 2,
         'two': {},
         'three': ['foo', 'bar']
     }
     request = 'Foo'
     checked = es.check_relations_permissions(request, document)
     assert checked == {
         'one': 1,
         'two': 1,
         'three': [1, 1]
     }
     mock_check.assert_has_calls([
         call(request, 2),
         call(request, {}),
         call(request, 'foo'),
         call(request, 'bar'),
     ], any_order=True)
 def test_check_relations_permissions_none_dropped(self, mock_check):
     mock_check.return_value = None
     document = {"one": 2, "two": {}, "three": ["foo", "bar"]}
     checked = es.check_relations_permissions("Foo", document)
     assert checked == {"one": None, "two": None, "three": []}