29 from logilab.common.testlib import unittest_main |
29 from logilab.common.testlib import unittest_main |
30 |
30 |
31 from logilab.common.decorators import monkeypatch |
31 from logilab.common.decorators import monkeypatch |
32 |
32 |
33 from cubicweb import Binary, NoSelectableObject, ValidationError |
33 from cubicweb import Binary, NoSelectableObject, ValidationError |
|
34 from cubicweb.schema import RRQLExpression |
34 from cubicweb.devtools.testlib import CubicWebTC |
35 from cubicweb.devtools.testlib import CubicWebTC |
35 from cubicweb.utils import json_dumps |
36 from cubicweb.utils import json_dumps |
36 from cubicweb.uilib import rql_for_eid |
37 from cubicweb.uilib import rql_for_eid |
37 from cubicweb.web import Redirect, RemoteCallFailed |
38 from cubicweb.web import Redirect, RemoteCallFailed |
38 import cubicweb.server.session |
39 import cubicweb.server.session |
806 ['python', 'cubicweb', 'javascript']) |
807 ['python', 'cubicweb', 'javascript']) |
807 self.assertEqual( |
808 self.assertEqual( |
808 req.execute('Any N WHERE T tags P, P is CWUser, T name N').rows, |
809 req.execute('Any N WHERE T tags P, P is CWUser, T name N').rows, |
809 [['javascript']]) |
810 [['javascript']]) |
810 |
811 |
|
812 def test_maydel_perms(self): |
|
813 """Check that AjaxEditRelationCtxComponent calls rdef.check with a |
|
814 sufficient context""" |
|
815 self.remote_call('tag_entity', self.john.eid, ['python']) |
|
816 with self.temporary_permissions( |
|
817 (self.schema['tags'].rdefs['Tag', 'CWUser'], |
|
818 {'delete': (RRQLExpression('S owned_by U'), )}, )): |
|
819 req = self.request(rql='CWUser P WHERE P login "John"', |
|
820 pageid='123', fname='view') |
|
821 ctrl = self.ctrl(req) |
|
822 rset = self.john.as_rset() |
|
823 rset.req = req |
|
824 source = ctrl.publish() |
|
825 # maydel jscall |
|
826 self.assertIn('ajaxBoxRemoveLinkedEntity', source) |
|
827 |
811 def test_pending_insertion(self): |
828 def test_pending_insertion(self): |
812 with self.remote_calling('add_pending_inserts', [['12', 'tags', '13']]) as (_, req): |
829 with self.remote_calling('add_pending_inserts', [['12', 'tags', '13']]) as (_, req): |
813 deletes = get_pending_deletes(req) |
830 deletes = get_pending_deletes(req) |
814 self.assertEqual(deletes, []) |
831 self.assertEqual(deletes, []) |
815 inserts = get_pending_inserts(req) |
832 inserts = get_pending_inserts(req) |