105 lines
3.8 KiB
Python
Raw Normal View History

"""User."""
2022-06-30 11:21:02 -04:00
from tests.spiffworkflow_backend.helpers.example_data import ExampleDataLoader
2022-06-12 07:39:30 -04:00
from typing import Dict
from typing import Optional
2022-06-22 21:59:01 -04:00
from spiffworkflow_backend.exceptions.process_entity_not_found_error import (
ProcessEntityNotFoundError,
)
from spiffworkflow_backend.models.process_group import ProcessGroup
2022-06-12 07:39:30 -04:00
from spiffworkflow_backend.models.process_model import ProcessModelInfo
from spiffworkflow_backend.models.user import UserModel
from spiffworkflow_backend.services.process_model_service import ProcessModelService
2022-06-12 07:39:30 -04:00
def assure_process_group_exists(process_group_id: Optional[str] = None) -> ProcessGroup:
"""Assure_process_group_exists."""
process_group = None
workflow_spec_service = ProcessModelService()
if process_group_id is not None:
2022-06-24 17:13:50 -04:00
try:
process_group = workflow_spec_service.get_process_group(process_group_id)
except ProcessEntityNotFoundError:
process_group = None
if process_group is None:
process_group_id_to_create = "test_process_group"
if process_group_id is not None:
process_group_id_to_create = process_group_id
2022-05-31 14:10:00 -04:00
process_group = ProcessGroup(
id=process_group_id_to_create,
2022-05-31 14:10:00 -04:00
display_name="Test Workflows",
admin=False,
display_order=0,
)
workflow_spec_service.add_process_group(process_group)
return process_group
2022-05-31 14:10:00 -04:00
def load_test_spec(
process_model_id: str,
2022-06-12 07:39:30 -04:00
master_spec: bool = False,
process_group_id: Optional[str] = None,
library: bool = False,
2022-06-10 18:27:06 -04:00
) -> ProcessModelInfo:
2022-06-21 00:34:40 -04:00
"""Loads a process model into the bpmn dir based on a directory in tests/data."""
process_group = None
workflow_spec_service = ProcessModelService()
if process_group_id is None:
process_group_id = "test_process_group_id"
if not master_spec and not library:
process_group = assure_process_group_exists(process_group_id)
process_group_id = process_group.id
try:
return workflow_spec_service.get_process_model(
process_model_id, group_id=process_group_id
)
2022-06-22 21:59:01 -04:00
except ProcessEntityNotFoundError:
2022-05-31 14:10:00 -04:00
spec = ExampleDataLoader().create_spec(
id=process_model_id,
2022-05-31 14:10:00 -04:00
master_spec=master_spec,
from_tests=True,
2022-06-22 17:15:15 -04:00
display_name=process_model_id,
2022-05-31 14:10:00 -04:00
process_group_id=process_group_id,
library=library,
)
return spec
# def user_info_to_query_string(user_info, redirect_url):
# query_string_list = []
# items = user_info.items()
# for key, value in items:
# query_string_list.append('%s=%s' % (key, urllib.parse.quote(value)))
#
# query_string_list.append('redirect_url=%s' % redirect_url)
#
# return '?%s' % '&'.join(query_string_list)
2022-06-12 07:39:30 -04:00
def logged_in_headers(
2022-06-22 17:15:15 -04:00
user: UserModel, _redirect_url: str = "http://some/frontend/url"
2022-06-12 07:39:30 -04:00
) -> Dict[str, str]:
2022-05-31 14:10:00 -04:00
"""Logged_in_headers."""
# if user is None:
# uid = 'test_user'
# user_info = {'uid': 'test_user'}
# else:
# uid = user.uid
# user_info = {'uid': user.uid}
# query_string = user_info_to_query_string(user_info, redirect_url)
# rv = self.app.get("/v1.0/login%s" % query_string, follow_redirects=False)
# self.assertTrue(rv.status_code == 302)
# self.assertTrue(str.startswith(rv.location, redirect_url))
#
# user_model = session.query(UserModel).filter_by(uid=uid).first()
# self.assertIsNotNone(user_model.ldap_info.display_name)
# self.assertEqual(user_model.uid, uid)
# self.assertTrue('user' in g, 'User should be in Flask globals')
# user = UserService.current_user(allow_admin_impersonate=True)
# self.assertEqual(uid, user.uid, 'Logged in user should match given user uid')
2022-05-31 14:10:00 -04:00
return dict(Authorization="Bearer " + user.encode_auth_token())