tests: add tests for workflow status item check_auth method

This commit is contained in:
Frédéric Péters 2014-12-31 09:40:41 +01:00
parent dd630465b9
commit e42c86a6d7
1 changed files with 49 additions and 0 deletions

View File

@ -5,6 +5,8 @@ from quixote import cleanup
from quixote.http_request import HTTPRequest
from wcs.formdef import FormDef
from wcs.roles import Role
from wcs.workflows import WorkflowStatusItem
from wcs.wf.jump import JumpWorkflowStatusItem
from utilities import create_temporary_pub
@ -44,3 +46,50 @@ def test_jump_datetime_condition():
item.condition = 'datetime.datetime.now() > datetime.datetime(%s, %s, %s)' % \
tomorrow.timetuple()[:3]
assert item.must_jump(formdata) is False
def test_check_auth():
user = pub.user_class(name='foo')
user.store()
role = Role(name='bar1')
role.store()
formdef = FormDef()
formdef.name = 'baz'
formdef.store()
formdata = formdef.data_class()()
status_item = WorkflowStatusItem()
assert status_item.check_auth(formdata, user) is True
status_item.by = []
assert status_item.check_auth(formdata, user) is False
status_item.by = ['logged-users']
assert status_item.check_auth(formdata, user) is True
status_item.by = [role.id]
assert status_item.check_auth(formdata, user) is False
status_item.by = [int(role.id)]
assert status_item.check_auth(formdata, user) is False
user.roles = [role.id]
status_item.by = [role.id]
assert status_item.check_auth(formdata, user) is True
status_item.by = [int(role.id)]
assert status_item.check_auth(formdata, user) is True
status_item.by = ['_submitter']
assert status_item.check_auth(formdata, user) is False
formdata.user_id = user.id
assert status_item.check_auth(formdata, user) is True
formdata.user_id = None
status_item.by = ['_receiver']
assert status_item.check_auth(formdata, user) is False
formdata.workflow_roles = {'_receiver': user.id}
assert status_item.check_auth(formdata, user) is True
formdef.workflow_roles = {'_receiver': user.id}
formdata.workflow_roles = None
assert status_item.check_auth(formdata, user) is True