You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.3 KiB
63 lines
2.3 KiB
# -*- coding: utf-8 -*-
|
|
# pylint:disable=line-too-long
|
|
|
|
import test_engine
|
|
|
|
class TestACLFormulaUserActions(test_engine.EngineTestCase):
|
|
def test_acl_actions(self):
|
|
# Adding or updating ACLRules automatically includes aclFormula compilation.
|
|
|
|
# Single Add
|
|
out_actions = self.apply_user_action(
|
|
['AddRecord', '_grist_ACLRules', None, {"resource": 1, "aclFormula": "user.UserID == 7"}],
|
|
)
|
|
self.assertPartialOutActions(out_actions, { "stored": [
|
|
["AddRecord", "_grist_ACLRules", 1, {"resource": 1, "aclFormula": "user.UserID == 7",
|
|
"aclFormulaParsed": '["Eq", ["Attr", ["Name", "user"], "UserID"], ["Const", 7]]',
|
|
"rulePos": 1.0
|
|
}],
|
|
]})
|
|
|
|
# Single Update
|
|
out_actions = self.apply_user_action(
|
|
['UpdateRecord', '_grist_ACLRules', 1, {
|
|
"aclFormula": "user.UserID == 8",
|
|
"aclFormulaParsed": "hello"
|
|
}],
|
|
)
|
|
self.assertPartialOutActions(out_actions, { "stored": [
|
|
["UpdateRecord", "_grist_ACLRules", 1, {
|
|
"aclFormula": "user.UserID == 8",
|
|
"aclFormulaParsed": '["Eq", ["Attr", ["Name", "user"], "UserID"], ["Const", 8]]',
|
|
}],
|
|
]})
|
|
|
|
# BulkAddRecord
|
|
out_actions = self.apply_user_action(['BulkAddRecord', '_grist_ACLRules', [None, None], {
|
|
"resource": [1, 1],
|
|
"aclFormula": ["user.IsGood", "user.IsBad"],
|
|
"aclFormulaParsed": ["[1]", '["ignored"]'], # Should get overwritten
|
|
}])
|
|
self.assertPartialOutActions(out_actions, { "stored": [
|
|
[ 'BulkAddRecord', '_grist_ACLRules', [2, 3], {
|
|
"resource": [1, 1],
|
|
"aclFormula": ["user.IsGood", "user.IsBad"],
|
|
"aclFormulaParsed": [ # Gets overwritten
|
|
'["Attr", ["Name", "user"], "IsGood"]',
|
|
'["Attr", ["Name", "user"], "IsBad"]',
|
|
],
|
|
"rulePos": [2.0, 3.0], # Gets filled in.
|
|
}],
|
|
]})
|
|
|
|
# BulkUpdateRecord
|
|
out_actions = self.apply_user_action(['BulkUpdateRecord', '_grist_ACLRules', [2, 3], {
|
|
"aclFormula": ["not user.IsGood", ""],
|
|
}])
|
|
self.assertPartialOutActions(out_actions, { "stored": [
|
|
['BulkUpdateRecord', '_grist_ACLRules', [2, 3], {
|
|
"aclFormula": ["not user.IsGood", ""],
|
|
"aclFormulaParsed": ['["Not", ["Attr", ["Name", "user"], "IsGood"]]', ''],
|
|
}],
|
|
]})
|